azure aks 中不太常用的常用命令备忘录

momo314相同方式共享非商业用途署名转载



  • 登录并刷新 aks 权限

      az login
      az aks get-credentials -n ${ClusterName} -g ${ResourceGroup}
    
  • 给 node 设置并查看 污点(Taint)

      # 此方式设置的污点在节点虚拟机重启后会被移除
      kubectl taint nodes ${NodeName} ${TaintName}
      kubectl describe node ${NodeName}
    
  • 重启 ask 节点 对应的虚拟机

      # 注意:aks节点对应的虚拟机 所在的资源组 与 ask集群 所在的资源组 并不相同。
      # 一般来说,aks节点对应的虚拟机 所在的资源组 的命名规则为:MC_${aks集群所在资源组名称}_${aks集群名称}_${aks集群所在地区}
      # eg. MC_AksResourceGroup_CompanyCluster_southeastasia
      # 
      # aks node 的命名方式一般为:aks-${节点池名称}-${节点池id}-vmss${虚拟机id}
      # eg. aks-redispool-26924553-vmss-000001
      # 
      # 此命令中的 虚拟机组名称一般为 node 名称中 虚拟机id 之前的部分
      # eg. aks-redispool-26924553-vmss
      # 
      # 虚拟机id格式是16进制,需要转换为10进制,以 00000d 为例,则此命令中应该使用 13
    
      az vmss restart -g ${VM_ResourceGroup} -n ${VM_GroupName} --instance-ids ${VM_Id}
    
  • 创建 支持GPU 且 自带污点(Taint) 的节点池

      # 如果提示无法识别参数 aks-custom-headers,可能需要预先运行如下命令,以启用预览版 azure-cli
      # az extension add --name ask-preview
      # az extension update --name aks-preview
      az aks nodepool add \
        --resource-group ${ResourceGroup} \
        --cluster-name ${ClusterName} \
        --name ${NodePoolName} \
        --node-vm-size ${VmSize, eg. Standard_nc4as_T4_v3} \
        --node-count ${NodeCount}
        --node-taints ${TaintName} \
        --aks-custom-headers UseGPUDedicatedVHD=true,usegen2vm=true
    
  • 连接到 node

      # 使用 kubectl debug
      kubectl debug node/${NodeName} -it --image=mcr.microsoft.com/aks/fundamental/base-ubuntu:v0.0.11
    
      # 使用 node shell
      kubectl node-shell ${NodeName}
    
      # 安装 node shell
      curl -LO https://github.com/kvaps/kubectl-node-shell/raw/master/kubectl-node_shell
      chmod +x ./kubectl-node_shell
      mv ./kubectl-node_shell /usr/local/bin/kubectl-node_shell
      kubectl plugin list
    
  • cluster node 的维护

      # 将节点设置为不可调度
      kubectl cordon ${NodeName}
      # 逐出节点上所有的pod
      kubectl drain ${NodeName} --force=true --ignore-daemonsets=true --delete-local-data=true
      # 恢复节点
      kubectl uncordon ${NodeName}
    
  • 强制删除pod

      # 非必要时不要使用,可能会导致有些资源无法释放
      kubectl delete pod ${PodName} -n ${Namespace} --force=true --grace-period=0
    
  • 强制删除pv

      kubectl patch pv ${PvName} -p '{\"metadata\":{\"finalizers\":null}}'
    
  • 查看指定的 cluster node 上运行了哪些 pod

      kubectl get pod -A --field-selector=spec.nodeName=${NodeName}
    
  • 部署、更新及卸载服务

      # 部署和更新服务
      kubectl apply -f ./values.yaml
    
      # 卸载应用
      kubectl delete -f ./values.yaml
    
✎﹏ 本文来自于 momo314和他们家的猫,文章原创,转载请注明作者并保留原文链接。