ACP云原生容器工程师 - ACK自动伸缩
概述弹性伸缩是ACK特点功能之一,典型的场景包括:
在线业务弹性
大规模计算训练
定时周期性负载变化等
弹性伸缩分为两个维度:
弹性调度层:主要负责修改负载的调度容量变化,在已有资源条件下进行pod调度
资源弹性层:主要负责扩充资源的方式调度容量的补充,对资源本社进行调度
资源层阶段弹性提供
阿里云Kubernetes集群的一个重要特性,是集群的节点可以动态的增加或减少
有了这个特性,集群才能在计算资源不足的情况下扩充新的节点
同时,也可以在资源利用率降低的时候,释放节点以节省费用
资源层扩缩容可以分为:手动扩缩容、自动扩缩容
资源层弹性插件
Cluster-autoscaler: Kubernetes社区开源组件,节点水平伸缩软件,阿里云提供了独有的调度、弹性优化、成本优化的功能。
Virtual-node: ACK开源插件,提供无服务器运行时环境,开发者无需挂心节点资源,只需针对Pod按量付费即可。
Virtual-kubelet-autoscaler: ACK服务组件,提供无服务弹性伸缩能力
节点自动伸缩节点自动伸缩机制定期检测集群中应用pod ...
hexo博客迁移 from mac to mac
前提前段时间我的MBP15留在家里给老妈做视频播放器了,这段时间重新收了一台Mac mini来使用。由于前一台电脑大部分内容均已备份,剩余的东西也就是此博客,所以我就把它放在iCloud里边,一并同步过来了。
但是我发现这个迁移也会遇到些蛋疼的问题,我们一个一个来说。
问题1. node_modules依赖太多我们都知道,对于hexo来说,它是用nodejs来搭建的,所以会有超多的小文件在node_modules下面。而我遇到的第一个问题则是,iCloud同步小文件时非常、非常、非常慢。
这个问题也好解决,把博客打个包然后拷贝出来就行了。可以直接使用Mac的实用工具进行打包,做完以后是一个zip文件,然后将其拷贝出来即可。
2. node没安装由于我只是备份了文档,应用并未安装,所以需要重新安装nodejs。
这里可以移步官网,自行下载相应版本并进行安装,安装之后在terminal输入node -v进行验证。
3. hexo组件未安装在解压并进入博客目录后,会发现大部分的内容是在的,只是hexo相关组件还未安装。
可以删除掉node_modules文件夹和package-lock.js ...
ACP云原生容器工程师 - 日志与监控
概述阿里云的可观测性体系: 日志管理、监控管理
日志管理Kubernetes可观测性体系概述
可观测性指如何从外部输出推测及衡量体系内部状态
Kubernetes可观测性体系包括:监控和日志,是大型分布式系统的重要基础设施
监控可以帮助开发者插卡系统的运行状态
日志可以协助问题的排查和诊断
在Kubernetes中,监控和日志属于生态的一部分,他并不是核心组件,因此大部分的能力依赖上层的云厂商的适配。
Kubernetes定义了介入的接口标准和规范,任何符合接口的组件都可以快速集成。
Logging-日志
基于阿里云日志服务SLS提供了完整的日志方案,可以对应用日志进行收集、处理,并提供了操作审计,kubernetes事件中心等能力。
Metrics-监控指标
对基础设施服务(比如ECS、存储、网络),云监控提供了全面的监控。
对于业务应用的性能指标,ARMS无需修改业务代码即可对Java和PHP应用提供全方位的性能监控。
Tracing-全链路追踪
Tracing Analysis为开发者提供了完整的分布式应用调用链路统计、拓扑分析等工具。
能够帮助开发者快速发 ...
ACP云原生容器工程师-ACK存储
概述
在Kubernetes里最小的管理单元是Pod
Pod中产生的数据都是临时的,Pod销毁后默认不保存
对于有状态的服务,需要数据持久化
所以Kubernetes给定了一些数据持久化的方案
Kubernetes存储应用场景
服务的基本配置文件读取、密码密钥管理等
服务的存储状态、数据存储等
不同服务或应用程序间共享数据
Kubernetes存储系统核心概念Volumn
Pod可以同时使用任意数目的卷类型
临时卷类型的生命周期与Pod相同,但持久化卷可以比Pod的存活时间长
卷的存在时间会超出Pod中所有容器,且在Pod重启时会重新加载
持久卷(PV)
是集群中管理员集中配置的一块存储
它是集群中的资源,就和节点是集群资源一样,包含存储的类型、大小和访问模式等
PV是卷插件比如Volumes等。但是它的生命周期独立于使用PV的任何Pod个体。比如,Pod销毁时,PV会得以保留。
持久卷声明(PVC)
是用户关于存储的请求
描述对PV的一个请求,请求信息包含PV大小、访问模式等,PVC会消耗PV资源
Kubernetes存储插件
Kubernet ...
ACK云原生容器工程师-ACK网络(下)
容器网络规划
容器网络规划、VPC专有网络配置阶段、容器网络配置阶段、Service网络配置阶段
根据集群业务需求,实现容器网络的配置完成
容器网络实践Flannel
TerwayTerway网络规划注意事项
建议选用高配ECS规格机型,如5代或6代的8G以上机型
共享ENI支持的最大Pod数=(ECS支持的ENI数-1)×单个ENI支持的私有ip数
独占ENI支持的最大Pod数=ECS支持的ENI数-1
Terway网络实践步骤1. 规划和准备集群网络
在创建ACK Kubernetes集群时,需要指定VPC地址段、虚拟交换机、Pod地址段、Service地址段
需要先创建一个专有网络VPC,然后在VPC下创建两个虚拟交换机
虚拟交换机和Pod交换机需要在同一可用区下
2. 创建专有网络
登录专有网络管理控制台
在顶部菜单栏,选择地域,然后创建专有网络
创建专有网络和虚拟交换机。
3. 创建ACK集群
登录阿里云容器服务ACK管理控制台
创建集群
在选择集群模板页面,单机标准托管集群下的创建
4. 配置Terway网络
配 ...
ACP云原生容器工程师-ACK网络(上)
容器集群网络设计目标主要解决的4个问题
容器与容器之间的通信
Pod与Pod之间的通信
Pod与Service之间的通信
外部世界与Service之间的通信
Kubernetes网络接入的三个原则
Pod和Pod的通信不需要NAT转换,可直接通信
Node和Pod可以相互通信,在不限制的情况下,Pod可以访问任意网络
Pod拥有独立的网络栈,Pod看到自己地址和外部看到自己地址是一样的,Pod内部容器共用一套独立的网络栈
容器到容器之间的通信
在容器中,容器之间的网络通信是通过docker0网桥,凡是连接到docker0的容器,都可以通过它来直接通信。
要想容器连接到docker0网桥,我们需要veth pair的虚拟设备来实现
当容器在一台宿主机上,访问该容器的ip地址时,这个数据包:
先根据路由规则到达docker0网桥
然后被转发到对应的veth pair设备
最后,出现在容器里
通过Service实现内外部统一访问为什么设立Service?
Kubernetes集群是通过Pod部署的,我们知道在Pod的生命周期中,随时可能被销毁和变化
应用 ...
ACP云原生容器工程师-ACK操作
操作流程
授权账号(RBAC/RAM)
创建集群(专有版、托管版、serverless版)
部署应用(镜像、模板)
运维管理(运维集群、运维应用)
集群创建
集群查看查看集群的基本信息、连接信息、集群资源、集群日志及集群时区
连接集群的方式
使用kubectl直接连接集群
使用CloudShell通过kubectl连接集群
通过SSH连接集群
使用ServiceAccount Token访问集群
通过公网访问集群API Server
创建无状态集群(Deployment)镜像创建
应用基本信息
容器配置
拉取镜像的3种方式:自动更新、手动更新、默认本地
高级配置
创建并查看
有状态应用(Statefulset)有状态应用和无状态应用区别:无状态应用与持久化组件无关(例如Volumn、DB等),应用挂掉重启之后,与持久化组件就断开了;有状态应用与持久化组件有关,应用挂掉重启之后,与持久化组件仍有关系。
Statefulset应用集特点
稳定且需要唯一的应用标识符
稳定且持久的存储
要求有序、平滑的部署和扩展
要求有序、平滑的终止和删除
有序的滚动更新 ...
ACP云原生容器工程师-ACK Pro概述
ACK Pro集群概述对比ACK托管版集群
相比ACK托管版,针对企业版大规模生产环境进一步增强了可靠性、安全性
继承了原托管版集群的所有优势
提供可赔付的SLA的Kubernetes集群
对比标准版集群
ACK Pro各种集群可靠性强化集群更可靠的托管Master节点,API Server自动弹性,保证集群平滑扩容海量节点。
安全性强化集群开放安全管理,并提供针对运行中容器更强检测和自动修复能力的安全管理高级版,与KMS结合会更安全。
调度性强化集群
集成更强调度性能的kube-scheduler,支持多种智能调度算法
优化在大规模数据计算、高性能数据处理等业务场景下的容器调度能力
ACK Pro显著特点
可靠的强化集群
提升安全性的集群
调度能力更强
ACK Pro版适用行业
金融企业
互联网企业
大数据计算企业
开展中国业务的海外企业
ACK Pro适用场景弹性伸缩架构
容器服务可以根据业务流量自动对业务扩容、缩容,不需要人工干预
避免流量激增扩容不及时导致系统挂掉,以及平时大量资源闲置
DevOps持续交付云原生AI
深度学习的三 ...
ACP云原生容器工程师-ACK概述
ACK简介阿里云容器服务ACK,是阿里云针对云原生推出的拳头产品,基于原版Kubernetes进行适配和增强,简化集群的搭建和运维工作,整合阿里云虚拟化、存储、网络和安全能力,使得扩容和缩容更加简易,打造云端最佳的Kubernetes容器化应用运行环境。
ACK分类ACK产品根据运维整合度,可分为三类:
专有版Kubernetes
托管版Kubernetes
Serverless Kubernetes
三者的特点和区别如下:
适用人群分别为:
专业版ACK:懂技术、有运维K8S的能力、资源规划明显、Master节点定制、完全自营、成本不敏感
托管版ACK: Kubernetes能上手、不关心Master节点、只部署应用、降低成本
Serverless Kubernetes:批量任务、突发扩容、开箱即用、零运维、按量付费、不关注基础设施
ACK vs 原生K8S
ACK基于原生K8S
ACK整合阿里云虚拟化、网络、存储、安全能力
高性能可伸缩能力加强
简化集群的运维和扩容工作,更专注应用开发
也可参考此图:
ACK核心功能集群管理通过控制台一键创建Kub ...
地址转换技术
前言在我们上网的过程中,不可能只用同一个ip地址来访问,在公网和内网之间,需要一些地址转换来实现公网和内网ip的变化。通常,我们可以使用NAT来做;在公网ip不固定的时候,也需要使用MASQUERADE来做地址转换。
NAT(Network Address Translation)我们都知道,在ip数据包中,有两个参数可以定位包的源地址和目的地址,一个是源地址ip,一个是目标地址ip。我们常用的NAT有两种,一种是SNAT,修改源地址;一种是DNAT,修改目标地址。
SNAT(Source NAT)此协议转换包的源地址,通常用于内网ip转公网ip,也就是正向代理会对发出的ip包做SNAT,使其可以传到公网环境中进行下一跳路由动作。
此修改作用于iptables的POSTROUTING阶段,具体命令如下:
1iptables -t nat -A POSTROUTING -s <修改之前的ip段> -o <出口网卡> -j SNAT --to-source <修改之后的ip>
DNAT(Destination NAT)此协议转换包的目的地址,通常用于 ...
