Kubernetes 创建命令

KubernetesKubernetesBeginner
立即练习

💡 本教程由 AI 辅助翻译自英文原版。如需查看原文,您可以 切换至英文原版

介绍

kubectl create 命令是创建 Kubernetes 资源的重要工具。它使用 YAML 或 JSON 文件来定义诸如命名空间(namespaces)、部署(deployments)、服务(services)、密钥(secrets)和配置映射(ConfigMaps)等资源。在本实验中,你将逐步学习如何创建这些资源,并理解它们在 Kubernetes 中的作用。

通过本实验,你将:

  1. 启动并验证一个 Minikube 集群。
  2. 使用 kubectl create 创建并验证各种 Kubernetes 资源。

Skills Graph

%%%%{init: {'theme':'neutral'}}%%%% flowchart RL kubernetes(("`Kubernetes`")) -.-> kubernetes/BasicCommandsGroup(["`Basic Commands`"]) kubernetes(("`Kubernetes`")) -.-> kubernetes/AdvancedCommandsGroup(["`Advanced Commands`"]) kubernetes(("`Kubernetes`")) -.-> kubernetes/ClusterInformationGroup(["`Cluster Information`"]) kubernetes/BasicCommandsGroup -.-> kubernetes/get("`Get`") kubernetes/BasicCommandsGroup -.-> kubernetes/create("`Create`") kubernetes/AdvancedCommandsGroup -.-> kubernetes/apply("`Apply`") kubernetes/ClusterInformationGroup -.-> kubernetes/cluster_info("`Cluster Info`") subgraph Lab Skills kubernetes/get -.-> lab-8506{{"`Kubernetes 创建命令`"}} kubernetes/create -.-> lab-8506{{"`Kubernetes 创建命令`"}} kubernetes/apply -.-> lab-8506{{"`Kubernetes 创建命令`"}} kubernetes/cluster_info -.-> lab-8506{{"`Kubernetes 创建命令`"}} end

启动 Minikube 并验证集群

在使用 Kubernetes 之前,你需要一个正在运行的集群。Minikube 提供了一个轻量级的本地 Kubernetes 集群。

  1. 导航到你的项目目录

    打开终端并导航到默认的工作目录:

    cd /home/labex/project
  2. 启动 Minikube

    启动 Minikube 以初始化集群:

    minikube start
    • Minikube 会创建一个单节点的 Kubernetes 集群。此步骤可能需要几分钟。
  3. 验证 Minikube 状态

    检查 Minikube 是否成功启动:

    minikube status

    查找 apiserverkubelet 等组件是否显示为 Running

  4. 确认 Kubernetes 配置

    确保 kubectl 已连接到 Minikube 集群:

    kubectl cluster-info

    这将显示 API 服务器和其他组件的详细信息。

如果 Minikube 启动失败,请使用 minikube delete 重置并重试。

探索 kubectl create 命令

kubectl create 命令提供了多个子命令来创建 Kubernetes 资源。它帮助管理诸如命名空间(namespaces)、部署(deployments)、服务(services)、密钥(secrets)和配置映射(ConfigMaps)等资源的创建。

运行以下命令以查看可用的 kubectl create 子命令:

kubectl create -h

你将看到以下输出:

从文件或标准输入创建资源。

接受 JSON 和 YAML 格式。

示例:
  ## 使用 pod.json 中的数据创建一个 pod
  kubectl create -f ./pod.json

  ## 基于传递到标准输入的 JSON 创建一个 pod
  cat pod.json | kubectl create -f -

  ## 编辑 registry.yaml 中的数据,然后使用编辑后的数据创建资源
  kubectl create -f registry.yaml --edit -o json

可用命令:
  clusterrole           创建一个集群角色
  clusterrolebinding    为特定集群角色创建集群角色绑定
  configmap             从本地文件、目录或字面值创建配置映射
  cronjob               创建具有指定名称的定时任务(cron job)
  deployment            创建具有指定名称的部署
  ingress               创建具有指定名称的入口(ingress)
  job                   创建具有指定名称的任务(job)
  namespace             创建具有指定名称的命名空间
  poddisruptionbudget   创建具有指定名称的 Pod 中断预算
  priorityclass         创建具有指定名称的优先级类
  quota                 创建具有指定名称的资源配额
  role                  创建具有单一规则的角色
  rolebinding           为特定角色或集群角色创建角色绑定
  secret                使用指定的子命令创建密钥
  service               使用指定的子命令创建服务
  serviceaccount        创建具有指定名称的服务账户
  token                 请求服务账户令牌

查看可用的子命令及其描述,以了解如何使用 kubectl create

创建命名空间

命名空间(Namespace)允许你在 Kubernetes 中组织和隔离资源。

  1. 创建命名空间定义文件

    打开一个名为 namespace.yaml 的新文件:

    nano namespace.yaml
  2. 定义命名空间

    添加以下内容:

    apiVersion: v1
    kind: Namespace
    metadata:
      name: mynamespace

    Ctrl+X,然后按 Y,最后按 Enter 保存文件。

  3. 应用命名空间

    创建命名空间:

    kubectl create -f namespace.yaml
  4. 验证命名空间

    检查命名空间列表:

    kubectl get namespaces

    确认输出中显示 mynamespace

创建部署

部署(Deployment)用于管理和维护 Pod 的期望状态。

  1. 创建部署定义文件

    打开一个名为 deployment.yaml 的文件:

    nano deployment.yaml
  2. 定义部署

    添加以下内容以部署三个 Nginx 容器的副本:

    apiVersion: apps/v1
    kind: Deployment
    metadata:
      name: mydeployment
      namespace: mynamespace
    spec:
      replicas: 3
      selector:
        matchLabels:
          app: myapp
      template:
        metadata:
          labels:
            app: myapp
        spec:
          containers:
            - name: nginx-container
              image: nginx

    保存文件。

  3. 应用部署

    创建部署:

    kubectl create -f deployment.yaml
  4. 验证部署

    检查部署及其 Pod:

    kubectl get deployments -n mynamespace
    kubectl get pods -n mynamespace

    确保有三个 Pod 正在运行。

创建服务

服务(Service)为一组 Pod 提供稳定的网络访问。

  1. 创建服务定义文件

    打开一个名为 service.yaml 的文件:

    nano service.yaml
  2. 定义服务

    添加以下内容:

    apiVersion: v1
    kind: Service
    metadata:
      name: myservice
      namespace: mynamespace
    spec:
      selector:
        app: myapp
      ports:
        - protocol: TCP
          port: 80
          targetPort: 80

    保存文件。

  3. 应用服务

    创建服务:

    kubectl create -f service.yaml
  4. 验证服务

    检查服务列表:

    kubectl get services -n mynamespace

    确认 myservice 已列出。

创建密钥(Secret)

密钥(Secret)用于安全地存储敏感信息,例如密码或 API 密钥。

  1. 创建密钥定义文件

    打开一个名为 secret.yaml 的文件:

    nano secret.yaml
  2. 定义密钥

    添加以下内容,其中包含 Base64 编码的值:

    apiVersion: v1
    kind: Secret
    metadata:
      name: mysecret
      namespace: mynamespace
    type: Opaque
    data:
      username: dXNlcm5hbWU= ## Base64 for "username"
      password: cGFzc3dvcmQ= ## Base64 for "password"

    保存文件。

  3. 应用密钥

    创建密钥:

    kubectl create -f secret.yaml
  4. 验证密钥

    检查密钥列表:

    kubectl get secrets -n mynamespace

    确认输出中显示 mysecret

创建配置映射(ConfigMap)

配置映射(ConfigMap)以键值对的形式存储配置数据。

  1. 创建 ConfigMap 定义文件

    打开一个名为 configmap.yaml 的文件:

    nano configmap.yaml
  2. 定义 ConfigMap

    添加以下内容:

    apiVersion: v1
    kind: ConfigMap
    metadata:
      name: myconfigmap
      namespace: mynamespace
    data:
      database.host: "example.com"
      database.port: "5432"

    保存文件。

  3. 应用 ConfigMap

    创建 ConfigMap:

    kubectl create -f configmap.yaml
  4. 验证 ConfigMap

    检查 ConfigMap 列表:

    kubectl get configmaps -n mynamespace

    确认输出中显示 myconfigmap

总结

在本实验中,你学习了如何:

  1. 启动并验证 Minikube 集群。
  2. 创建 Kubernetes 资源,如命名空间(namespaces)、部署(deployments)、服务(services)、密钥(secrets)和配置映射(ConfigMaps)。
  3. 验证这些资源的状态。

通过掌握这些步骤,你将能够在 Kubernetes 中有效地管理和部署应用程序。练习这些步骤以加深你的理解!

您可能感兴趣的其他 Kubernetes 教程