介绍
kubectl create 命令是创建 Kubernetes 资源的重要工具。它使用 YAML 或 JSON 文件来定义诸如命名空间(namespaces)、部署(deployments)、服务(services)、密钥(secrets)和配置映射(ConfigMaps)等资源。在本实验中,你将逐步学习如何创建这些资源,并理解它们在 Kubernetes 中的作用。
通过本实验,你将:
- 启动并验证一个 Minikube 集群。
- 使用
kubectl create创建并验证各种 Kubernetes 资源。
启动 Minikube 并验证集群
在使用 Kubernetes 之前,你需要一个正在运行的集群。Minikube 提供了一个轻量级的本地 Kubernetes 集群。
导航到你的项目目录:
打开终端并导航到默认的工作目录:
cd /home/labex/project启动 Minikube:
启动 Minikube 以初始化集群:
minikube start- Minikube 会创建一个单节点的 Kubernetes 集群。此步骤可能需要几分钟。
验证 Minikube 状态:
检查 Minikube 是否成功启动:
minikube status查找
apiserver和kubelet等组件是否显示为Running。确认 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 中组织和隔离资源。
创建命名空间定义文件:
打开一个名为
namespace.yaml的新文件:nano namespace.yaml定义命名空间:
添加以下内容:
apiVersion: v1 kind: Namespace metadata: name: mynamespace按
Ctrl+X,然后按Y,最后按Enter保存文件。应用命名空间:
创建命名空间:
kubectl create -f namespace.yaml验证命名空间:
检查命名空间列表:
kubectl get namespaces确认输出中显示
mynamespace。
创建部署
部署(Deployment)用于管理和维护 Pod 的期望状态。
创建部署定义文件:
打开一个名为
deployment.yaml的文件:nano deployment.yaml定义部署:
添加以下内容以部署三个 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保存文件。
应用部署:
创建部署:
kubectl create -f deployment.yaml验证部署:
检查部署及其 Pod:
kubectl get deployments -n mynamespace kubectl get pods -n mynamespace确保有三个 Pod 正在运行。
创建服务
服务(Service)为一组 Pod 提供稳定的网络访问。
创建服务定义文件:
打开一个名为
service.yaml的文件:nano service.yaml定义服务:
添加以下内容:
apiVersion: v1 kind: Service metadata: name: myservice namespace: mynamespace spec: selector: app: myapp ports: - protocol: TCP port: 80 targetPort: 80保存文件。
应用服务:
创建服务:
kubectl create -f service.yaml验证服务:
检查服务列表:
kubectl get services -n mynamespace确认
myservice已列出。
创建密钥
密钥(Secret)用于安全地存储敏感信息,例如密码或 API 密钥。
创建密钥定义文件:
打开一个名为
secret.yaml的文件:nano secret.yaml定义密钥:
添加以下内容,其中包含 Base64 编码的值:
apiVersion: v1 kind: Secret metadata: name: mysecret namespace: mynamespace type: Opaque data: username: dXNlcm5hbWU= ## Base64 for "username" password: cGFzc3dvcmQ= ## Base64 for "password"保存文件。
应用密钥:
创建密钥:
kubectl create -f secret.yaml验证密钥:
检查密钥列表:
kubectl get secrets -n mynamespace确认输出中显示
mysecret。
创建配置映射
配置映射(ConfigMap)以键值对的形式存储配置数据。
创建 ConfigMap 定义文件:
打开一个名为
configmap.yaml的文件:nano configmap.yaml定义 ConfigMap:
添加以下内容:
apiVersion: v1 kind: ConfigMap metadata: name: myconfigmap namespace: mynamespace data: database.host: "example.com" database.port: "5432"保存文件。
应用 ConfigMap:
创建 ConfigMap:
kubectl create -f configmap.yaml验证 ConfigMap:
检查 ConfigMap 列表:
kubectl get configmaps -n mynamespace确认输出中显示
myconfigmap。
总结
在本实验中,你学习了如何:
- 启动并验证 Minikube 集群。
- 创建 Kubernetes 资源,如命名空间(namespaces)、部署(deployments)、服务(services)、密钥(secrets)和配置映射(ConfigMaps)。
- 验证这些资源的状态。
通过掌握这些步骤,你将能够在 Kubernetes 中有效地管理和部署应用程序。练习这些步骤以加深你的理解!


