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