K8s -- 控制器管理

一、replicaset控制器

1.建立控制器

复制代码
[root@master controller]# vim repset.yml 

apiVersion: apps/v1
kind: ReplicaSet
metadata:
  labels:
    app: replica
  name: replica
spec:
  replicas: 2    
  selector:
    matchLabels:
      app: replica
  #strategy: {}
  template:
    metadata:
      labels:
        app: replica
    spec:
      containers:
      - image: myapp:v1
        name: myapp
复制代码
[root@master controller]# kubectl scale replicaset replica --replicas 4
replica-54ljm                 1/1     Running   0          18s     app=replica
replica-nplj2                 1/1     Running   0          3m49s   app=replica
replica-rv2sd                 1/1     Running   0          18s     app=replica
replica-z596j                 1/1     Running   0          3m49s   app=replica
可以拉伸

二.deployment

1.建立控制器

复制代码
[root@master controller]# kubectl create deployment deploy --image myapp:v1 --dry-run=client -o yaml > dep.yml

[root@master controller]# vim dep.yml
apiVersion: apps/v1
kind: Deployment
metadata:
  labels:
    app: deploy
  name: deploy
spec:
  minReadySeconds: 5
  replicas: 2
  selector:
    matchLabels:
      app: deploy
#  strategy: {}
  template:
    metadata:
      labels:
        app: deploy
    spec:
      containers:
      - image: myapp:v1
        name: myapp
#        resources: {}

[root@master controller]# kubectl apply -f dep.yml 
deployment.apps/deploy created
复制代码
[root@master controller]# kubectl expose deployment deploy --port 80 --target-port 80
service/deploy exposed
[root@master controller]# kubectl describe services deploy
Name:                     deploy
Namespace:                default
Labels:                   app=deploy
Annotations:              <none>
Selector:                 app=deploy
Type:                     ClusterIP
IP Family Policy:         SingleStack
IP Families:              IPv4
IP:                       10.101.113.8
IPs:                      10.101.113.8
Port:                     <unset>  80/TCP
TargetPort:               80/TCP
Endpoints:                10.244.1.19:80,10.244.2.16:80
Session Affinity:         None
Internal Traffic Policy:  Cluster
Events:                   <none>

[root@master controller]# curl 10.101.113.8
Hello MyApp | Version: v1 | <a href="hostname.html">Pod Name</a>

2.升级和回滚

复制代码
#升级
[root@master controller]# vim dep.yml 
- image: myapp:v2			#升级为版本2

[root@master controller]# kubectl apply -f dep.yml 
deployment.apps/deploy configured
[root@master controller]# curl 10.101.113.8
Hello MyApp | Version: v2 | <a href="hostname.html">Pod Name</a>

#回滚
[root@master controler]# vim dep.yml
 - image: myapp:v1			#回滚为版本1

[root@master controler]# kubectl apply -f dep.yml
[root@master controler]# curl  10.107.142.60
Hello MyApp | Version: v1 | <a href="hostname.html">Pod Name</a>

三.DaemonSet

复制代码
[root@master controler]# kubectl create deployment daemonset --image myapp:v1 --dry-run=client -o yaml  > daemonset.yml
[root@master controler]# vim daemonset.yml
apiVersion: apps/v1
kind: DaemonSet
metadata:
  labels:
    app: daemonset
  name: daemonset
spec:
  selector:
    matchLabels:
      app: daemonset
  template:
    metadata:
      labels:
        app: daemonset
    spec:
      containers:
      - image: myapp:v1
        name: myapp



#另外开启一个主机node3,并设定在初始化集群时的所有设定确保所有服务的开启
#在master中重新生成集群主机注册时需要的token
[root@master controler]# kubeadm token create  --print-join-command
kubeadm join 172.25.254.100:6443 --token lqcz14.6f4krq91w75h58bt --discovery-token-ca-cert-hash sha256:6b5950ef2cdba85d6dfdb564ee90d4187fa3d341767dc9852cbdd5c9dee4f927


[root@node3 ~]#  kubeadm join 172.25.254.100:6443 --token lqcz14.6f4krq91w75h58bt --discovery-token-ca-cert-hash sha256:6b5950ef2cdba85d6dfdb564ee90d4187fa3d341767dc9852cbdd5c9dee4f927 --cri-socket  unix:///var/run/cri-dockerd.sock

#当node3加入集群后会在node3中立即群星指定的pod,其原因是因为运行了daemonset
#可以在master中观察pod的状态

四、Job控制器

复制代码
[root@master ~]# docker load -i perl-5.34.tar.gz
[root@master ~]# docker tag perl:5.34.0 reg.timinglee.org/library/perl:5.34.0
[root@master ~]# docker login  reg.timinglee.org -u admin
Password:
Login Succeeded
[root@master ~]# docker push reg.timinglee.org/library/perl:5.34.0

[root@master controler]# kubectl create job job --image perl:5.34.0 --dry-run=client -o yaml > job.yml
[root@master controler]# vim job.yml
apiVersion: batch/v1
kind: Job
metadata:
  name: testjob
spec:
  completions: 6
  parallelism: 2
  backoffLimit: 4
  template:
    spec:
      containers:
      - image: busybox
        name: testjob
        command: ["/bin/sh", "-c"]
        args:
        - |
          echo this is testjob message
          sleep 10
      restartPolicy: Never


[root@master controler]# kubectl apply -f job.yml
job.batch/job created

[root@k8s-master controller]# kubectl logs pods/testjob-4cdlr
this is testjob message

五、Cronjob控制器

复制代码
[root@master controler]# kubectl create cronjob cronjob --image busybox  --schedule "* * * * *" --dry-run=client -o yaml > cronjob.yml
[root@master controler]# vim cronjob.yml
apiVersion: batch/v1
kind: CronJob
metadata:
  name: cronjob
spec:
  jobTemplate:
    metadata:
      name: cronjob
    spec:
      template:
        spec:
          containers:
          - image: busybox
            name: cronjob
            command:
              - /bin/sh
              - -c
              - echo "hello foldwin"
          restartPolicy: OnFailure
  schedule: '* * * * *'

[root@master controler]# kubectl apply -f cronjob.yml		#整分运行

[root@master controler]# kubectl get cronjobs.batch
NAME      SCHEDULE    TIMEZONE   SUSPEND   ACTIVE   LAST SCHEDULE   AGE
cronjob   * * * * *   <none>     False     0        17s             70s

[root@master controler]# kubectl logs cronjob-29598241-pxggh
hello foldwin
相关推荐
for_ever_love__5 分钟前
容器类型全家桶——list、tuple、dict、set 与推导式
python·容器·数据类型·大模型开发
筑梦之路16 分钟前
docker-compose方式部署kafka集群(Kraft方式)——筑梦之路
docker·容器·kafka
JavaPub-rodert1 小时前
Docker 镜像地址总失效?基于 DockerHub 项目用 GitHub Actions 做一个自动检测状态页
docker·容器·github
天衍四九-1 小时前
Docker进阶实战系列(二):容器日志深度治理|驱动配置、自动切割、磁盘爆满彻底解决
docker·容器·eureka
吴声子夜歌2 小时前
Nginx应用与运维——Nginx在Kubernetes中的应用(三)
运维·nginx·kubernetes
sbjdhjd2 小时前
云安全 | Docker 容器逃逸复盘(一):从隔离边界到运行时链路,如何确认自己身处容器
网络安全·docker·云原生·容器·kubernetes·云计算·云安全
吴声子夜歌3 小时前
Nginx应用与运维——Nginx在Kubernetes中的应用(二)
运维·nginx·kubernetes
寻林写彡18 小时前
01| 裸机部署 K8S:从零搭建生产可用集群
云原生·kubernetes
更深兼春远21 小时前
第2篇:Dify 部署保姆级教程:用 Docker跑起来
docker·容器·dify
念何架构之路1 天前
zap WriteSyncer与Sink体系
云原生·golang