【K8s】K8s控制器——复制集和deployment

高效、可靠地管理多个相同的容器应用,实现应用的自动扩缩容、故障恢复和版本升级

1、复制集

如果某个 Pod 挂了(比如容器崩溃、节点宕机),ReplicaSet 会​​自动创建一个新的 Pod 替补​​,始终确保 Pod 数量 = 你定义的 replicas 值。

2、deployment

  • 通过管理 ReplicaSet 来间接控制 Pod​​(你一般不直接操作 ReplicaSet,而是通过 Deployment 来操作);

  • ​支持滚动更新(平滑升级镜像版本,不停机)​

  • ​支持回滚(升级失败时快速回到旧版本)​

  • ​支持扩缩容(一键调整 Pod 数量)​

  • ​支持版本历史记录(查看每次变更,方便审计和回退)​

#- 8.1 # 创建复制集

定义yaml文件,这是一种声明式编程

bash 复制代码
cat > rs.yml <<EOF
apiVersion: apps/v1
kind: ReplicaSet
metadata:
  name: nginxrstest
  labels:
    app: nginxrstest
spec:
  replicas: 3
  selector:
    matchLabels:
      app: nginxrstest
  template:
    metadata:
      labels:
        app: nginxrstest
    spec:
      containers:
      - name: nginx
        image: nginx
        ports:
          - name: http
            containerPort: 80
        imagePullPolicy: IfNotPresent
EOF

创建复制集

bash 复制代码
kubectl create -f rs.yml 

查看复制集

bash 复制代码
kubectl get replicasets.apps,pods -o wide

删除复制集

bash 复制代码
kubectl delete replicasets nginxrstest

#- 8.2 #创建deployment

cat > deployment.yml <<EOF

apiVersion: apps/v1

kind: Deployment

metadata:

name: nginx-deployment

labels:

app: nginx

spec:

replicas: 3

selector:

matchLabels:

app: nginx

template:

metadata:

labels:

app: nginx

spec:

containers:

  • name: nginx

image: nginx

imagePullPolicy: IfNotPresent

ports:

  • containerPort: 80

EOF

kubectl create -f deployment.yml

kubectl get deployments.apps,replicasets.apps,pods -l app=nginx

#- 8.3 # 升级

kubectl set image deployments/nginx-deployment nginx=nginx:1.16.1 --record

kubectl rollout status deployment/nginx-deployment

kubectl get deployments.apps,replicasets.apps,pods -l app=nginx

#- 8.4 # 回滚

kubectl set image deployments/nginx-deployment nginx=nginx:1.161 --record

kubectl rollout status deployment/nginx-deployment

kubectl rollout history deployments/nginx-deployment

kubectl rollout history deployment.v1.apps/nginx-deployment --revision=3

kubectl rollout undo deployments/nginx-deployment --to-revision=2

kubectl rollout status deployment/nginx-deployment

kubectl get deployments.apps,replicasets.apps,pods -l app=nginx

#- 8.5 # 扩容

kubectl scale deployments/nginx-deployment --replicas=5

kubectl get deployments.apps,replicasets.apps,pods -l app=nginx

kubectl delete deployments.apps nginx-deployment

kubectl get deployments.apps,replicasets.apps,pods -l app=nginx

相关推荐
❀͜͡傀儡师18 分钟前
Docker部署视频下载器
docker·容器·音视频
热爱学习的小怪兽1 小时前
docker的一些常用指令
运维·docker·容器
w***76552 小时前
用docker启动mysql步骤
mysql·docker·容器
0***R5153 小时前
前端云原生
前端·云原生
杜子不疼.6 小时前
【探索实战】从0到1打造分布式云原生平台:Kurator全栈实践指南
分布式·云原生
qq_2153978976 小时前
docker 安装 opengauss 高斯数据库
运维·docker·容器
settingsun12256 小时前
分布式系统架构:百万并发系统设计
云原生·架构·分布式系统
谷隐凡二7 小时前
Kubernetes主从架构简单解析:基于Python的模拟实现
python·架构·kubernetes
陈陈CHENCHEN7 小时前
SuperMap iManager for K8s 离线环境镜像仓库 Containerd 部署
kubernetes
f***14777 小时前
对Docker部署的MySQL中的数据进行备份恢复
mysql·docker·容器