k8s操作基本命令
创建
通过yaml文件创建:
1 2 3
| kubectl create -f xxx.yaml (不建议使用,无法更新,必须先delete)
kubectl apply -f xxx.yaml (创建+更新,可以重复使用)
|
删除
通过yaml文件删除:
1
| kubectl delete -f xxx.yaml
|
删除应用(先确定是由说明创建的,再删除对应的kind):
1
| kubectl delete deployment xxx -n kube-system
|
根据label删除:
1
| kubectl delete pod -l app=flannel -n kube-system
|
清理 Evicted 状态的 Pod
1
| kubectl get pods --all-namespaces -o wide | grep Evicted | awk '{print $1,$2}' | xargs -L1 kubectl delete pod -n
|
清理 Error 状态的 Pod
1
| kubectl get pods --all-namespaces -o wide | grep Error | awk '{print $1,$2}' | xargs -L1 kubectl delete pod -n
|
清理 Completed 状态的 Pod
1
| kubectl get pods --all-namespaces -o wide | grep Completed | awk '{print $1,$2}' | xargs -L1 kubectl delete pod -n
|
清理没有被使用的 PV
1
| kubectl describe -A pvc | grep -E "^Name:.*$|^Namespace:.*$|^Used By:.*$" | grep -B 2 "<none>" | grep -E "^Name:.*$|^Namespace:.*$" | cut -f2 -d: | paste -d " " - - | xargs -n2 bash -c 'kubectl -n ${1} delete pvc ${0}'
|
清理没有被绑定的 PVC
1
| kubectl get pvc --all-namespaces | tail -n +2 | grep -v Bound | awk '{print $1,$2}' | xargs -L1 kubectl delete pvc -n
|
清理没有被绑定的 PV
1
| kubectl get pv | tail -n +2 | grep -v Bound | awk '{print $1}' | xargs -L1 kubectl delete pv
|
查询
查看kube-system namespace下面的pod/svc/deployment 等等(-o wide 选项可以查看存在哪个对应的节点)
1
| kubectl get pod/svc/deployment -n kube-system
|
查看所有namespace下面的pod/svc/deployment等等
1
| kubectl get pod/svc/deployment --all-namcpaces
|
重启pod(无法删除对应的应用,因为存在deployment/rc之类的副本控制器,删除pod也会重新拉起来)
1
| kubectl get pod -n kube-system
|
查看pod描述:
1
| kubectl describe pod XXX -n kube-system
|
查看pod 日志 (如果pod有多个容器需要加-c 容器名)
1
| kubectl logs xxx -n kube-system
|
扩容
扩容
1
| kubectl scale deployment spark-worker-deployment --replicas=8
|
导出文件
导出配置文件:
1 2 3 4 5 6 7
| 导出proxy kubectl get ds -n kube-system -l k8s-app=kube-proxy -o yaml>kube-proxy-ds.yaml 导出kube-dns kubectl get deployment -n kube-system -l k8s-app=kube-dns -o yaml >kube-dns-dp.yaml kubectl get services -n kube-system -l k8s-app=kube-dns -o yaml >kube-dns-services.yaml 导出所有 configmap kubectl get configmap -n kube-system -o wide -o yaml > configmap.yaml
|
Kubernetes Dashboard获取admin-user的访问令牌
1
| kubectl -n kube-system describe secret $(kubectl -n kube-system get secret | grep admin-user | awk '{print $1}')
|
回滚
回滚记录历史
1
| kubectl apply -f xxx.yaml --record
|
查看当前回滚状态
1
| kubectl rollout status statefulset xxx -w
|
查看回滚历史版本
1
| kubectl rollout history statefulset xxx
|
回滚到指定版本
1
| kubectl rollout undo statefulset xxx --to-revision=2
|
其他
重启kubelet服务
1 2
| systemctl daemon-reload systemctl restart kubelet
|
修改启动参数
1
| vim /etc/systemd/system/kubelet.service.d/10-kubeadm.conf
|
查看集群信息
查看各组件信息
1
| kubectl get componentstatuses
|
查看kubelet进程启动参数
查看日志
1
| journalctl -u kubelet -f
|
设为不可调度状态
将pod赶到其他节点
解除不可调度状态
master运行pod
1
| kubectl taint nodes master.k8s node-role.kubernetes.io/master-
|
master不运行pod
1
| kubectl taint nodes master.k8s node-role.kubernetes.io/master=:NoSchedule
|
pod Terminating 删不掉
1 2 3
| kubectl delete pod mpmt-user --namespace=lolaage --grace-period=0 --force
https://kubernetes.io/zh/docs/concepts/workloads/pods/pod/
|
获取节点列表
1 2 3 4 5
| #get nodes nodes=$(kubectl get nodes -o jsonpath='{range.items[*].metadata}{.name} {end}')
#get nodes ip nodes=$(kubectl get nodes -o jsonpath='{range .items[*].status.addresses[?(@.type=="ExternalIP")]}{.address} {end}')
|
重新生成链接Token
1
| kubeadm token create --print-join-command
|
只删除 ReplicaSet,不影响它的 Pod
1
| 使用kubectl delete 命令并设置 --cascade=false 选项
|
linux基本命令
清理僵尸进程
1
| ps -A -ostat,ppid | grep -e '^[Zz]' | awk '{print }' | xargs kill -HUP > /dev/null 2>&1
|
技巧命令
通过sed命令修改匹配字段,将Pod的重启策略从默认值Always改为了OnFailure
1
| sed -i "s@\(^[[:space:]]*restartPolicy: \)Always@\1OnFailure@" demoapp.yaml
|
通过dry-run模式的命令生成一个基础的配置框架保存于文件中
1 2 3
| kubectl run demoapp-$RANDOM --image="ikubernetes/demoapp:v1.0" --dry-run=client -o yaml > demoapp.yaml
kubectl run demoapp-$RANDOM --image="ikubernetes/demoapp:v1.0" --dry-run=client -o yaml | kubectl create -f -
|
日志重定向
1 2 3 4 5
| ln -sf /dev/stdout /var/log/nginx/access.log && ln -sf /dev/stderr /var/log/nginx/error.log
效果 access.log -> /dev/stdout error.log -> /dev/stderr
|
即可查看容器的访问日志和错误日志
查看镜像构建记录
1
| docker history --no-trunc 5cd76d8c4017
|