kubectl命令

  • kubectl certificate 证书管理
  • kubectl cluster-info 查看k8s集群信息
  • get -h帮助 -n指定namespace -o wide/json/yml 显示更多/json格式信息
    • kubectl get all 查看所有资源信息
    • kubectl get componentstatuses 查看组件信息,可用-s http://localhost:8080 指定master地址
    • kubectl get nodes node相关
      • kubectl get node --show-labels
    • kubectl get rc,namespace(缩写ns) 查看namespace
      • kubectl get pod --all-namespaces 查看所有pod所属的命名空间 -o wide 在哪些节点上
    • kubectl get pods -n namespace 查看某个namespace下的pod
      • kubectl get pod --show-labels
      • kubectl get pods -l app=example
    • kubectl get pods -nkube-system 查看系统节点是否正常
    • kubectl get svc -nxxx 查看svc信息
    • kubectl get po pod-name -nxxx -o wide 查看某个指定pod的详细信息
    • kubectl get rs 查看replica set信息
    • kubectl get deployment 查看所有deployment -o wide
    • kubectl get statefulset -n namespace -o wide 查看statefulset
    • kubectl get service -n namespace -o wide 查看service
  • describe 显示特定资源的详细信息, 用法跟get相同,不支持-o
    • kubectl describe po pod-name -nxxx
  • top 用于查看资源的cpu,内存磁盘等资源的使用率
    • kubectl top pod --all-namespaces
  • create 创建[namespace/secret/configmap/serviceaccount]
    • kubectl create -f filename: 根据yml创建某resource
  • replace 修改yml文件后的更新
    • kubectl replace -f filename
  • expose 创建一个service服务,并且暴露端口让外部可以访问
    • kubectl expose deployment nginx --port=88 --type=NodePort --target-port=80 --name=nginx-service
  • set 配置应用的一些特定资源,也可以修改应用已有的资源
    • kubectl set resources 设置资源的一些范围限制, cpu mem
      • kubectl set resources deployment nginx -c=nginx --limits=cpu=200m,memory=512Mi
      • kubectl set resources deployment nginx --limits=cpu=200m,memory=512Mi --requests=cpu=100m,memory=256Mi
      • kubectl set resources deployment nginx --limits=cpu=0,memory=0 --requests=cpu=0,memory=0 删除nginx中容器的计算资源值
    • kubectl set selector 设置资源的selector(选择器)
      • 如果在调用"set selector"命令之前已经存在选择器,则新创建的选择器将覆盖原来的选择器。
      • selector必须以字母或数字开头,最多包含63个字符,可使用:字母、数字、连字符"-" 、点".“和下划线”_"。如果指定了–resource-version,则更新将使用此资源版本,否则将使用现有的资源版本。
      • selector (-f FILENAME | TYPE NAME) EXPRESSIONS [–resource-version=version]
    • kubectl set image 用于更新现有资源的容器镜像。
      • 可用资源对象包括:pod (po)、replicationcontroller (rc)、deployment (deploy)、daemonset (ds)、job、replicaset (rs)。
      • image (-f FILENAME | TYPE NAME) CONTAINER_NAME_1=CONTAINER_IMAGE_1 … CONTAINER_NAME_N=CONTAINER_IMAGE_N
      • kubectl set image deployment/nginx busybox=busybox nginx=nginx:1.9.1 将deployment中的nginx容器镜像设置为“nginx:1.9.1”。
      • kubectl set image deployments,rc nginx=nginx:1.9.1 --all 所有deployment和rc的nginx容器镜像更新为“nginx:1.9.1”
      • kubectl set image -f path/to/file.yaml nginx=nginx:1.9.1 --local -o yaml 从本地文件中更新nginx容器镜像
  • patch 容器运行时修改某些容器属性
  • edit 用于编辑资源信息
    • kubectl edit deployment nginx 编辑Deployment nginx的一些信息
    • kubectl edit service/nginx 编辑service类型的nginx的一些信息
  • 设置命令:label,annotate,completion
    • label 用于更新(增加、修改或删除)资源上的 label(标签)
      • label 必须以字母或数字开头,可以使用字母、数字、连字符、点和下划线,最长63个字符。
      • 如果–overwrite 为 true,则可以覆盖已有的 label,否则尝试覆盖 label 将会报错。
      • 如果指定了–resource-version,则更新将使用此资源版本,否则将使用现有的资源版本。
      • label [–overwrite] (-f FILENAME | TYPE NAME) KEY_1=VAL_1 … KEY_N=VAL_N [–resource-version=version]
      • kubectl label pods foo unhealthy=true 给名为foo的Pod添加label unhealthy=true
      • kubectl label --overwrite pods foo status=unhealthy 且覆盖现有的value
      • kubectl label pods --all status=unhealthy 给 namespace 中的所有 pod 添加 label
      • kubectl label pods foo status=unhealthy --resource-version=1 仅当resource-version=1时才更新 名为foo的Pod上的label
      • kubectl label pods foo bar- 删除名为“bar”的label 。(使用“ - ”减号相连)
    • annotate 更新一个或多个资源的Annotations信息。也就是注解信息,可以方便的查看做了哪些操作。
      • Annotations由key/value组成。
      • Annotations的目的是存储辅助数据,特别是通过工具和系统扩展操作的数据,更多介绍在这里
      • 如果–overwrite为true,现有的annotations可以被覆盖,否则试图覆盖annotations将会报错。
      • 如果设置了–resource-version,则更新将使用此resource version,否则将使用原有的resource version。
      • annotate [–overwrite] (-f FILENAME | TYPE NAME) KEY_1=VAL_1 … KEY_N=VAL_N [–resource-version=version]
    • completion命令:用于设置kubectl命令自动补全
      • kubectl completion bash
      • kubectl completion zsh
  • delete 根据resource名或label删除resource
    • kubectl delete -f rc-nginx.yaml
    • kubectl delete po podname
    • kubectl delete po -l app=nginx-2 删除某个lable的pod
  • logs 用于显示pod运行中,容器内程序输出到标准输出的内容 相当于docker logs
    • kubctl logs podname 可用-f,类似tailf功能
  • attach 连接到一个正在运行的容器 类似logs -f功能
    • kubectl attach POD -c CONTAINER
    • kubectl attach podname -c container_name(一个pod多个容器时使用) —namespace=kube-system
  • cp 拷贝文件或者目录到pod容器中
    • 用于pod和外部的文件交换,类似于docker 的cp,就是将容器中的内容和外部的内容进行交换。
  • 部署命令:rollout,rolling-update,scale,autoscale
    • rollout 用于对资源进行管理
      • 可用资源包括:deployments,daemonsets。
      • 子命令: history(查看历史版本) pause(暂停资源) resume(恢复暂停资源) status(查看资源状态) undo(回滚版本)
    • rolling-update 执行指定ReplicationController的滚动更新,先起新pod下掉旧的
      • kubectl rolling-update podname -f filename filename为新RC文件需要与之前的RC在相同的namespace下
      • kubectl rolling-update podname —rollback 回滚滚动升级 —update-period 指定间隔周期等
    • scale 扩缩容
      • kubectl scale podname —replicas=4
    • autoscale 自动根据pod负载对其副本进行扩缩
      • kubectl autoscale podname —min=1 —max=4
  • exec 类似于docker的exec命令 如果一个pod容器中,有多个容器,需要使用-c选项指定容器。
  • run 类似于docker的run命令 在集群中创建并运行一个或多个容器镜像
    • run NAME --image=image [–env=“key=value”] [–port=port] [–replicas=replicas] [–dry-run=bool] [–overrides=inline-json] [–command] – [COMMAND] [args…]
  • cordon, drain, uncordon
    • cordon 让某个node不可调度 get会发现SchedulingDisabled
      • kubectl cordon nodename
    • drain 将指定node上的pod迁移到其他node上
      • kubectl drain nodename
    • uncordon 恢复某个node的调度

k8s日志

  • less /var/log/messages 系统日志
  • journalctl -u kube-scheduler
  • journalctl -xefu kubelet
  • journalctl -u kube-apiserver
  • journalctl -xe
  • journalctl -u kubelet |tail

statefulset

  • 修改docker的entrypoint进入调试模式
    • statefulset中在container yaml中添加command: ["/bin/sh","-c",“while true;do echo hello;sleep 1;done”]
    • 删除老pod会自动拉起
  • 添加环境变量

yaml格式

Logo

K8S/Kubernetes社区为您提供最前沿的新闻资讯和知识内容

更多推荐