一. 集群管理
1. 查看集群节点状态:
kubectl get nodes
2. 查看集群资源使用情况(需要安装metric-server):
kubectl top nodes
#查看pod资源使用情况
kubectl top pod
3. 查看集群信息:
kubectl cluster-info
4. 获取节点详细信息:
kubectl describe node <node-name>
5. 给节点添加标签:
kubectl label nodes <node-name> key=value
6. 删除节点上的标签:
kubectl label nodes <node-name> key-
7. 查看命名空间信息:
kubectl describe namespace <namespace-name>
二. Pod管理
k8s中最小的可部署的单元,也是k8s的核心组件。封装一个或多个紧密相关的容器应用,不同的pod之间可以共享存储和网络配置。
1. 列出所有Pod:
kubectl get pod
#查看所有空间的pod
kubectl get pod
#查看指定空间的pod
kubectl get pod -n <namespace>
2. 查看特定Pod的日志:
kubectl logs <pod-name> -n <namespace>
#其中`-n`后面跟命名空间名称,如果是在默认命名空间,可以省略。
3. 运行一个临时的Pod:
kubectl run nginx-test --image=nginx
4. 进入正在运行的Pod:
kubectl exec -it <pod-name> -n <namespace> -- /bin/bash
5. 查看Pod的详细信息:
kubectl describe pod <pod-name> -n <namespace>
#查看event事件
kubectl describe pod <pod-name> -n <namespace> | grep -i events
6. 删除Pod:
kubectl delete pod <pod-name> -n <namespace>
#强制删除pod
kubectl delete pod <pod-name> -n <namespace> --force --grace-period=0
三. Deployment管理
在k8s中,deployment用于管理Pod的生命周期,自动化管理Pod的创建、升级、回滚等。
1. 列出所有Deployments:
kubectl get deployments
#简写
kubectl get deploy
2. 查看特定Deployment的详细信息:
kubectl describe deployment <deployment-name> -n <namespace>
3. 创建Deployment:
kubectl create deployment <deployment-name> --image=<container-image>
kubectl create deployment my-deploy --image=nginx
4. 更新Deployment中的容器镜像:
kubectl set image deployment/<deployment-name> <container-name>=<new-container-image>
kubectl set image deployment/my-deployment nginx=nginx:latest
5. 回滚Deployment到上一个版本:
kubectl rollout undo deployment/my-deploy
6. 查看Deployment的更新历史:
kubectl rollout history deployment <deployment-name>
7. 回滚到指定版本的Deployment:
#回滚到第2次修订版
kubectl rollout undo deployment <deployment-name> --to-revision=2
8. 查看Deployment指定标签下的的Pods状态
kubectl get pods -l app=<deployment-label>
9. 查看Deployment的事件:
kubectl describe deployment <deployment-name> | grep -i events
10. 查看Deployment的更新进度:
kubectl rollout status deployment <deployment-name>
11. 扩大或缩小副本数量:
kubectl scale deployment <deployment-name> --replicas=3
12. 删除Deployment:
kubectl delete deployment <deployment-name>
四. Service管理
service定义一种访问Pod的策略和抽象层,提供稳定的访问入口,实现服务发现与负载均衡;简单说service就是将pod端口暴露提供给其他pod或者外部访问。
1. 列出所有Services:
kubectl get service -o wide
#简写
kubectl get svc -o wide
2. 查看Service的详细信息:
kubectl describe service <service-name> -n <namespace>
3. 创建Service:
kubectl create service clusterip my-service --tcp=80:8080
4. 暴露Deployment为Service:
kubectl expose deployment <deployment-name> --type=LoadBalancer --port=80 --target-port=8080
#NodePort
kubectl expose deployment nginx --type=NodePort --port=8080
5. 编辑Service配置:
kubectl edit service <service-name> -n <namespace>
6. 更改Service类型:
kubectl patch service <service-name> -p '{"spec": {"type": "NodePort"}}'
7. 删除Service:
kubectl delete service <service-name> -n <namespace>
五. ConfigMap管理
用来存储配置数据,如应用的配置文件,以键值对形式挂载到Pod中,方便应用程序读取和分离配置与代码。
1. 创建ConfigMap:
kubectl create configmap <my-configmap> --from-literal=key1=value1
#简写
kubectl create cm <my-configmap> --from-literal=key1=value1
2. 查看ConfigMap
kubectl get configmaps
#查看详情
kubectl describe cm my-cm
3. 删除ConfigMap:
kubectl delete configmap <my-configmap>
六. PV/PVC管理
Persistent Volumes (PVs) 提供了持久化的存储资源,PV类型多种多样,支持不同的存储后端,如本地存储、网络存储(如NFS、Ceph等)。
1. 查看所有的PV:
kubectl get pv
2. 查看PV详细信息:
kubectl describe pv <pv-name>
3. 列出所有PVC:
kubectl get pvc
4. 查看PVC详细信息:
kubectl describe pvc <pvc-name>
由于pv和pvc都需要从yaml中创建,涉及到不同版本不同的yaml,因此这里将不再贴出yaml配置,后续的版本会单独一篇来讲解pv/pvc。