博客
关于我
KubeSphere——使用deployment文件部署实战(3)
阅读量:797 次
发布时间:2023-03-28

本文共 4505 字,大约阅读时间需要 15 分钟。

Kubernetes部署(Deployment)详解

Deployment文件详解

Deployment文件结构

Deployment文件是Kubernetes中定义应用部署的核心文件,其主要作用是声明应用的运行环境和配置。以下是标准的Deployment文件结构:

apiVersion: extensions/v1beta1kind: Deploymentmetadata:  name: cango-demo  # Deployment名称  namespace: cango-prd  # 命名空间  labels:    app: cango-demo  # 标签spec:  replicas: 3  # 剖分的副本数量  strategy:    rollingUpdate:      maxSurge: 1  # 滚动升级时允许的最大Pod数量      maxUnavailable: 1  # 滚动升级时允许的最大不可用Pod数量  template:    metadata:      labels:        app: cango-demo  # 模板标签    spec:      containers:        - name: cango-demo          image: swr.cn-east-2.myhuaweicloud.com/cango-prd/cango-demo:0.0.1-SNAPSHOT  # 镜像地址          command: ["/bin/sh", "-c", "cat /etc/config/path/to/special-key"]  # 启动命令          args:  # 启动参数            - '-storage.local.retention=$(STORAGE_RETENTION)'            - '-storage.local.memory-chunks=$(STORAGE_MEMORY_CHUNKS)'            - '-config.file=/etc/prometheus/prometheus.yml'            - '-alertmanager.url=http://alertmanager:9093/alertmanager'            - '-web.external-url=$(EXTERNAL_URL)'          imagePullPolicy: IfNotPresent  # 镜像拉取策略          livenessProbe:  # 存活探测            httpGet:              path: /health  # 健康检查路径              port: 8080              scheme: HTTP            initialDelaySeconds: 60            timeoutSeconds: 5            successThreshold: 1            failureThreshold: 5          readinessProbe:            httpGet:              path: /health              port: 8080              scheme: HTTP            initialDelaySeconds: 30            timeoutSeconds: 5            successThreshold: 1            failureThreshold: 5          resources:            requests:              cpu: 2              memory: 2048Mi            limits:              cpu: 2              memory: 2048Mi          env:            - name: LOCAL_KEY              value: value            - name: CONFIG_MAP_KEY              valueFrom:                configMapKeyRef:                  name: special-config                  key: special.type          ports:            - name: http              containerPort: 8080          volumeMounts:            - name: log-cache              mount: /tmp/log            - name: sdb              mountPath: /data/media            - name: nfs-client-root              mountPath: /mnt/nfs            - name: example-volume-config              mountPath: /etc/config              configMap:                name: example-volume-config                items:                  - key: log-script                    path: path/to/log-script                  - key: backup-script                    path: path/to/backup-script            - name: rbd-pvc              persistentVolumeClaim:                claimName: rbd-pvc1

Deployment文件编写

以下是一个简单的Nginx Deployment文件示例:

apiVersion: apps/v1kind: Deploymentmetadata:  name: nginx-deploymentspec:  replicas: 3  template:    metadata:      labels:        app: nginx    spec:      containers:        - name: nginx          image: nginx:1.7.9          ports:            - containerPort: 80

创建Deployment

使用以下命令创建Nginx Deployment:

kubectl create -f nginx-deployment.yaml --record

创建完成后,你可以通过以下命令查看Deployment状态:

kubectl get deployments

Deployment更新

要更新Deployment中的镜像版本,可以使用以下命令:

kubectl set image deployment/nginx-deployment nginx=nginx:1.9.1

或者使用编辑命令:

kubectl edit deployment/nginx-deployment

Deployment回滚

如果需要回滚到之前的版本,可以使用rollback命令:

kubectl rollout undo deployment/nginx-deployment

你也可以指定回滚到特定的历史版本:

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

滚动更新机制

在滚动更新过程中,Deployment会创建一个新的ReplicaSet,并逐步扩展新版本的Pod,同时缩减旧版本的Pod数量。滚动更新默认使用RollingUpdate策略,最大可扩展和不可用的Pod数量可以在.spec.strategy.rollingUpdate中配置。

通过合理配置滚动更新的maxSurgemaxUnavailable,可以确保更新过程中始终有一些Pod处于可用状态,避免服务中断。

Deployment的高级功能

环境变量和配置

Deployment支持通过环境变量和配置Map来管理应用配置。例如:

spec:  env:    - name: CONFIG_ENV      value: development  envFrom:    - name: CONFIG_MAP      key: special.key

挂载存储

Deployment支持挂载各种类型的存储卷,例如本地目录、NFS、PersistentVolumeClaim等。例如:

volumeMounts:  - name: nfs-client-root    mountPath: /mnt/nfs  - name: rbd-pvc    persistentVolumeClaim:      claimName: rbd-pvc1

操作命令参考

创建Deployment

kubectl create -f deployment.yaml

更新Deployment

kubectl set image deployment/my-deployment my-app=app-version

回滚Deployment

kubectl rollout undo deployment/my-deployment

暂停/恢复 Deployment

kubectl rollout pause deployment/my-deploymentkubectl rollout resume deployment/my-deployment

查看Deployment状态

kubectl get deploymentskubectl get rskubectl get pods

通过合理使用Deployment对象,可以有效管理Kubernetes集群中的应用部署,实现高效的滚动更新和版本回滚。

转载地址:http://oohfk.baihongyu.com/

你可能感兴趣的文章
Objective-C实现基于事件对象实现线程同步(附完整源码)
查看>>
Objective-C实现基于信号实现线程同步(附完整源码)
查看>>
Objective-C实现基于文件流拷贝文件(附完整源码)
查看>>
Objective-C实现基于模板的双向链表(附完整源码)
查看>>
Objective-C实现基于模板的顺序表(附完整源码)
查看>>
Objective-C实现基本二叉树算法(附完整源码)
查看>>
Objective-C实现堆排序(附完整源码)
查看>>
Objective-C实现填充环形矩阵(附完整源码)
查看>>
Objective-C实现声音录制播放程序(附完整源码)
查看>>
Objective-C实现备忘录模式(附完整源码)
查看>>
Objective-C实现复制粘贴文本功能(附完整源码)
查看>>
Objective-C实现复数类+-x%(附完整源码)
查看>>
Objective-C实现外观模式(附完整源码)
查看>>
Objective-C实现多尺度MSR算法(附完整源码)
查看>>
Objective-C实现多种方法求解定积分(附完整源码)
查看>>
Objective-C实现多组输入(附完整源码)
查看>>
Objective-C实现多项式函数在某个点的评估算法(附完整源码)
查看>>
Objective-C实现多项式哈希算法(附完整源码)
查看>>
Objective-C实现大位数乘法(附完整源码)
查看>>
Objective-C实现大根堆(附完整源码)
查看>>