K8S命令基础学习与实际应用
K8S检查
kubectl get pods
kubectl get events
kubectl port-forward eos-zentao-blue-5598b7b75c-t9kqr 8080:80
按selector名来查找pod
kubectl get pod -n namespace --selector name=redis
查看集群信息
kubectl cluster-info
查看各组件信息
kubectl get componentstatuses -A
查看pods所在的运行节点
kubectl get pods -o wide
查看pods定义的详细信息
kubectl get pods -o yaml
查看运行的pod的环境变量
kubectl exec pod名 + -n namespace env
查看指定pod的日志
kubectl logs -f pods/heapster-xxxxx -n kube-system
操作类命令
创建资源
kubectl create -f 文件名.yaml
重建资源
kubectl replace -f 文件名 [--force]
删除资源
kubectl delete -f 文件名
kubectl delete pod pod名
kubectl delete rc rc名
kubectl delete service service名
kubectl delete pod -A
kubectl进阶命令操作
kubectl get:获取指定资源的基本信息
1 kubectl get services kubernetes-dashboard -n kube-system #查看所有service
2 kubectl get deployment kubernetes-dashboard -n kube-system #查看所有发布
3 kubectl get pods -A #查看所有pod
4 kubectl get pods -o wide -A #查看所有pod的IP及节点
5 kubectl get pods -n kube-system | grep dashboard
6 kubectl get nodes -lzone #获取zone的节点
2、kubectl describe:查看指定资源详细描述信息
1 kubectl describe service/kubernetes-dashboard --namespace="kube-system"
2 kubectl describe pods/kubernetes-dashboard-349859023-g6q8c --namespace="kube-system" #指定类型查看
3 kubectl describe pod nginx-772ai #查看pod详细信息
3、kubectl scale:动态伸缩
1 kubectl scale rc nginx --replicas=5 # 动态伸缩
2 kubectl scale deployment redis-slave --replicas=5 #动态伸缩
3 kubectl scale --replicas=2 -f redis-slave-deployment.yaml #动态伸缩
kubectl exec:进入pod启动的容器
kubectl exec -it redis-master-1033017107-q47hh /bin/bash #进入容器
kubectl label:添加label值
kubectl label nodes kube-node1 zone=node1
1 kubectl label nodes node1 zone=north #增加节点lable值 spec.nodeSelector: zone: north #指定pod在哪个节点
2 kubectl label pod redis-master-1033017107-q47hh role=master #增加lable值 [key]=[value]
3 kubectl label pod redis-master-1033017107-q47hh role- #删除lable值
4 kubectl label pod redis-master-1033017107-q47hh role=backend --overwrite #修改lable值
kubectl rolling-update:滚动升级
1 kubectl rolling-update redis-master -f redis-master-controller-v2.yaml #配置文件滚动升级
2 kubectl rolling-update redis-master --image=redis-master:2.0 #命令升级
3 kubectl rolling-update redis-master --image=redis-master:1.0 --rollback #pod版本回滚
kubectl get --raw /apis/metrics.k8s.io/v1beta1/nodes ========= metrics service 验证
kubectl get svc # 列出所有 namespace 中的所有 service
kubectl get pods -A # 列出所有 namespace 中的所有 pod
kubectl get pods -A -o wide # 列出所有 pod 并显示详细信息
kubectl get deployment my-dep # 列出指定 deployment
kubectl get pods --include-uninitialized # 列出该 namespace 中的所有 pod 包括未初始化的
# 使用详细输出来描述命令
kubectl describe nodes my-node
kubectl describe pods my-pod
kubectl delete -f ./pod.json # 删除 pod.json 文件中定义的类型和名称的 pod
kubectl delete pod,service baz foo # 删除名为“baz”的 pod 和名为“foo”的 service
kubectl delete pods,services -l name=myLabel # 删除具有 name=myLabel 标签的 pod 和 serivce
kubectl delete pods,services -l name=myLabel --include-uninitialized # 删除具有 name=myLabel 标签的 pod 和 service,包括尚未初始化的
kubectl -n my-ns delete po,svc --all # 删除 my-ns namespace 下的所有 pod 和 serivce,包括尚未初始化的
与运行中的 Pod 交互
kubectl logs -f podname -n ns --since=10m # ns 命名空间 --since(非必须) 从多长时间开始 10m 10分钟
与节点和集群交互
kubectl cordon my-node # 标记 my-node 不可调度
kubectl drain my-node # 清空 my-node 以待维护
kubectl uncordon my-node # 标记 my-node 可调度
kubectl top node my-node # 显示 my-node 的指标度量
kubectl cluster-info # 显示 master 和服务的地址
kubectl cluster-info dump # 将当前集群状态输出到 stdout
kubectl cluster-info dump --output-directory=/path/to/cluster-state # 将当前集群状态输出到 /path/to/cluster-state
如果该键和影响的污点(taint)已存在,则使用指定的值替换
kubectl taint nodes foo dedicated=special-user:NoSchedule