问小白 wenxiaobai
资讯
历史
科技
环境与自然
成长
游戏
财经
文学与艺术
美食
健康
家居
文化
情感
汽车
三农
军事
旅行
运动
教育
生活
星座命理

K8S 常用命令全解析:高效管理容器化集群

创作时间:
作者:
@小白创作中心

K8S 常用命令全解析:高效管理容器化集群

引用
CSDN
1.
https://m.blog.csdn.net/2401_86610558/article/details/144620942

K8S 常用命令全解析:高效管理容器化集群

一、引言

Kubernetes(K8S)作为强大的容器编排平台,其丰富的命令行工具(kubectl)为用户提供了便捷的方式来管理集群中的各种资源。熟练掌握 K8S 常用命令对于开发人员和运维人员至关重要,能够有效提高容器化应用的部署、监控与维护效率。本文将详细介绍一些 K8S 常用命令及其使用案例。

二、基础资源操作命令

(一)kubectl create

  1. 功能:用于创建 K8S 资源对象,如 Pod、Deployment、Service 等。

  2. 使用案例

  • 创建一个简单的 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

  1. 功能:获取集群中各种资源对象的信息。

  2. 使用案例

  • 获取所有的 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

  1. 功能:查看资源对象的详细信息,包括资源的状态、事件、关联的其他资源等。

  2. 使用案例

  • 查看某个 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

  1. 功能:删除集群中的资源对象。

  2. 使用案例

  • 删除之前创建的 nginx-deployment
kubectl delete deployment nginx-deployment
  • 执行后,该 Deployment 及其关联的 Pod 都会被删除。

三、资源伸缩与更新命令

(一)kubectl scale

  1. 功能:对资源对象进行伸缩,如调整 Deployment 的副本数。

  2. 使用案例

  • 将某个 Deployment 的副本数增加到 5:
kubectl scale deployment nginx-deployment --replicas 5
  • 可以通过 kubectl get pods 看到新的 Pod 被创建,直到达到 5 个副本。

(二)kubectl set

  1. 功能:更新资源对象的某些属性,如更新 Deployment 中的容器镜像。

  2. 使用案例

  • 更新 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

  1. 功能:管理资源对象的滚动更新和回滚操作。

  2. 使用案例

  • 查看 Deployment 的更新状态:
kubectl rollout status deployment nginx-deployment
  • 如果更新过程中出现问题,回滚到上一个版本:
kubectl rollout undo deployment nginx-deployment

四、网络与服务相关命令

(一)kubectl expose

  1. 功能:将一个资源对象(如 Deployment)暴露为一个 Service,以便在集群内部或外部访问。

  2. 使用案例

  • nginx-deployment 暴露为一个 ClusterIP 类型的 Service:
kubectl expose deployment nginx-deployment --port 80 --targetPort 80 --type ClusterIP
  • 这样就创建了一个名为 nginx-deployment 的 Service,集群内部其他资源可以通过该 Service 的 ClusterIP 访问 Nginx 服务。

(二)kubectl get services

  1. 功能:获取集群中 Service 的信息。

  2. 使用案例

  • 查看所有 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

  1. 功能:查看集群的信息,如控制平面的地址等。

  2. 使用案例

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

  1. 功能:获取集群中节点的信息。

  2. 使用案例

kubectl get nodes
  • 可以看到节点的名称、状态、角色、版本等信息,例如:
NAME       STATUS   ROLES    AGE   VERSION
node1      Ready    <none>   1d    v1.20.0
node2      Ready    <none>   1d    v1.20.0

(三)kubectl drain

  1. 功能:将节点设置为不可调度状态,并驱逐该节点上的 Pod,以便对节点进行维护或升级。

  2. 使用案例

  • 准备对 node1 进行维护,先将其设置为不可调度并驱逐 Pod:
kubectl drain node1
  • 执行后,node1 上的 Pod 会被迁移到其他可用节点,然后可以安全地对 node1 进行操作,如升级操作系统或重启节点。操作完成后,使用 kubectl uncordon node1 恢复节点的可调度状态。

六、总结

通过对这些 K8S 常用命令及其使用案例的学习,能够初步掌握在 Kubernetes 集群中进行资源管理、应用部署与更新、网络配置以及集群维护等操作的基本技能。在实际应用中,这些命令将是构建、管理和维护容器化应用平台的有力工具,随着对 K8S 深入学习和实践,还会接触到更多高级命令和用法,进一步提升容器编排与管理的能力。

© 2023 北京元石科技有限公司 ◎ 京公网安备 11010802042949号