Kubernetes 常用操作大全:全面掌握 K8s 基础与进阶命令

Kubernetes (简称 K8s)作为一种开源的容器编排工具,已经成为现代分布式系统中的标准。它的强大之处在于能够自动化应用程序的部署、扩展和管理。在使用 Kubernetes 的过程中,熟悉常用操作对于高效地管理集群资源至关重要。本文将详细介绍 Kubernetes 的各种常用操作,帮助你在管理集群时应对各种场景。

目录

  1. Kubernetes 基本概念
  2. 集群操作
    • 查看节点信息
    • 管理节点
  3. Pod 的基本操作
    • 创建 Pod
    • 查看 Pod
    • 删除 Pod
  4. Service 操作
    • 创建 Service
    • 查看 Service
  5. Deployment 的操作
    • 创建 Deployment
    • 更新和回滚 Deployment
    • 缩容和扩容 Deployment
  6. 使用 ConfigMap 和 Secret
  7. 管理 Namespaces
  8. Helm 基本操作
  9. Kubernetes 日常排错与调试
  10. 小结

1. Kubernetes 基本概念

Kubernetes 是用于自动部署、扩展和管理容器化应用程序的平台。它包括以下核心概念:

  • Node:Kubernetes 集群中的一个节点(物理或虚拟机)。
  • Pod:Kubernetes 中最小的部署单元,一个 Pod 通常包含一个或多个容器。
  • Service:用于将请求路由到 Pod 的负载均衡器。
  • Deployment:用于声明和管理应用的部署方式。

2. 集群操作

2.1 查看节点信息

要查看 Kubernetes 集群中所有节点的信息,可以使用以下命令:

bash 复制代码
kubectl get nodes
  • 显示集群中所有节点的状态和相关信息。
2.2 管理节点
  • 标记节点:可以为节点添加标记,以便调度器做出调度决策。例如:

    bash 复制代码
    kubectl label nodes <node-name> disktype=ssd
  • 污点节点:标记节点为不可调度,防止新的 Pod 被调度到该节点上:

    bash 复制代码
    kubectl taint nodes <node-name> key=value:NoSchedule

3. Pod 的基本操作

3.1 创建 Pod

可以通过编写 YAML 文件或直接使用命令创建 Pod。以下是通过 YAML 创建 Pod 的示例文件 pod.yaml

yaml 复制代码
apiVersion: v1
kind: Pod
metadata:
  name: nginx-pod
  labels:
    app: nginx
spec:
  containers:
  - name: nginx
    image: nginx:1.21
    ports:
    - containerPort: 80

使用以下命令应用 YAML 文件:

bash 复制代码
kubectl apply -f pod.yaml
3.2 查看 Pod
  • 列出所有 Pod

    bash 复制代码
    kubectl get pods
  • 获取 Pod 的详细信息

    bash 复制代码
    kubectl describe pod <pod-name>
3.3 删除 Pod

要删除一个 Pod,可以使用 delete 命令:

bash 复制代码
kubectl delete pod <pod-name>

4. Service 操作

4.1 创建 Service

Service 允许不同 Pod 之间相互通信,或暴露应用程序以供外部访问。以下是创建一个 ClusterIP 类型 Service 的 YAML 文件 service.yaml

yaml 复制代码
apiVersion: v1
kind: Service
metadata:
  name: nginx-service
spec:
  selector:
    app: nginx
  ports:
    - protocol: TCP
      port: 80
      targetPort: 80
  type: ClusterIP

使用以下命令应用 YAML 文件:

bash 复制代码
kubectl apply -f service.yaml
4.2 查看 Service
  • 列出所有 Service

    bash 复制代码
    kubectl get services
  • 查看特定 Service 的详细信息

    bash 复制代码
    kubectl describe service <service-name>

5. Deployment 的操作

5.1 创建 Deployment

Deployment 是用于管理应用程序的声明式更新。以下是创建一个 Nginx Deployment 的 YAML 文件 deployment.yaml

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:1.21
        ports:
        - containerPort: 80

使用以下命令创建 Deployment:

bash 复制代码
kubectl apply -f deployment.yaml
5.2 更新和回滚 Deployment
  • 滚动更新

    bash 复制代码
    kubectl set image deployment/nginx-deployment nginx=nginx:1.22
  • 回滚 Deployment

    bash 复制代码
    kubectl rollout undo deployment/nginx-deployment
5.3 缩容和扩容 Deployment
  • 扩容至 5 个副本

    bash 复制代码
    kubectl scale deployment/nginx-deployment --replicas=5

6. 使用 ConfigMap 和 Secret

ConfigMapSecret 用于管理配置数据和敏感信息。

  • 创建 ConfigMap

    bash 复制代码
    kubectl create configmap my-config --from-literal=key1=value1
  • 创建 Secret

    bash 复制代码
    kubectl create secret generic my-secret --from-literal=username=admin --from-literal=password=secret

7. 管理 Namespaces

Namespaces 用于将集群中的资源分隔开,以便更好地管理和隔离。

  • 查看所有 Namespaces

    bash 复制代码
    kubectl get namespaces
  • 创建 Namespace

    bash 复制代码
    kubectl create namespace mynamespace
  • 删除 Namespace

    bash 复制代码
    kubectl delete namespace mynamespace

8. Helm 基本操作

Helm 是 Kubernetes 的包管理工具,用于简化应用的部署。

  • 安装 Chart

    bash 复制代码
    helm install my-release stable/nginx
  • 列出所有 Release

    bash 复制代码
    helm list
  • 卸载 Release

    bash 复制代码
    helm uninstall my-release

9. Kubernetes 日常排错与调试

  • 查看 Pod 日志

    bash 复制代码
    kubectl logs <pod-name>
  • 进入 Pod 进行调试

    bash 复制代码
    kubectl exec -it <pod-name> -- /bin/bash
  • 查看事件:查看集群中的所有事件,以排查可能的问题。

    bash 复制代码
    kubectl get events

10. 小结

本文详细介绍了 Kubernetes 的各种常用操作,从基础的 节点管理Pod 操作 ,到进阶的 Deployment 管理Service 配置ConfigMap 和 Secret 使用,以及 Helm 的基本用法。掌握这些操作,能够帮助开发者和运维人员在日常工作中更加高效地管理 K8s 集群。

Kubernetes 的丰富功能使得容器编排变得高效而灵活,但也对用户提出了更高的要求。熟练使用这些操作命令,可以让你在日常维护和调试 Kubernetes 集群时更加得心应手,为企业提供稳定和高效的容器管理服务。

相关推荐
阿噜噜小栈34 分钟前
最新国内可用的Docker镜像加速器地址收集
运维·笔记·docker·容器
云上艺旅34 分钟前
K8S学习之基础六十八:Rancher创建deployments资源
学习·云原生·容器·kubernetes·rancher
rider18934 分钟前
【4】搭建k8s集群系列(二进制部署)之安装master节点服务(kube-apiserver)
云原生·容器·kubernetes
海鸥812 小时前
podman和与docker的比较 及podman使用
docker·容器·podman
GreenMountainEcho8 小时前
Kubernetes 入门篇之 Node 安装与部署
云原生·容器·kubernetes
zyk_5209 小时前
Docker desktop如何汉化
运维·docker·容器
韭菜盖饭9 小时前
解决Docker端口映射后外网无法访问的问题
运维·docker·容器
jingjingjing111110 小时前
笔记:docker安装(ubuntu 20.04)
笔记·docker·容器
ghostwritten10 小时前
Rancher Backup
kubernetes·rancher
qq_3392822311 小时前
docker之network
运维·docker·容器