Kubernetes常用命令(持续更新)

1. 指令介绍

Kubernetes常用命令(持续更新)_第1张图片

2. 常用指令示例

(1) 查看资源信息类指令

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

(2) 操作编辑类指令

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

(3) 复制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

3. k8s添加本地hosts解析

注意层级

  hostAliases:
  - ip: 192.168.1.135
    hostnames:
    - "test.app.com"

4. 删除资源类命令

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 

5. 创建资源类命令

#创建ingress tls证书
kubectl  create secret tls \<tls-name\> --cert=\</tls/xxx.crt\> --key=\</tls/xxxxx.key\> --namespace=xxx

你可能感兴趣的:(云原生,kubernetes,java,运维,常用命令,指令)