Kubernetes学习笔记四:ReplicaSet、Deployment和DaemonSet

kubectl api-resources
查看资源名称和对应的缩写。如namespaces的简写是ns,nodes的简写是no。
Kubernetes学习笔记四:ReplicaSet、Deployment和DaemonSet_第1张图片

ReplicaSet

创建一个replicaset.yaml文件,以yaml的方式启动一个ReplicaSet。

apiVersion: apps/v1
kind: ReplicaSet
metadata:
  name: frontend
  labels:
    app: guestbook
    tier: frontend
spec:
  #modify replicas according to your case
  replicas: 4
  selector:
    matchLabels:
      tier: frontend
  template:
    metadata:
      labels:
        tier: frontend
    spec:
      containers:
      - name: php-redis
        image: nginx:1.7.9

spec.replicas属性设置了创建pod的数量。
Kubernetes学习笔记四:ReplicaSet、Deployment和DaemonSet_第2张图片
kubectl scale --replicas=3 -f replicaset.yaml
scale用于扩容和缩容。
Kubernetes学习笔记四:ReplicaSet、Deployment和DaemonSet_第3张图片
kubectl describe rs frontend
查看ReplicaSet的描述信息。
Kubernetes学习笔记四:ReplicaSet、Deployment和DaemonSet_第4张图片
kubectl get pods frontend-6hktb -o yaml | grep -A 10 owner
Pod的属主引用被设置为 ReplicaSet。
Kubernetes学习笔记四:ReplicaSet、Deployment和DaemonSet_第5张图片

Deployment

创建deployment.yaml文件。使用yaml的方式创建一个deployment。
kubectl apply -f deployment.yaml
创建一个Deployment的同时也会创建一个ReplicaSet。

apiVersion: apps/v1
kind: Deployment
metadata:
  name: nginx-deployment
  labels:
    app: nginx
spec:
  replicas: 3
  selector:
    matchLabels:
      app: nginx
  template:
    metadata:
      labels:
        app: nginx
        test: liufeifei
    spec:
      containers:
      - name: nginx
        image: nginx:1.21
        ports:
        - containerPort: 80

(1)删除容器

kubectl get pod
查看deployment创建的Pod信息

docker ps |grep nginx-deployment-74d589986c-798f4

docker rm -f bc7e43648944
删除Pod的容器

nginx-deployment-74d589986c-798f4自动重启,RESTARTS为1。

Kubernetes学习笔记四:ReplicaSet、Deployment和DaemonSet_第6张图片

(2)删除Pod

kubectl delete pod nginx-deployment-74d589986c-t9xtl

删除了一个Pod之后,Deployment重新创建了一个Pod,达到设置的replicas的数量。
Kubernetes学习笔记四:ReplicaSet、Deployment和DaemonSet_第7张图片

(3)删除标签

kubectl label pod nginx-deployment-74d589986c-h5kn8 app-
删除Pod的标签之后,Deployment会创建一个新的Pod。

kubectl get pods --show-labels
Kubernetes学习笔记四:ReplicaSet、Deployment和DaemonSet_第8张图片
kubectl label pod nginx-deployment-74d589986c-h5kn8 app=nginx
给Pod添加上app=nginx标签之后,Deployment又会删除一个Pod。
Kubernetes学习笔记四:ReplicaSet、Deployment和DaemonSet_第9张图片

(4)修改yaml文件的标签

yaml文件的spec.template.metadata.labels添加了一个标签。test: liufeifei
Deployment会将旧的Pod删除,重新创建新的Pod。
Kubernetes学习笔记四:ReplicaSet、Deployment和DaemonSet_第10张图片
Kubernetes学习笔记四:ReplicaSet、Deployment和DaemonSet_第11张图片

(5)修改镜像版本

修改镜像的版本,会重新创建新的Pod。

(5.1)以命令行的方式修改镜像

kubectl set image deployment/nginx-deployment nginx=nginx:1.9
Kubernetes学习笔记四:ReplicaSet、Deployment和DaemonSet_第12张图片

(5.2)以编辑配置的方式修改镜像

kubectl edit deployment nginx-deployment
Kubernetes学习笔记四:ReplicaSet、Deployment和DaemonSet_第13张图片
Kubernetes学习笔记四:ReplicaSet、Deployment和DaemonSet_第14张图片

(5.3)以编辑yaml文件重启的方式修改镜像

vim deployment.yaml
kubectl apply -f deployment.yaml
Kubernetes学习笔记四:ReplicaSet、Deployment和DaemonSet_第15张图片

(6)查看deployment的历史版本

kubectl rollout history deployment/nginx-deployment
Kubernetes学习笔记四:ReplicaSet、Deployment和DaemonSet_第16张图片

(7)查看deployment的指定版本

kubectl rollout history deployment/nginx-deployment --revision=5
Kubernetes学习笔记四:ReplicaSet、Deployment和DaemonSet_第17张图片

(8)查看ReplicaSet生成记录

刚刚执行了几次镜像变更操作,每次都会重新生成一个ReplicaSet,当前只有一个有效。
Kubernetes学习笔记四:ReplicaSet、Deployment和DaemonSet_第18张图片

(9)以yaml的方式查看deployment的配置信息

kubectl get deployments.apps nginx-deployment -o yaml
Kubernetes学习笔记四:ReplicaSet、Deployment和DaemonSet_第19张图片

(10)查看回滚帮助

kubectl rollout undo --help
Kubernetes学习笔记四:ReplicaSet、Deployment和DaemonSet_第20张图片

(10)deployment回滚到上一个版本

kubectl rollout history deployment/nginx-deployment
Kubernetes学习笔记四:ReplicaSet、Deployment和DaemonSet_第21张图片

(10)deployment回退到指定版本

kubectl rollout undo deployment/nginx-deployment --to-revision=2
Kubernetes学习笔记四:ReplicaSet、Deployment和DaemonSet_第22张图片

(11)删除Deployment生成的ReplicaSet

kubectl delete rs nginx-deployment-56965684bc
删掉RS会将History也一并删除掉
Kubernetes学习笔记四:ReplicaSet、Deployment和DaemonSet_第23张图片

DaemonSet

kubectl get ds --all-namespaces
DaemonSet的简写是ds,主要是用来运行守护进程的。
Kubernetes学习笔记四:ReplicaSet、Deployment和DaemonSet_第24张图片

你可能感兴趣的:(kubernetes,Deployment,ReplicaSet,DaemonSet)