k8s之pod管理(控制器)

template:
metadata:
labels:
app: nginx
spec:
containers:
- name: nginx
image: myapp:v1


创建了3个rs控制器  
 ![在这里插入图片描述](https://img-blog.csdnimg.cn/2021022500221837.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L1N1bl9fcw==,size_16,color_FFFFFF,t_70)


## 4 Deployment


Deployment 为 Pod 和 ReplicaSet 提供了一个申明式的定义方法。  
 典型的应用场景:


* 用来创建Pod和ReplicaSet
* 滚动更新和回滚
* 扩容和缩容
* 暂停与恢复


### Deployment控制器示例



[root@server2 ~]# vim dm.yml
apiVersion: apps/v1
kind: Deployment
metadata:
name: deployment-nginx
spec:
replicas: 3
selector:
matchLabels:
app: nginx
template:
metadata:
labels:
app: nginx
spec:
containers:
- name: nginx
image: myapp:v1



[root@server2 ~]# kubectl apply -f dm.yml
[root@server2 ~]# kubectl get pod


![在这里插入图片描述](https://img-blog.csdnimg.cn/20210225003708655.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L1N1bl9fcw==,size_16,color_FFFFFF,t_70)  
 根据标签控制,始终要满足三个副本



kubectl get pod --show-labels
kubectl label pod deployment-6d4f5bf58f-mbswv app=myapp --overwrite


![在这里插入图片描述](https://img-blog.csdnimg.cn/20210225003848266.png)  
 由原来的三个变成了四个,由于原来的标签被改变,为了满足三个副本,又重新创建了一个副本。其中myapp标签的不属于控制器控制的副本。  
 ![在这里插入图片描述](https://img-blog.csdnimg.cn/20210225003926147.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L1N1bl9fcw==,size_16,color_FFFFFF,t_70)


## 5 DaemonSet


DaemonSet 确保全部(或者某些)节点上运行一个 Pod 的副本。当有节点加入集群时, 也会为他们新增一个 Pod 。当有节点从集群移除时,这些 Pod 也会被回收。删除 DaemonSet 将会删除它创建的所有 Pod。


DaemonSet 的典型用法:


* 在每个节点上运行集群存储 DaemonSet,例如 glusterd、ceph。
* 在每个节点上运行日志收集 DaemonSet,例如 fluentd、logstash。
* 在每个节点上运行监控 DaemonSet,例如 Prometheus Node Exporter、zabbix agent等


一个简单的用法是在所有的节点上都启动一个 DaemonSet,将被作为每种类型的 daemon 使用。  
 一个稍微复杂的用法是单独对每种 daemon 类型使用多个 DaemonSet,但具有不同的标志, 并且对不同硬件类型具有不同的内存、CPU 要求。


手动拉取zabbix-agent镜像并上传到自己的私有仓库



[root@server1 harbor]# docker pull zabbix/zabbix-agent
[root@server1 harbor]# docker tag zabbix/zabbix-agent:latest reg.westos.org/library/zabbix-agent:latest
[root@server1 harbor]# docker push reg.westos.org/library/zabbix-agent:latest



[root@server2 ~]# vim daemonset.yml
apiVersion: apps/v1
kind: DaemonSet
metadata:
name: daemonset-example
labels:
k8s-app: zabbix-agent
spec:
selector:
matchLabels:
name: zabbix-agent
template:
metadata:
labels:
name: zabbix-agent
spec:
containers:
- name: zabbix-agent
image: zabbix-agent



[root@server2 ~]# kubectl apply -f daemonset.yml
daemonset.apps/daemonset-example created
[root@server2 ~]# kubectl get pod -o wide


![在这里插入图片描述](https://img-blog.csdnimg.cn/20210228130608289.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L1N1bl9fcw==,size_16,color_FFFFFF,t_70)


## 6 StatefulSet


StatefulSet 是用来管理有状态应用的工作负载 API 对象。实例之间有不对等关系,以及实例对外部数据有依赖关系的应用,称为“有状态应用”


StatefulSet 用来管理 Deployment 和扩展一组 Pod,并且能为这些 Pod 提供*序号和唯一性保证*。


StatefulSets 对于需要满足以下一个或多个需求的应用程序很有价值:


* 稳定的、唯一的网络标识符。
* 稳定的、持久的存储。
* 有序的、优雅的部署和缩放。
* 有序的、自动的滚动更新。


## 7 Job


执行批处理任务,仅执行一次任务,保证任务的一个或多个Pod成功结束。


手动拉取perl圆周率镜像,然后上传至本地仓库



[root@server1 harbor]# docker pull perl
[root@server1 harbor]# docker tag perl:latest reg.westos.org/library/perl:latest
[root@server1 harbor]# docker push reg.westos.org/library/perl:latest


编写yml文件



[root@server2 ~]# vim job.yml
apiVersion: batch/v1
kind: Job
metadata:
name: pi
spec:
template:
spec:
containers:
- name: pi
image: perl
command: [“perl”, “-Mbignum=bpi”, “-wle”, “print bpi(2000)”]
restartPolicy: Never
backoffLimit: 4


执行



[root@server2 ~]# kubectl create -f job.yml
[root@server2 ~]# kubectl get pod
[root@server2 ~]# kubectl logs pi-fj6v5


![在这里插入图片描述](https://img-blog.csdnimg.cn/20210228133157212.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L1N1bl9fcw==,size_16,color_FFFFFF,t_70)


## 8 CronJob


Cron Job 创建基于时间调度的 Jobs。


一个 CronJob 对象就像 crontab (cron table) 文件中的一行,它用 Cron 格式进行编写,并周期性地在给定的调度时间执行 Job。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值