Kubernetes控制命令kubectl汇总

kubectl 作为Kubernetes集群管理的命令行工具,经常用到的几个子命令包括:

  • kubectl get – list resources
  • kubectl describe – show detailed information about a resource
  • kubectl logs – print the logs from a container in a pod
  • kubectl exec – execute a command on a container in a pod

按类型分

集群状态

kubectl cluster-info

get 获取信息

kubectl get nodes
kubectl get deployments
# -o yaml 输出yaml配置格式
kubectl -n kube-system get deployment coredns -o yaml

kubectl get pods
# 显示更详细的信息
kubectl get pods -o wide
# 显示所有命名空间的
kubectl get pods --all-namespaces
# 指定命名空间 -n
# -w 监控变化
kubectl get pod -n kube-system

kubectl get componentstatuses
# 等价于
kubectl get cs

delete 删除资源

kubectl delete pod <pod-name>

describe 详细信息

kubectl describe pod <pod-id>

# 描述系统命名空间Pod, 经常用于查找问题
kubectl describe pod calico-node-j2ggr --namespace=kube-system

logs 获取容器日志

POD_NAME=$(kubectl get pods -l run=nginx -o jsonpath="{.items[0].metadata.name}")
kubectl logs $POD_NAME

exec 在容器执行命令

kubectl exec -ti -- $POD_NAME <command>
kubectl exec -ti k8s-demo -- /bin/bash
# 查看环境变量
# printenv

配置/部署

# 部署Deployment
kubectl create -f deployment.yaml
# 编辑Deployment
kubectl edit deployment/nginx-deployment

# 基于配置文件创建pod
kubectl create -f <config.yaml>

# 创建其他资源
kubectl create secret generic kubernetes-bootcamp --from-literal="mykey=mydata"

在非Master机器使用kubectl

scp root@<master ip>:/etc/kubernetes/admin.conf .
kubectl --kubeconfig ./admin.conf get nodes

按使用场景

部署容器镜像

## 部署
kubectl run <deployment name>  —image=<full url>  —port=8080
# 例如
kubectl run kubernetes-bootcamp --image=gcr.io/google-samples/kubernetes-bootcamp:v1 --port=8080
kubectl run busybox --image=busybox

# 检查
kubectl get deployments
# 使用标签过滤
kubectl get pods -l run=busybox

升级及回滚

## 升级
kubectl set image deployment/nginx-deployment nginx=nginx:1.9.1

kubectl rollout status deployment/nginx-deployment

kubectl rollout undo <deployment> [--to-revision=2]
    

# 手动强制更新容器镜像
# 注: 仅适用于ReplicationController
kubectl rolling-update k8s-demo  --image=k8s-demo:latest --image-pull-policy Always

暴露服务

# 使API Server监听本地的8001端口
kubectl proxy
# 使用NodePort服务方式暴露部署
kubectl expose deployment nginx --port 80 --type NodePort
# 标签标记
kubectl label
# 检查
kubectl get services

自动扩容


kubectl scale deployment nginx-deployment  --replicas=5

# 自动扩容/Horizontal Pod Autoscaler
kubectl autoscale deployment nginx-deployment --min=10 --max=15 --cpu-percent=80