一:deployment 资源
1.简介
Deployment 为 Pod 提供声明式更新
在 Deployment 对象中描述所需的状态,然后 Deployment 控制器将实 际状态以受控的速率更改为所需的状态
您可以定义部署以创建新的副本集,或删除现有部署并在新部署中采用 其所有资源
一句话:Deployment 主要功能是保证有足够的 Pod 正常对外提供服务
2.创建 deployment.yaml
# 定义资源类型 kind: Deployment # 定义API版本号 apiVersion: app1/v1 # 定义基础信息 metadata: name: test-deployment # 定义容器信息 spec: # 建立副本数 replicas: 2 # 定义Pod的模板 template: metadata: labels: app: test-deployment env: test spec: containers: - name: nginx images: nginx:1.19.2 # 定义选择器 selector: # 精确匹配 matchLabels: app: test-deployment env: test
3.部署
选项 | 描述 |
---|---|
--record | 允许将当前命令记录在正在创建或更新的资源的注释中 |
-f |
filename 文件名 |
kubectl apply -f deployment.yaml
查看部署状态
排查问题,最主要看Events
kubectl get pods -w kubectl get deployment.apps
查看部署详情(错误)
kubectl describe [资源类型] [资源名称]
kubectl describe deployments.apps nginx-deployment
查看运行错误
kubectl logs [pod名称]
删除之后,会再次自动启动
4.更新
方式1 - 通过命令行修改
kubectl set image [资源类型(控制器资源)] [资源名称] [容器名称]=[新镜像] kubectl set image deployment test-deployment django=redis
方式2 - 修改yaml
文件
vim test.yaml
# 定义资源类型 kind: Deployment # 定义API版本号 apiVersion: apps/v1 # 定义基础信息 metadata: name: test-deployment # 定义容器信息 spec: # 定义副本个数 replicas: 2 # 定义Pod的模板 template: metadata: labels: app: test-deployment env: test spec: containers: - name: nginx image: nginx:1.19.2 - name: mysql image: mysql:5.7 imagePullPolicy: IfNotPresent env: - name: MYSQL_ROOT_PASSWORD value: '123456' # 定义选择器 selector: # 精确匹配 matchLabels: app: test-deployment env: test
方式3 - 修改资源
kubectl edit [资源类型] [资源名称]
方式4 - 去面板中修改
方式5 - 打补丁
kubectl patch [资源类型] [资源名称] -p [配置项] kubectl patch deployment.apps test-deployment -p '{"spec": {"replicas": 5}}'
5.回滚
当新版本不稳定时,可以对其进行回滚操作,默认情况下,所有 Deployment 的 rollout 历史都保留在系统中, 可以随时回滚
查看构建/部署历史
kubectl rollout history [资源类型] [资源名称]
kubectl rollout history deployment test-back
如果当前的版本和历史版本一致,那么那个历史版本就会消失,只显示当前版本
edit 的缺点:必须得知道上个版本具体是什么
kubectl rollout history deployment test-back
kubectl rollout undo deployment test-back
① 回滚方式1 - edit
kube edit [资源类型] [资源名称]
# 然后修改内容
② 回滚方式2 - undo
kubectl rollout undo [资源类型] [资源名称]
③ 回滚方式3 - 回滚到指定版本
kubectl rollout undo [资源类型] [资源名称] --to-revision=[指定版本号]
6.扩容 与 缩容
① 方式1 - edit
kube edit [资源类型] [资源名称]
# 修改副本数 replicas: 数量
② 方式2 - 修改配置清单 yaml
vim deployment.yaml
③ 方式3 - 打补丁 patch
kubectl patch [资源类型] [资源名称] -p [配置项] kubectl patch deployment.apps test-deployment -p '{"spec": {"replicas": 10}}'
④ 方式4 - scale
kubectl scale [资源类型] [资源名称] --replicas=[副本数] kubectl scale deployment.apps test-deployment --replicas=5
⑤ 方式5 - HPA
docker pull registry.cn-hangzhou.aliyuncs.com/k8sos/metrics-server:v0.4.1 kubectl get pods -n kube-system -l k9s-app=metrics-server kubectl top pods
7.查看集群IP
kubectl get pods -o wide