docker+k8s—常用命令(持续更新)
查看命名空间、pod、deployment、service、ingress、configmap
kubectl get pod -A # 全局范围忽略命名空间获取pod
kubectl get namespaces # 获取命名空间
kubectl -n <namespace> get pod # 获取命名空间内pod
kubectl -n <namespace> get deployments # 获取命名空间内deployment
kubectl -n <namespace> get svc # 获取service相关信息,可查看service ip
kubectl -n <namespace> get ingress # 获取命名空间内ingress
kubectl -n <namespace> get cm # 查找命名空间内configmap
kubectl -n <namespace> get pod -o wide # 详细获取pod信息
改变服务副本数、回滚服务状态
kubectl -n <namespace> scale --replicas=0 deployment <deployment_name> # 改变服务节点数(一般可用于重启pod)
kubectl -n <namespace> rollout restart deployment <deployment_name> # 回滚deployment
kubectl -n yqcloud get deployment | grep 0/1 | awk '{print $1}' | xargs -n1 kubectl scale deployment -n yqcloud --replicas=0 # 将状态为0/1的deployment副本数设为0
排错:查看event、日志、OOM
kubectl -n <namespace> describe pod <pod_name> # 查看pod错误原因
kubectl -n <namespace> logs <pod_name> --tail 200 -f # 查看最后200行日志(最新)
kubectl -n <namespace> logs -f <pod_name> | less # 分页显示日志,支持从前往后和从后往前查看
watch -n 1 kubectl get po -n <namespace> #实时观看第一行
dmesg | tail # 显示dmesg最近一次的输出
dmesg -T | grep Kill # 查看内存溢出(OOM out of memery)
查看deployment、svc、configmap配置文件
kubectl -n <namespace> get deployments <deployment_name> -o yaml # 查看deployment文件(可在yaml文件中查看image镜像的版本,也可describe查看镜像版本)
kubectl -n <namespace> edit deployments <deployment_name> -o yaml # 编辑deployment文件(可在中直接修改版本)
kubectl -n <namespace> get svc <svice_name> -o yaml # 查看svc配置文件
kubectl -n <namespace> edit svc <deployment_name> # 修改svc配置文件(可进入service里修改镜像名、副本数、环境变量等)**有待考证**
kubectl get cm <deployment_name> -n <namespace> -o yaml # 查看configmap文件
删除pod、deployment
helm -n <namespace> uninstall <deployment_name> # 卸载deployment
helm -n <namespace> delete <pod_name> # 卸载pod
kubectl -n <namespace> delete pod # 删除pod
kubectl delete pod,service baz foo # 删除名为“baz”的pod和名为“foo”的service
kubectl delete pods,services -l name=myLabel # 删除具有name=myLabel标签的pod和serivce
kubectl -n <namespace> delete pod <pod_name> --force --grace-period=0 # 强制删除pod
kubectl -n yqcloud get pods | grep Evicted | awk '{print $1}' | xargs kubectl -n yqcloud delete pod #批量删除状态为Evicted的pod
docker image ls | awk '{print $3}' | grep -v IMAGE | xargs docker rmi # 删除没有使用的服务镜像(先列出镜像,然后匹配第三列,接着过滤掉 IMAGE ,然后使用xargs连接删除语句)
没想好怎么分类
kubectl exec -it -n <namespace> <pod_name> -c <continar_name> bash # 进入pod内
kubectl taint nodes --all node-role.kubernetes.io/master- # 让 master节点参与POD负载
kubectl taint nodes <node-name> node-role.kubernetes.io/master=:NoExecute # 让 master节点恢复不参与POD负载,并将Node上已经存在的Pod驱逐出去
kubectl get node --show-labels #查看所有node节点的标签
kubectl label nodes worker03 type=node_type #给节点添加标签
split -b 100M "PSH01.tar" # 切割tar包
cat xa* > all.tar # 组合切割后的tar包
lsof -i:端口号 # 查看端口占用情况
netstat -tunlp | grep 端口号 #用于显示tcp/udp端口和进程等相关情况。