k8s常用命令
k8s常用命令
xiaoxin-top集群管理
1. 查看集群节点状态:
1 | $kubectl get nodes |
2. 查看集群资源使用情况:
1 | $kubectl top nodes |
3. 查看集群信息:
1 | $kubectl cluster-info |
4. 获取节点详细信息:
1 | $kubectl describe node <node-name> |
5. 给节点打标签:
1 | $kubectl label nodes <node-name> key=value |
6. 取消节点标签:
1 | $kubectl label nodes <node-name> key- |
7. 查看所有命名空间
1 | $kubectl get ns |
8. 查看命名空间信息:
1 | $kubectl describe namespace <namespace-name> |
Pod管理
k8s中最小的可部署的计算单元,用来封装一个或多个紧密相关的容器应用,共享存储和网络。
1. 列出所有Pod:
1 | $kubectl get pods #无命名空间情况下 |
2. 查看特定Pod的日志:
1 | $kubectl logs <pod-name> -n <namespace> #打印当前日志 |
3. 运行一个临时的Pod:
1 | $kubectl run my-pod --image=nginx |
4. 进入正在运行的Pod:
1 | $kubectl exec -it <pod-name> -n <namespace> -- /bin/bash |
5. 查看特定Pod的详细信息:
1 | $kubectl describe pod <pod-name> -n <namespace> |
6. 删除Pod:
1 | $kubectl delete pod <pod-name> -n <namespace> |
7. 查看Pod事件:
1 | $kubectl describe pod <pod-name> -n <namespace> | grep -i events |
Deployment管理
用于管理Pod的声明式更新,自动处理Pod的创建、升级、回滚等,保证预期状态。
1. 列出所有Deployments:
1 | $kubectl get deployments |
2. 查看特定Deployment的详细信息:
1 | $kubectl describe deployment <deployment-name> -n <namespace> |
3. 创建Deployment:
1 | $kubectl create deployment <deployment-name> --image=<container-image> |
4. 更新Deployment中的容器镜像:
1 | $kubectl set image deployment/<deployment-name> <container-name>=<new-container-image> -n <namespace> |
5. 回滚Deployment到上一个版本:
1 | $kubectl rollout undo deployment/my-deployment -n <namespace> |
6. 查看Deployment的更新历史:
1 | $kubectl rollout history deployment <deployment-name> -n <namespace> |
7. 回滚到指定版本的Deployment:
1 | # 假设要回滚到第3次修订版: |
8. 查看Deployment指定标签下的的Pods状态
1 | $kubectl get pods -l app=<deployment-label> -n <namespace> |
9. 查看Deployment的事件:
1 | $kubectl describe deployment <deployment-name> -n <namespace> | grep -i events |
10. 监控Deployment的更新进度:
1 | $kubectl rollout status deployment <deployment-name> -n <namespace> |
11. 扩大或缩小副本数量:
1 | $kubectl scale deployment <deployment-name> -n <namespace> --replicas=5 |
12. 删除Deployment:
1 | $kubectl delete deployment <deployment-name> -n <namespace> |
Service管理
定义一种访问Pod的策略和抽象层,提供稳定的访问入口,实现服务发现与负载均衡。
1. 列出所有Services:
1 | $kubectl get services <-n> <namespace> |
2. 查看特定Service的详细信息:
1 | $kubectl describe service <service-name> -n <namespace> |
3. 创建Service:
可以直接通过命令行或者YAML文件创建:
1 | $kubectl create service clusterip my-service --tcp=80:8080 |
4. 暴露Deployment为Service:
自动创建Service指向Deployment的所有Pods:
1 | $kubectl expose deployment <deployment-name> <-n> <namespace> --type=LoadBalancer --port=80 --target-port=8080 |
5. 编辑Service配置:
1 | $kubectl edit service <service-name> -n <namespace> |
6. 更改Service类型:
1 | $kubectl patch service <service-name> <-n> <namespace> -p '{"spec": {"type": "NodePort"}}' |
7. 删除Service:
1 | $kubectl delete service <service-name> -n <namespace> |
8. 创建ClusterIP类型的service:
ClusterIP为Service分配一个仅集群内部可访问的IP地址。
1 | # 命令行创建: |
基于server.yaml文件创建service
kubectl apply -f server.yaml
1 | apiVersion: v1 |
9. 创建NodePort类型的service:
NodePort会在每个节点上开放一个静态端口,供外部访问集群内部的服务。
1 |
|
10. 创建LoadBalancer类型的service:
适用于需要云提供商的负载均衡器来暴露服务的情况。
1 | # 命令行创建: |
PV/PVC管理
Persistent Volumes (PVs) 提供了持久化的存储资源,PV类型多种多样,支持不同的存储后端,如本地存储、网络存储(如NFS、GlusterFS、Ceph等)。
1. 列出所有PV:
1 | $kubectl get pv -n <namespace> |
2. 查看PV详细信息:
1 | $kubectl describe pv <pv-name> -n <namespace> |
3. 创建本地PV:
1 |
|
4. 创建NFS PV:
1 | apiVersion: v1 |
5. 列出所有PVC:
1 | $kubectl get pvc -n <namespace> |
6. 查看PVC详细信息:
1 | $kubectl describe pvc <pvc-name> -n <namespace> |
7. 创建PVC:
1 | apiVersion: v1 |
ConfigMap管理
用来存储配置数据,如应用的配置文件,以键值对形式挂载到Pod中,方便应用程序读取和分离配置与代码。
1. 创建ConfigMap:
1 | #文件名当键,文件内容当值 |
2. 查看ConfigMap
1 | $kubectl get configmaps -n <namespace> |
3. 删除ConfigMap:
1 | $kubectl delete configmap <my-configmap> -n <namespace> |