kubectl使用大纲整理
开放端口范围30000~32767

一、label 标签
1.1 设置 label
kubectl label node cka01 node=demonode
1.2 查看 label
kubectl get nodes --show-labels

二、Deployment 容器服务
2.1 创建容器服务
kubectl create deployment myapp --image=docker.io/jocatalin/kubernetesbootcamp:v1 --replicas=1 --port=8080
–image指定镜像 --port指定应用对外服务端口
2.2 查看容器服务状态
kubectl get deployment myapp
更详细信息 -o wide
kubectl describe deployment myapp
2.3 删除Deployment
kubectl delete deployment myapp

三、pod
3.1 查看pod
kubectl get pods
更详细信息 -o wide
3.2 查看 Pod 详细信息
kubectl describe pod myapp-7db56d4ff8-p56h2
3.3 查看指定 Namespace 下的 Pod
kubectl get pods -n kube-system
3.4 查看所有 Namespace 下的 Pod
kubectl get pods --all-namespaces
kubectl get pods -A
3.5 查看对应 Service 活跃的后端 Pods
kubectl get ep myapp -o wid
ep是endpoints的缩写
kubectl describe ep myapp
3.6 查看对应 Pod 对象的事件
kubectl describe pod <pod_name> --namespace=<namespace_name>

四、服务发布
4.1 将应⽤暴露到集群外的命令
kubectl expose deployment myapp --type=NodePort --port=8080
4.2 查看 Service
kubectl get svc
-o yaml 根据yaml文件显示
更详细信息 -o wide
kubectl get service
kubectl describe svc myapp
4.3 查看对应 Service 活跃的后端 Pods
kubectl get ep myapp -o wid
ep是endpoints的缩写
kubectl describe ep myapp
4.4 删除service
kubectl delete service myapp

五、扩缩容
5.1 扩容(增加副本数量)
5.1.1 查看当前 Deployment 的副本数量
kubectl get deployment myapp -o wide
5.1.2 副本数扩⼤为 2 个
kubectl scale deployment myapp --replicas=2
5.2 缩容(减少副本数量)
5.2.1 查看当前 Deployment 的副本数量
kubectl get deployment myapp -o wide
5.2.2 副本数减少为 1 个
kubectl scale deployment myapp --replicas=1

六、版本控制
6.1 更新镜像
当前应用image版本为v1升级为v2
kubectl set image deployment myapp kubernetesbootcamp=docker.io/jocatalin/kubernetes-bootcamp:v2 --record
–record参数用来在rollout中添加注释,在回滚时提供说明
6.2查看升级情况
kubectl get pod -w -l app=myapp
不中断服务的滚动更新
6.3 访问验证
curl http://<任意node_ip>:30100
6.4 回退到上⼀个版本
kubectl rollout undo deployment myapp
通过undo回退到上次操作
6.5 回退到指定版本
6.5.1 查看版本历史
kubectl rollout history deployment myapp
6.5.2 指定特定版本回退
kubectl rollout undo deployment myapp --to-revision=5

七、事件与日志
7.1 查看对应 Pod 对象的事件
kubectl describe pod <pod_name> --namespace=<namespace_name>
7.2 查看整个集群的事件
kubectl get events
7.3 查看容器⽇志
kubectl logs -f <pod_name>
类似tail -f方式查看
kubectl logs -f <pod_name> -c <container_name>
pod有多个容器通过-c指定具体容器名
7.4 查看 K8s 组件⽇志
Master的组件都是Static Pod
7.4.1 master组件
kubectl logs kube-apiserver-cka01 -n kube-system
kubectl logs kube-controller-manager-cka01 -n kube-system
kubectl logs kube-scheduler-cka01 -n kube-system
kubectl logs etcd-cka01 -n kube-system
7.4.2 system日志
systemctl status kubelet
journalctl -fu kubelet
7.4.3 proxy日志
kubectl logs kube-proxy-g8gcg -n kube-system
kube-proxy不是Static Pod ,Pod名是随机ID后缀

八、集群操作
8.1 获取到配置里的所有集群
kubectl config get-contexts
8.2 切换到新集群
kubectl config use-context ak8s





