🐳 Kubernetes 命令:面向 DevOps 工程师的入门到高级

2025-06-07

🐳 Kubernetes 命令:面向 DevOps 工程师的入门到高级

介绍

Kubernetes,也称为 K8s,是一个强大的开源系统,用于自动化部署、扩展和管理容器化应用程序。无论您是 Kubernetes 新手还是经验丰富的用户,掌握其命令对于高效管理集群都至关重要。本文提供了从入门到高级的 Kubernetes 命令综合指南。

🎯 关键概念

在深入研究命令之前,让我们先回顾一下 Kubernetes 的一些基本概念:

  • Pod:最小、最简单的 Kubernetes 对象,代表集群中正在运行的进程的单个实例。
  • Node:Kubernetes 中的工作机器,可以是虚拟机,也可以是物理机。
  • 命名空间:一种在多个用户之间划分集群资源的方式。
  • 部署:管理复制应用程序的更高级别的抽象,确保指定数量的副本正在运行。
  • 服务:定义一组逻辑 pod 以及访问它们的策略的抽象。
  • ConfigMap 和 Secret:将配置数据注入应用程序的机制。

🏁 初学者命令

1. 集群信息

获取集群信息

kubectl cluster-info
Enter fullscreen mode Exit fullscreen mode

显示集群中运行的 Kubernetes 主服务器和服务的地址。

获取节点

kubectl get nodes
Enter fullscreen mode Exit fullscreen mode

列出集群中的所有节点。

2. 命名空间管理

列出命名空间

kubectl get namespaces
Enter fullscreen mode Exit fullscreen mode

显示集群中的所有命名空间。

创建命名空间

kubectl create namespace my-namespace
Enter fullscreen mode Exit fullscreen mode

创建一个新的命名空间。

删除命名空间

kubectl delete namespace my-namespace
Enter fullscreen mode Exit fullscreen mode

删除指定的命名空间。

3. Pod 管理

列出 Pod

kubectl get pods
kubectl get pods -n my-namespace
Enter fullscreen mode Exit fullscreen mode

列出默认命名空间或指定命名空间中的所有 pod。

描述 Pod

kubectl describe pod my-pod
Enter fullscreen mode Exit fullscreen mode

显示有关特定 pod 的详细信息。

创建 Pod

kubectl run my-pod --image=nginx
Enter fullscreen mode Exit fullscreen mode

创建运行指定容器镜像的新 pod。

删除 Pod

kubectl delete pod my-pod
Enter fullscreen mode Exit fullscreen mode

删除指定的 pod。

4.部署管理

列出部署

kubectl get deployments
kubectl get deployments -n my-namespace
Enter fullscreen mode Exit fullscreen mode

列出默认命名空间或指定命名空间中的所有部署。

创建部署

kubectl create deployment my-deployment --image=nginx
Enter fullscreen mode Exit fullscreen mode

使用指定的容器映像创建新的部署。

删除部署

kubectl delete deployment my-deployment
Enter fullscreen mode Exit fullscreen mode

删除指定的部署。

5.服务管理

列表服务

kubectl get services
kubectl get services -n my-namespace
Enter fullscreen mode Exit fullscreen mode

列出默认命名空间或指定命名空间中的所有服务。

创建服务

kubectl expose deployment my-deployment --type=LoadBalancer --name=my-service
Enter fullscreen mode Exit fullscreen mode

创建新服务来公开部署。

删除服务

kubectl delete service my-service
Enter fullscreen mode Exit fullscreen mode

删除指定的服务。

🚀 中级命令

1. ConfigMap 和 Secret 管理

列出 ConfigMap

kubectl get configmaps
kubectl get configmaps -n my-namespace
Enter fullscreen mode Exit fullscreen mode

列出默认命名空间或指定命名空间中的所有 ConfigMap。

创建 ConfigMap

kubectl create configmap my-config --from-literal=key1=value1 --from-literal=key2=value2
Enter fullscreen mode Exit fullscreen mode

根据文字值创建一个新的 ConfigMap。

列出秘密

kubectl get secrets
kubectl get secrets -n my-namespace
Enter fullscreen mode Exit fullscreen mode

列出默认命名空间或指定命名空间中的所有机密。

创建秘密

kubectl create secret generic my-secret --from-literal=username=admin --from-literal=password=secret
Enter fullscreen mode Exit fullscreen mode

根据文字值创建一个新的秘密。

2. 扩展应用程序

规模部署

kubectl scale deployment my-deployment --replicas=3
Enter fullscreen mode Exit fullscreen mode

将部署扩展到指定数量的副本。

3.更新应用程序

更新部署

kubectl set image deployment/my-deployment nginx=nginx:1.19.1
Enter fullscreen mode Exit fullscreen mode

更新部署中的容器映像。

推出状态

kubectl rollout status deployment/my-deployment
Enter fullscreen mode Exit fullscreen mode

显示部署的推出状态。

回滚部署

kubectl rollout undo deployment/my-deployment
Enter fullscreen mode Exit fullscreen mode

将部署回滚到上一修订版本。

4.监控和日志记录

查看 Pod 日志

kubectl logs my-pod
Enter fullscreen mode Exit fullscreen mode

显示指定 Pod 的日志。

查看之前的 Pod 日志

kubectl logs my-pod --previous
Enter fullscreen mode Exit fullscreen mode

显示指定 pod 的先前实例的日志。

获取事件

kubectl get events
kubectl get events -n my-namespace
Enter fullscreen mode Exit fullscreen mode

列出默认命名空间或指定命名空间中的所有事件。

5.资源管理

描述节点

kubectl describe node my-node
Enter fullscreen mode Exit fullscreen mode

显示指定节点的详细信息。

标签节点

kubectl label nodes my-node disktype=ssd
Enter fullscreen mode Exit fullscreen mode

向节点添加标签。

注释资源

kubectl annotate pod my-pod description="my example pod"
Enter fullscreen mode Exit fullscreen mode

向资源添加注释。

6. 网络政策

创建网络策略

apiVersion: networking.k8s.io/v1
kind: NetworkPolicy
metadata:
  name: allow-nginx
  namespace: my-namespace
spec:
  podSelector:
    matchLabels:
      app: nginx
  policyTypes:
  - Ingress
  ingress:
  - from:
    - podSelector:
        matchLabels:
          app: frontend
Enter fullscreen mode Exit fullscreen mode

应用网络策略:

kubectl apply -f network-policy.yaml
Enter fullscreen mode Exit fullscreen mode

🧠 高级命令

1. 高级 Pod 管理

调试舱

kubectl debug my-pod --image=busybox --target=my-container
Enter fullscreen mode Exit fullscreen mode

通过在 pod 中创建新的调试容器来调试正在运行的 pod。

端口转发

kubectl port-forward my-pod 8080:80
Enter fullscreen mode Exit fullscreen mode

将本地端口转发到 pod 上的端口。

2. 高级节点管理

Cordon 节点

kubectl cordon my-node
Enter fullscreen mode Exit fullscreen mode

将节点标记为不可调度。

漏极节点

kubectl drain my-node --ignore-daemonsets
Enter fullscreen mode Exit fullscreen mode

在维护之前安全地从节点中驱逐所有 pod。

Uncordon 节点

kubectl uncordon my-node
Enter fullscreen mode Exit fullscreen mode

将节点标记为可调度。

3. 资源配额和限制

创建资源配额

apiVersion: v1
kind: ResourceQuota
metadata:
  name: compute-resources
  namespace: my-namespace
spec:
  hard:
    pods: "10"
    requests.cpu: "4"
    requests.memory: 16Gi
    limits.cpu: "10"
    limits.memory: 32Gi
Enter fullscreen mode Exit fullscreen mode

应用资源配额:

kubectl apply -f resource-quota.yaml
Enter fullscreen mode Exit fullscreen mode

4. 自定义资源和 CRD

创建自定义资源定义

apiVersion: apiextensions.k8s.io/v1
kind: CustomResourceDefinition
metadata:
  name: crontabs.stable.example.com
spec:
  group: stable.example.com
  versions:
    - name: v1
      served: true
      storage: true
      schema:
        openAPIV3Schema:
          type: object
          properties:
            spec:
              type: object
              properties:
                cronSpec:
                  type: string
                image:
                  type: string
                replicas:
                  type: integer
  scope: Namespaced
  names:
    plural: crontabs
    singular: crontab
    kind: CronTab
    shortNames:
    - ct
Enter fullscreen mode Exit fullscreen mode

应用 CRD:

kubectl apply -f crd.yaml
Enter fullscreen mode Exit fullscreen mode

创建自定义资源

apiVersion: stable.example.com/v1
kind: CronTab
metadata:
  name: my-new-cron-object
  namespace: my-namespace
spec:
  cronSpec: "* * * * */5"
  image: my-cron-image
  replicas: 3
Enter fullscreen mode Exit fullscreen mode

应用自定义资源:

kubectl apply -f custom-resource.yaml
Enter fullscreen mode Exit fullscreen mode

5. Helm 用于 Kubernetes 包管理

安装 Helm

按照Helm 官方网站上的 Helm 安装说明进行操作

添加 Helm 存储库

helm repo add stable https://charts.helm.sh/stable
Enter fullscreen mode Exit fullscreen mode

安装 Helm Chart

helm install my-release stable/nginx
Enter fullscreen mode Exit fullscreen mode

列出 Helm 版本

helm list
Enter fullscreen mode Exit fullscreen mode

升级 Helm 版本

helm upgrade my-release stable/nginx
Enter fullscreen mode Exit fullscreen mode

卸载 Helm Release

helm uninstall my-release
Enter fullscreen mode Exit fullscreen mode

📊 最佳实践

使用命名空间

用于隔离

  • 按命名空间组织资源,以便更好地管理和访问控制。

标签资源

  • 使用标签来有效地组织和选择资源。

监控和记录

  • 持续监控您的集群并收集日志以进行故障排除和性能分析。

使用脚本实现自动化

  • 使用脚本自动执行重复性任务并确保一致性。

保护您的集群

  • 实施 RBAC、网络策略和安全访问控制来保护您的集群。

🚀 结论

掌握从入门到高级的 Kubernetes 命令,对于 DevOps 工程师有效地管理和排除集群故障至关重要。这份全面的指南可作为您探索 Kubernetes 环境的宝贵参考。遵循最佳实践并利用这些命令,您可以确保 Kubernetes 设置稳健高效。

祝您集群愉快! 🎉


感谢您阅读我的博客...:)

©版权所有ProDevOpsGuy

图片描述
加入我们的 电报社区||关注我 获取更多 DevOps 和云内容

文章来源:https://dev.to/prodevopsguytech/kubernetes-commands-for-devops-engineers-124o
PREV
开发人员的 SQL 注入 它是什么 如何攻击 盲 SQLi 碎片化 SQLi 使用 sqlmap 自动化防御
NEXT
DevOps 项目:DevOps 中的高级监控项目