zoukankan      html  css  js  c++  java
  • 《Kubernetes权威指南》——运维技巧

    1 Node的隔离和恢复

    • 方法1:

      1. 创建新的Node配置文件指定spec.unschedulable: true
      2. 通过kubectl replace完成对Node的状态修改
          kubectl replace -f xxx.yaml
      
      1. 此时Node的状态增加一项SchedulingDisabled,后续创建Pod将不会对该Node进行调度
    • 方法2:

          kubectl patch node name -p '{"spec":{"unschedulable":true}}'
      
    • 将Node脱离调度后,Node上运行的Pod不会自动停止

    • 将Node重新纳入集群只需要将spec.unschedulable: false 可用上述两种方法

    2 Node扩容

    • 在新Node上安装Docker、Kubelet和kube-proxy服务
    • 在Kubelet和kube-proxy的启动参数中的Master URL指定为当前Master地址

    3 Pod动态扩容和缩放

    • 通过kubectl scale rc 调整副本数
    kubectl scale rc name --replicas=3
    

    4 更新资源对象的Label

    kubectl label pod name role=backend     #加一个role=backend的label
    
    kubectl label pod name role-    #删除key为role的label
    
    kubectl label pod name role=master --overwrite  #修改role的label
    

    5 将Pod调度到指定的Node

    • 通过Node的label与Pod的nodeSelector匹配实现
      1. 给Node设置label
      2. Pod的配置文件中spec.nodeSelector 中设置与Node中相同的label

    6 应用的滚动升级

    • Kubernetes提供rolling-update功能实现

    • 该命令创建一个新的RC然后自动控制旧的RC中的Pod数逐渐减少到0,同时新的RC中Pod从0逐渐增加

    • 必须是相同Namespace中的RC

    • 方法一使用配置文件,新的RC配置文件需要注意的地方:

      • RC名字不能与旧的相同
      • selector中至少有一个Label与旧RC的Label不同
          kubectl rolling-update 旧RC -f 配置文件
      
    • 方法二不使用配置文件,指定新版镜像名实现

          kubectl rolling-update RC名 --image=新镜像名
      
    • 更新过程有误可以通过kubectl rolling-update --rollback 实现Pod版本回滚

           kubectl rolling-update RC名 --image=新镜像名 --rollback
      
  • 相关阅读:
    正则表达式
    scrollTop
    css3
    错误整理
    jquery-2
    vscode_修改字体,使用Fira Code
    实例_一个循环嵌套函数
    js_getComputed方法和style属性关于读取样式的区别
    html_html5增强的文件上传域_使用FileReader读取文件内容
    html_html5增强的文件上传域_FileList对象与File对象
  • 原文地址:https://www.cnblogs.com/suolu/p/6844414.html
Copyright © 2011-2022 走看看