[ k8s-007 ] 运行应用(2)

143 阅读2分钟

一起养成写作习惯!这是我参与「掘金日新计划 · 4 月更文挑战」的第7天,点击查看活动详情

继续上一章节,学习如何运行一个k8s应用资源

Deployment配置文件简介

①apiVersion是当前配置文件的版本。

②kind是要创建的资源类型,这里是Deployment。

③metadata是资源的元数据,name是必需的元数据项。

④spec部分是该Deployment的规格说明。

⑤replicas指明副本数量,这里默认为1。

⑥template定义Pod的模板,这是配置文件的重要部分。

⑦metadata定义Pod的元数据,至少要定义一个label。label的key和value可以任意指定。

⑧spec描述Pod的规格,此部分定义Pod中每一个容器的属性,name和image是必需的。

经过yaml配置文件部署后,Deployment、ReplicaSet、Pod都已经就绪

如果要删除这些资源

执行

kubectl delete deployment nginx-deployment

或者

kubectl delete -f nginx.yml

伸缩

修改nginx.yml文件,spec-replicas

再次执行kubectl apply

去污点

由于安全因素的原因,k8s默认配置下不会将Pod调度到Master节点。如果我们的服务器资源不足,希望将k8s-master也用来当作Node使用,可以执行如下命令:

kubectl taint node k8s-master node-role.kubernetes.io/master-

恢复Master Only状态,执行命令

kubectl taint node k8s-master node-role.kubernetes.io/master="":NoSchedule

用label控制Pod的位置

默认配置下,Scheduler调度器会将Pod调度到所有可用的Node

kubectl get nodes --show-labels

kubectl label nodes node02 com=qingteng

nodeSelector:

com: qingteng

kubectl label nodes node02 com-

删除标签后,除非在nginx.yml配置文件中删除nodeSelector设置,然后通过kubectl apply命令重新部署,否则pod不会重新部署

总结

本章节和前一章节,主要是熟悉创建资源的两种方式kubectl run和kubectl apply、以及yaml配置文件的内容具体含义,了解如何使用配置文件进行调度,如何去除污点、以及伸缩服务的数量,从而达到资源的有效利用