写点什么

07 K8S 之命令行应用编排

发布于: 1 小时前
07 K8S 之命令行应用编排

无状态(stateless)应用的部署和控制通常使用 Deployment 控制器,而有状态应用则需要使用 StatefulSet 控制器扩展的 Operator


在 Kubernetes 集群上自主运行的 Pod 对象在非计划内终止后,其生命周期也随之终结,用户需要再次手动创建类似的 Pod 对象才能确保其再次可用。对于 Pod 数量众多的场景,尤其是对微服务业务来说,用户必将疲于应付此类需求。自动化应用编排是 Kubernetes 的核心价值之一,将应用托管给控制器编排才是发挥 Kubernetes 作用的根本所在


Deployment 资源对象是通过 ReplicaSet 控制器对象作为中间层实例完成对 Pod 对象的控制,各 Pod 的名称也是由 ReplicaSet 对象名称后跟几个随机字符构成。


每个字段代表 Pod 资源对象一个方面的属性,主要字段的作用如下:

READY:m/n 格式,m 表示 Pod 中就绪状态的容器数量,n 表示 Pod 中总的容器数量。

STATUS:Pod 的当前状态,其值可能是 Pending、Running、Succeeded、Failed 和 Unknown 等其中之一,并存在某些类型的中间状态(容器状态)。

RESTARTS:Pod 对象可能会因容器进程崩溃、超出资源限额等故障而被重启,此字段记录了它重启的次数。

IP:Pod 的 IP 地址,通常由网络插件自动分配。

NODE:该 Pod 对象绑定的 Node,目标 Node 由 Scheduler 负责挑选。


Service 对象就是一组 Pod 的逻辑组合,它通过称为 ClusterIP 的地址和服务端口接收客户端请求,并将这些请求代理至使用标签选择器来过滤一个符合条件的 Pod 对象。


CLUSTER-IP 字段为 Service 的 IP 地址,它是一个虚拟 IP,并没有配置在集群中任何主机的任何接口之上,但每个 Node 上的 kube-proxy 都会为 CLUSTER-IP 所在的网络创建用于转发的 iptables 或 ipvs 规则


kubectl scale 命令就是专用于变动控制器应用规模的命令,它支持对 Deployment、ReplicaSet、StatefulSet 等类型资源对象的扩容和缩容操作。应用规模缩容的方式和扩容相似,只不过是将 Pod 副本的数量调至比原来小的数字


有些命令是 kubectl edit 命令某一部分功能的二次封装,例如 kubectl scale 命令不过是专用于修改资源对象的 replicas 属性值而已,而 kubectl set image 通常用于修改工作负载型控制器资源规范中 Pod 模板的容器镜像,这两个命令同样直接作用于活动对象。


需要注意的是,受控于控制器的 Pod 对象在删除后会被重建,因而删除此类对象需要直接删除其控制器对象。默认情况下,删除 Deployment 一类的工作负载型控制器资源会级联删除相关的所有 Pod 对象,若要禁用该功能,需要在删除命令中使用--cascade=false 选项。


发布于: 1 小时前阅读数: 5
用户头像

InfoQ签约作者 2018.11.30 加入

热爱生活,收藏美好,专注技术,持续成长

评论

发布
暂无评论
07 K8S 之命令行应用编排