【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

相关推荐
小敬爱吃饭2 小时前
Ragflow Docker部署及问题解决方案(界面为Welcome to nginx,ragflow上传文件失败,Docker中的ragflow-cpu-1一直重启)
人工智能·python·nginx·docker·语言模型·容器·数据挖掘
木子欢儿2 小时前
Docker Hub 镜像发布指南
java·spring cloud·docker·容器·eureka
H_老邪3 小时前
什么是云原生?
云原生
虚伪的空想家5 小时前
k8s集群configmap和secrets备份脚本
linux·容器·kubernetes
SXJR5 小时前
k8s中的Pod
云原生·容器·kubernetes
文静小土豆5 小时前
K8s 滚动更新在 Java 应用中的实践与优化
java·容器·kubernetes
w6100104665 小时前
CKA-2026-Ingress
云原生·容器·kubernetes·cka
bloglin999996 小时前
docker logs 如何一直监听日志输出
运维·docker·容器
AI攻城狮6 小时前
Anthropic 开源了 Claude 的 Agent Skills 仓库:文档技能的底层实现全公开了
人工智能·云原生·aigc
❀͜͡傀儡师7 小时前
使用 Docker 部署 Neko 自托管虚拟浏览器(Firefox)
docker·容器·firefox