天天看点

#yyds干货盘点#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 模板的容器镜像,这两个命令同样直接作用于活动对象。

k8s

继续阅读