K8S笔记之集群管理


pod

查看对外开放pod和port

kubectl get svc --all-namespaces | grep -v ClusterIP
kubectl get svc --all-namespaces -o go-template='{{range .items}}{{ $save := . }}{{range.spec.ports}}{{if .nodePort}}{{$save.metadata.namespace}}{{"/"}}{{$save.metadata.name}}{{" - "}}{{.name}}{{": "}}{{.nodePort}}{{"\n"}}{{end}}{{end}}{{end}}'

清理所有状态为Failed或者Evicted的pod

#!/bin/bash
kubectl get pods --all-namespaces -o go-template='{{range .items}} \
{{if eq .status.phase "Failed"}} {{if eq .status.reason "Evicted"}} {{.metadata.name}}{{" "}} {{.metadata.namespace}}{{"\n"}} \
{{end}} \
{{end}} \
{{end}}' | while read epod namespace; do kubectl -n $namespace delete pod $epod; done

查看pod id

kubectl get pods --all-namespaces -o custom-columns=PodName:.metadata.name,PodUID:.metadata.uid,NODE:.spec.nodeName

查看pod所在节点

kubectl get pod -o wide --all-namespaces
# 或者
kubectl get pod -o=custom-columns=NODE:.spec.nodeName,NAME:.metadata.name --all-namespaces

孤立pod解决

找到所有运行中的pod id

kubectl get pods --all-namespaces -o custom-columns=PodUID:.metadata.uid | tail -n +2 > pods.txt
ls -d1 /var/lib/kubelet/pods/* | xargs -I % bash -c '[ ! -f %/etc-hosts ] && echo %'
cat /var/log/messages|grep -i 'Orphaned pod'|awk -F '"' '{print $2}'|uniq
kubectl get pods --all-namespaces -o custom-columns=PodName:.metadata.name,PodUID:.metadata.uid | egrep -f /tmp/pods.txt

节点

禁止节点调度

kubectl cordon master   # 禁止节点调度
kubeclt uncordon master # 允许节点调度

Label添加删除和修改

  • 查看

    kubectl get node --show-labels
  • 添加

    kubectl label nodes <node-name> <label-key>=<label-value>
  • 删除

    kubectl label nodes <node-name> <label-key>-
  • 修改

    kubectl label nodes <node-name> <label-key>=<label-value> --overwrite
作者: honmaple
链接: https://honmaple.me/articles/2020/09/K8S笔记之集群管理.html
版权: CC BY-NC-SA 4.0 知识共享署名-非商业性使用-相同方式共享4.0国际许可协议
wechat
alipay

加载评论