azure aks 中不太常用的常用命令备忘录
登录并刷新 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