• kubernetes


    一: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
  • 相关阅读:
    MySQL for OPS 02:SQL 基础
    Samba:基于公网 IP 的服务访问
    MySQL for OPS 01:简介 / 安装初始化 / 用户授权管理
    Samba:打造企业级授权文件共享服务器
    嵌入式web server——Goahead移植要点
    libConfuse的使用
    【工具篇】notepad++
    使用sprintf打印float并控制小数位数时引起的问题
    【工具篇】source Insight
    【工具篇】xshell
  • 原文地址:https://www.cnblogs.com/ltyc/p/14135890.html
Copyright © 2020-2023  润新知