Kubernetes 命令大全

Kubernetes 是一个强大的容器编排系统,而 kubectl 是与 Kubernetes 集群交互的核心命令行工具。本命令大全旨在提供一个清晰、全面的 Kubernetes 命令参考,帮助您高效管理 Kubernetes 集群。

基本概念与命令概述

什么是 Kubernetes?

Kubernetes 是一个开源的容器编排平台,用于自动化应用程序的部署、扩展和管理。它提供了强大的功能来管理容器化应用的生命周期。

kubectl 简介

kubectl 是 Kubernetes 的命令行工具,用于与 Kubernetes 集群交互。它支持多种操作,包括创建、更新、删除和查询集群资源。

命令格式与基本用法

基本命令格式:

kubectl [command] [subcommand] [flags]

常用选项:

-h 或 --help:显示命令帮助信息

-v 或 --verbose:启用详细输出

-n 或 --namespace:指定命名空间

核心资源命令

1. Pods(基本构建块)

Pod 是 Kubernetes 的最小部署单位,代表单个容器或一组容器。

创建 Pod:

kubectl create -f pod.yaml  # 从 YAML 文件创建

kubectl run mypod --image=nginx  # 使用指定镜像创建

查看 Pod:

kubectl get pods  # 列出所有 Pod

kubectl get pod mypod  # 查看特定 Pod

kubectl describe pod mypod  # 查看 Pod 详细信息

Pod 日志与调试:

kubectl logs mypod  # 查看 Pod 日志

kubectl exec -it mypod -- /bin/sh  # 进入 Pod

2. Replicasets(确保 Pod 副本数量)

Replicaset 确保指定数量的 Pod 副本始终处于运行状态。

创建与管理:kubectl create -f replicaset.yaml  # 从 YAML 文件创建

kubectl get rs  # 列出所有 Replicasets

kubectl describe rs myrs  # 查看特定 Replicaset

kubectl scale rs myrs --replicas=3  # 更新副本数量

3. Deployments(Pod 的声明式更新)

Deployment 提供了更高级的 Pod 管理功能,支持声明式更新。

创建与管理:

kubectl create -f deployment.yaml  # 从 YAML 文件创建

kubectl create deployment mydeployment --image=nginx  # 使用指定镜像创建

kubectl get deploy  # 列出所有 Deployments

kubectl describe deploy mydeployment  # 查看特定 Deployment

更新与回滚:

kubectl set image deploy/mydeployment nginx=nginx:1.10  # 更新镜像

kubectl rollout undo deploy/mydeployment  # 回滚到之前版本

kubectl rollout status deploy/mydeployment  # 查看 Deployment 状态

4. Services(Pod 的网络访问)

Service 为 Pod 提供了稳定的网络访问点。

创建与管理:

kubectl create -f service.yaml  # 从 YAML 文件创建

kubectl create service clusterip myservice --tcp=80:80  # 创建 ClusterIP 服务

kubectl get services  # 列出所有 Services

kubectl describe service myservice  # 查看特定 Service

访问 Service:

kubectl port-forward svc/myservice 8080:80  # 本地端口转发

5. ConfigMaps(配置管理)

ConfigMap 用于存储应用程序的配置数据。

创建与管理:kubectl create configmap myconfigmap --from-file=config.properties  # 从文件创建

kubectl get configmaps  # 列出所有 ConfigMaps

kubectl describe configmap myconfigmap  # 查看特定 ConfigMap

6. Secrets(敏感数据管理)

Secret 用于存储敏感数据,如密码和密钥。

创建与管理:kubectl create secret generic mysecret --from-file=password.txt  # 从文件创建

kubectl get secrets  # 列出所有 Secrets

kubectl describe secret mysecret  # 查看特定 Secret

7. Namespaces(资源隔离)

Namespace 用于将集群资源逻辑隔离。

创建与管理:kubectl create namespace mynamespace  # 创建新 Namespace

kubectl get namespaces  # 列出所有 Namespaces

kubectl config set-context --current --namespace=mynamespace  # 切换 Namespace

常用操作命令

1. 集群管理命令

创建与查看集群:

kubeadm init  # 初始化新集群

kubectl cluster-info  # 查看集群状态

删除集群:

kubeadm reset  # 重置集群

2. 资源创建与管理

创建与更新资源:

kubectl create -f filename.yaml  # 创建资源

kubectl apply -f filename.yaml  # 更新资源

删除资源:

kubectl delete -f filename.yaml  # 删除资源

kubectl delete resourceType name  # 删除特定资源

3. 日志与调试

查看日志:kubectl logs -l app=myapp  # 查看所有相关 Pod 日志

journalctl -u kubelet  # 查看 kubelet 日志

journalctl -u docker  # 查看 docker 日志

4. 升级与回滚

升级集群:

kubeadm upgrade apply v1.10.0  # 升级集群

回滚集群:

kubeadm rollback  # 回滚集群

5. 滚动更新

设置滚动更新策略:kubectl patch deployment mydeployment -p '{"spec":{"strategy":{"type":"RollingUpdate","rollingUpdate":{"maxSurge":2,"maxUnavailable":1}}}}'  # 设置滚动更新策略

高级功能命令

1. 网络策略

网络策略用于控制 Pod 之间的网络流量。

创建与管理:kubectl create -f networkpolicy.yaml  # 从 YAML 文件创建

kubectl get networkpolicies  # 列出所有网络策略

2. 存储与持久化

PersistentVolume 和 PersistentVolumeClaim 用于持久化存储。

创建与管理:kubectl create -f pv.yaml  # 创建 PersistentVolume

kubectl create -f pvc.yaml  # 创建 PersistentVolumeClaim

kubectl get pv  # 列出所有 PersistentVolume

kubectl get pvc  # 列出所有 PersistentVolumeClaim

3. 自动扩展

HorizontalPodAutoscaler 根据负载自动调整 Pod 数量。

创建与管理:kubectl create -f hpa.yaml  # 创建 HorizontalPodAutoscaler

kubectl get hpa  # 列出所有 HorizontalPodAutoscaler

4. 监控与告警

Kubernetes 支持多种监控和告警解决方案,如 Prometheus 和 Grafana。

安装与配置:

根据具体工具的文档执行安装和配置步骤。

5. 安全与认证

RBAC(基于角色的访问控制)和认证策略用于管理集群的安全性。

设置 RBAC 策略:

kubectl create -f rbac.yaml  # 从 YAML 文件创建

设置认证:

kubectl config set-credentials myuser --username=user --password=pass  # 设置认证信息

命令示例与模板

1. 基本部署示例

创建一个简单的 Nginx Deployment 和 Service:

# 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:1.10

        ports:

        - containerPort: 80

# service.yaml

apiVersion: v1

kind: Service

metadata:

  name: nginx-service

spec:

  selector:

    app: nginx

  ports:

    - protocol: TCP

      port: 80

      targetPort: 80

  type: ClusterIP

2. 模板化部署

使用变量替换创建模板化的 YAML 文件:

# template.yaml

apiVersion: apps/v1

kind: Deployment

metadata:

  name: {{ .name }}

spec:

  replicas: {{ .replicas }}

  selector:

    matchLabels:

      app: {{ .app }}

  template:

    metadata:

      labels:

        app: {{ .app }}

    spec:

      containers:

      - name: {{ .containerName }}

        image: {{ .image }}

        ports:

        - containerPort: {{ .port }}

使用工具如 envsubst 或 sed 进行变量替换。

常见问题与解决方案

1. 常见错误与解决方法

创建资源失败:

检查错误信息

验证 YAML 文件格式和语法

确保所有必需的字段都已提供

连接问题:

检查网络配置

确保所有节点都能相互通信

检查防火墙设置

配置错误:

验证配置文件

确保所有参数都正确

2. 命令使用技巧

使用别名简化命令:

alias k=kubectl  # 设置 k 为 kubectl 的别名

使用管道连接命令:

kubectl get pods | grep running  # 查看所有运行中的 Pod

脚本化命令:

创建自动化脚本执行常见任务,提高工作效率。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值