Kubernetes常用命令(持续更新)
1.批量重启指定namespace下所有pod命令2.查询集群内所有非Running状态pod3.复制pod内文件到宿主机4.删除node节点命令5.排空节点忽略daemonsets应用并设置节点为不可调度6.将节点设置为可调度7.查看集群节点CPU/MEMORY资源使用情况,前提集群要安装metric-server组件8.导出集群应用reques以及limit配置信息..............
·
指令介绍
常用指令示例
查看资源信息类指令
kubectl get pods # 获取pod列表
kubectl get pods -n ingress-nginx # 获取指定名称空间pod列表
kubectl get pods -o wide # 获取pod详细信息
kubectl get pods --show-labels # 获取pod并查看pod标签
kubectl get pod -w # 监视pod资源变动信息
kubectl get pods -A|grep -v Running # 获取集群所有非Running状态pod
kubectl get pods,services -o wide # 格式化输出pod及services信息
kubectl exec podname env # 查看运行的pod的环境变量
kubectl describe pods podname --namespace=xxxnamespace # 查看指定名称空间下指定pod的详细信息
kubectl logs podname
kubectl logs podname -f -c container_name -n kube-system # 查看pod日志(-f 持续监控,-c如果pod中只有一个容器不用加)
kubectl get namespaces # 查看集群内所有名称空间
kubectl get cs # 查看集群健康状态
kubectl get events # 查看事件
kubectl get nodes # 查看集群全部节点
kubectl get deployment --all-namespaces/-A # 查看集群内所有deployment
kubectl get deployments deployment_name --watch # 监控deployment的更新过程
kubectl get rc,services # 查看集群默认名称空间的副本控制器和services
kubectl get pods podname -o yaml # 查看pod的yaml信息
kubectl version --short=true # 查看客户端及服务端程序版本信息
kubectl api-versions # 查看api版本信息
kubectl cluster-info # 查看集群信息
kubectl top nodes #查看节点资源使用情况(集群内需安装metric-server组件)
kubectl top pod --all-namespaces # 查看pod资源使用率
kubectl config view # 显示合并的kubeconfig配置
# 查看 deploy 的资源分配情
# kubectl get deploy -o=custom-columns=name:.metadata.name,ns:.metadata.namespace,replicas:.spec.replicas,request-cpu:.spec.template.spec.containers[0].resources.requests.cpu,limit-cpu:.spec.template.spec.containers[0].resources.limits.cpu,request-memory:.spec.template.spec.containers[0].resources.requests.memory,limit-memory:.spec.template.spec.containers[0].resources.limits.memory,affinity:.spec.template.spec.affinity
# 查看 pod 的资源分配情况
# kubectl get pod -o=custom-columns=name:.metadata.name,ns:.metadata.namespace,request-cpu:.spec.containers[0].resources.requests.cpu,limit-cpu:.spec.containers[0].resources.limits.cpu,request-memory:.spec.containers[0].resources.requests.memory,limit-memory:.spec.containers[0].resources.limits.memory,nodeName:.spec.nodeName,node:.spec.nodeName,affinity:.spec.affinity
操作编辑类指令
kubectl drain <nodename> --force --ignore-daemonsets # 排空节点忽略daemonsets应用并设置节点为不可调度
kubectl uncordon <nodename> # 将节点设置为可调度
kubectl scale deployment --replicas=<期望pod数> # 扩缩容pod数
kubectl rollout history deployments deployment-demo # 查看历史版本
# 创建一个名字为nginx-demo 副本数为3 标签为app=nginx_demo 镜像为nginx:1.17 容器端口为80的容器实例
kubectl run nginx-demo --replicas=3 --labels="app=nginx_demo" --image=nginx:1.17 --port=80
# 为容器组nginx-demo创建一个services端口类型为nodeportr 暴漏的端口为88可以让外部可以访问
kubectl expose deployment nginx-demo --port=88 --type=NodePort --target-port=80 --name=nginx-svc
# 设置容器组nginx-demo中所有容器的request(请求)和limit(限制)值
kubectl set resources deployment nginx-demo - --limits=cpu=200m,memory=512Mi
# 将deployment中的nginx-demo容器镜像修改为nginx-1.10
kubectl set image deployment/nginx-demo busybox=busybox nginx=nginx:1.10
# 编辑deployment中nginx-demo的资源信息
kubectl edit deployment nginx-demo
# 给pod名为nginx-demo的pod打标签
kubectl label pods nginx-demo app=nginx
# 覆盖现有标签的value
kubectl label --overwrite pods nginx-demo app=nginx2
复制pod内文件到宿主机
方法一使用kubectl cp命令:
这边要注意的是k8s复制的时候不要用绝对路径,他这个默认是从工作目录开始的,#还有要注意的是目标路径不能为路径,只能是一个文件名
kubectl cp -n namespace xxxxx:logs/testfile ./testfile.txt (namespace: 为pod所在名称空间 xxxxx:是pod的名称)
方法二使用docker cp:
#需要进入pod所在node节点服务器中
#查找到pod所运行的docker container id
docker ps -a|grep test-app-name
#然后cp 容器内文件到宿主机
docker cp container id:dir/filename ./tmp
将宿主机文件复制到pod中
kubectl cp -n <本地宿主机的文件路径> namespace xxxxx:logs/testfile (namespace: 为pod所在名称空间 xxxxx:是pod的名称)
k8s添加本地hosts解析
注意层级
hostAliases:
- ip: 192.168.1.135
hostnames:
- "test.app.com"
删除资源类命令
kubectl delete -f demo-deployment.yaml # 根据yaml文件删除对应资源,只删除资源不删除yaml文件
kubectl delete node <nodename> # 删除node节点
kubectl delete <resources_name> # 删除指定资源
# 批量删除驱逐状态pod
kubectl get pods -n namespace | grep Evicted| awk '{print $1}' | xargs -n 1 kubectl delete pods -n namespace
创建资源类命令
#创建ingress tls证书
kubectl create secret tls \<tls-name\> --cert=\</tls/xxx.crt\> --key=\</tls/xxxxx.key\> --namespace=xxx
更多推荐
已为社区贡献1条内容
所有评论(0)