K8S 常用命令全解析:高效管理容器化集群
创作时间:
作者:
@小白创作中心
K8S 常用命令全解析:高效管理容器化集群
引用
CSDN
1.
https://m.blog.csdn.net/2401_86610558/article/details/144620942
K8S 常用命令全解析:高效管理容器化集群
一、引言
Kubernetes(K8S)作为强大的容器编排平台,其丰富的命令行工具(kubectl)为用户提供了便捷的方式来管理集群中的各种资源。熟练掌握 K8S 常用命令对于开发人员和运维人员至关重要,能够有效提高容器化应用的部署、监控与维护效率。本文将详细介绍一些 K8S 常用命令及其使用案例。
二、基础资源操作命令
(一)kubectl create
功能:用于创建 K8S 资源对象,如 Pod、Deployment、Service 等。
使用案例:
- 创建一个简单的 Nginx Deployment。首先编写一个
nginx-deployment.yaml文件:
apiVersion: apps/v1
kind: Deployment
metadata:
name: nginx-deployment
spec:
replicas: 3
selector:
matchLabels:
app: nginx
template:
metadata:
labels:
app: nginx
spec:
containers:
- name: nginx
image: nginx:latest
ports:
- containerPort: 80
- 然后使用命令创建:
kubectl create -f nginx-deployment.yaml
- 此命令会在集群中创建一个名为
nginx-deployment的 Deployment,包含 3 个运行 Nginx 容器的副本。
(二)kubectl get
功能:获取集群中各种资源对象的信息。
使用案例:
- 获取所有的 Deployment 信息:
kubectl get deployments
- 输出会显示 Deployment 的名称、就绪副本数、可用副本数、创建时间等信息,例如:
NAME READY UP-TO-DATE AVAILABLE AGE
nginx-deployment 3/3 3 3 10m
- 获取所有的 Pod 信息:
kubectl get pods
- 可以看到每个 Pod 的名称、所在节点、状态、重启次数等,如:
NAME READY STATUS RESTARTS AGE
nginx-deployment-5f7d9849f8-4h2g9 1/1 Running 0 10m
nginx-deployment-5f7d9849f8-6z7t8 1/1 Running 0 10m
nginx-deployment-5f7d9849f8-9v5b6 1/1 Running 0 10m
(三)kubectl describe
功能:查看资源对象的详细信息,包括资源的状态、事件、关联的其他资源等。
使用案例:
- 查看某个 Deployment 的详细信息:
kubectl describe deployment nginx-deployment
- 输出会包含该 Deployment 的详细配置信息,如选择器、副本数、更新策略等,以及相关的事件信息,例如:
Name: nginx-deployment
Namespace: default
CreationTimestamp: Fri, 20 Dec 2024 14:30:00 UTC
Labels: app=nginx
Annotations: deployment.kubernetes.io/revision: 1
Selector: app=nginx
Replicas: 3 desired | 3 updated | 3 total | 3 available | 0 unavailable
StrategyType: RollingUpdate
MinReadySeconds: 0
RollingUpdateStrategy: 25% max unavailable, 25% max surge
Pod Template:
Labels: app=nginx
Containers:
nginx:
Image: nginx:latest
Port: 80/TCP
Host Port: 0/TCP
Environment: <none>
Mounts: <none>
Volumes: <none>
Conditions:
Type Status Reason
---- ------ ------
Available True MinimumReplicasAvailable
Progressing True NewReplicaSetAvailable
OldReplicaSets: <none>
NewReplicaSet: nginx-deployment-5f7d9849f8 (3/3 replicas created)
Events:
Type Reason Age From Message
---- ------ ---- ---- -------
Normal ScalingReplicaSet 10m deployment-controller Scaled up replica set nginx-deployment-5f7d9849f8 to 3
(四)kubectl delete
功能:删除集群中的资源对象。
使用案例:
- 删除之前创建的
nginx-deployment:
kubectl delete deployment nginx-deployment
- 执行后,该 Deployment 及其关联的 Pod 都会被删除。
三、资源伸缩与更新命令
(一)kubectl scale
功能:对资源对象进行伸缩,如调整 Deployment 的副本数。
使用案例:
- 将某个 Deployment 的副本数增加到 5:
kubectl scale deployment nginx-deployment --replicas 5
- 可以通过
kubectl get pods看到新的 Pod 被创建,直到达到 5 个副本。
(二)kubectl set
功能:更新资源对象的某些属性,如更新 Deployment 中的容器镜像。
使用案例:
- 更新
nginx-deployment中的 Nginx 镜像为nginx:1.21:
kubectl set image deployment nginx-deployment nginx=nginx:1.21
- Kubernetes 会自动采用滚动更新的方式,逐个替换旧版本的容器,在更新过程中可以使用
kubectl rollout status deployment nginx-deployment查看更新进度。
(三)kubectl rollout
功能:管理资源对象的滚动更新和回滚操作。
使用案例:
- 查看 Deployment 的更新状态:
kubectl rollout status deployment nginx-deployment
- 如果更新过程中出现问题,回滚到上一个版本:
kubectl rollout undo deployment nginx-deployment
四、网络与服务相关命令
(一)kubectl expose
功能:将一个资源对象(如 Deployment)暴露为一个 Service,以便在集群内部或外部访问。
使用案例:
- 将
nginx-deployment暴露为一个 ClusterIP 类型的 Service:
kubectl expose deployment nginx-deployment --port 80 --targetPort 80 --type ClusterIP
- 这样就创建了一个名为
nginx-deployment的 Service,集群内部其他资源可以通过该 Service 的 ClusterIP 访问 Nginx 服务。
(二)kubectl get services
功能:获取集群中 Service 的信息。
使用案例:
- 查看所有 Service 的信息:
kubectl get services
- 输出会显示 Service 的名称、类型、ClusterIP、端口等信息,例如:
NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE
nginx-deployment ClusterIP 10.96.196.230 <none> 80/TCP 5m
五、集群与节点操作命令
(一)kubectl cluster-info
功能:查看集群的信息,如控制平面的地址等。
使用案例:
kubectl cluster-info
- 输出可能类似:
Kubernetes master is running at https://192.168.1.100:6443
CoreDNS is running at https://192.168.1.100:6443/api/v1/namespaces/kube-system/services/kube-dns:dns/proxy
(二)kubectl get nodes
功能:获取集群中节点的信息。
使用案例:
kubectl get nodes
- 可以看到节点的名称、状态、角色、版本等信息,例如:
NAME STATUS ROLES AGE VERSION
node1 Ready <none> 1d v1.20.0
node2 Ready <none> 1d v1.20.0
(三)kubectl drain
功能:将节点设置为不可调度状态,并驱逐该节点上的 Pod,以便对节点进行维护或升级。
使用案例:
- 准备对
node1进行维护,先将其设置为不可调度并驱逐 Pod:
kubectl drain node1
- 执行后,
node1上的 Pod 会被迁移到其他可用节点,然后可以安全地对node1进行操作,如升级操作系统或重启节点。操作完成后,使用kubectl uncordon node1恢复节点的可调度状态。
六、总结
通过对这些 K8S 常用命令及其使用案例的学习,能够初步掌握在 Kubernetes 集群中进行资源管理、应用部署与更新、网络配置以及集群维护等操作的基本技能。在实际应用中,这些命令将是构建、管理和维护容器化应用平台的有力工具,随着对 K8S 深入学习和实践,还会接触到更多高级命令和用法,进一步提升容器编排与管理的能力。
热门推荐
核桃皮的逆袭:从“弃儿”到养生明星
梵蒂冈圣彼得大教堂游玩攻略:门票、参观路线、周边美食景点全攻略
别信醋泡鸡蛋能降压,均衡饮食运动服药才是正道
苹果手机定位功能详解:实用技巧与隐私保护注意事项
瑞士圣诞购物攻略:手表、巧克力、军刀不可错过!
柴胡:平肝舒络丸的关键成分,兼具多效药理作用
这部电影,启发了无数中国电影人
生抽控量,健康美味两不误
新手养鱼,养啥鱼好呢?
多家企业布局富锂锰基,固态电池产业化迎来新突破
归家的路:林玉霞如何用坚韧精神克服家暴,重建幸福
五一打卡南澳岛南山寺:千年古刹的文化盛宴
233表情包:一个数字如何成为网络文化的符号
电影,又走到了一个十字路口——2024中国电影产业分析
2024金融安全峰会:AI成最大“双刃剑”,专家详解应对之策
新手养鱼如何避坑?好方法值得看!
2024年固态电池产业化提速,富锂锰基材料迎来发展机遇
南澳岛探秘:青澳湾、黄花山的神秘传说
哈尔滨孙凤芹老师教你用八字破解婚姻迷雾
亚马逊MK30无人机亮相意大利,完成海外首飞
职场识人术大揭秘:七大读心术让你洞悉人心
全球GDP或损失4%:气候变化引发六大经济风险
加州冬季山火致5死1100栋房屋被毁,拜登取消出访
八字命理揭秘婚姻幸福秘诀
无花果养生汤,让你秋冬不生病!
四川窦圌山:三座丹崖峰,四季不同景,还有惊险铁索桥
告别计算难题,21个速算技巧让孩子成为数学达人
确保今年投用!重庆东站建设全面提速
助力现代化城市建设,重庆市政院引领市政交通发展格局
劳逸结合:高效工作与幸福生活的平衡之道