一: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名称]

删除之后,会再次自动启动

 
kubectl delete pod name xxx

 

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

 

 

 

 

 

 

 

 

 

posted on 2020-12-14 21:47  輪滑少年  阅读(157)  评论(0编辑  收藏  举报