一、yaml配置文件
- 申请文件创建:在虚拟任务中创建 yaml 文件。
- 操作前提:需先完成虚拟环境的设置。
- 演示目的:展示 ymal 文件的创建流程。
二、命令执行
- 伪用户切换:使用
sudo -i临时切换至 root 用户。- 权限提升原理:普通用户通过 sudo 机制获取管理员权限执行命令。
- 命令执行步骤:输入
sudo -i→ 输入密码 → 进入 root 会话环境。 - 关键语法:命令中必须包含空格,并使用
-i参数(连字符)。
三、获取节点状态
- 节点状态查询命令:
kubectl get node -o wide。 - 节点就绪状态:显示为
Ready表示节点准备就绪。 - 节点创建时间:创建于 4 天前(请根据实际日期替换,如 “2025-08-21”)。
- 当前 Kubernetes 版本:
1.25.4。 - 虚拟机信息:包括 IP 地址、操作系统、内核版本。
- 容器运行时:containerd(非 Docker)。
- 集群环境:cabinet test cluster。
四、部署 Pod
1. 创建 YAML 文件
- 打开工作目录:在虚拟机用户目录下创建专用文件夹,例如
/test-user/k8s-manifest。 - 创建文件夹:使用右键 “New Folder” 命名并回车确认。
- 创建 YAML 文件:点击 “New File”,命名需带
.yaml或.yml后缀。示例:engineering-app.yaml。 - 声明式方法:通过 YAML 文件,并使用
kubectl提交给 API Server,声明 Pod 的期望状态。 - 版本查询:使用
kubectl api-versions查看支持的 API 版本;使用kubectl api-resources | grep ^pods查询 pods 所在 API 版本。 - 关键字段:创建 Pod 时须指定
kind: Pod(首字母大写),apiVersion: v1。 - 配置复用:复制
.kube/config文件至目标用户目录,并使用chown -R处理权限。
2. 写 Pod 名称和标签
- Pod 命名:如
engineer-nginess-demo(名称可自定义)。 - Labels:可选,用于 metadata,示例
app: engineer-ics、environment: production。 - metadata 需缩进两个空格。
- 可选字段:包括
annotations、namespace等。name 是唯一必须项。
3. 容器规格与端口配置
- 容器数量:在
spec.containers下指定。 - 容器名称:如
enginex。 - 镜像:如
image: nginx:1.22.0或latest,建议指定版本。 - 端口配置:通过
containers.ports指定(如 80),仅用于说明。
4. 容器卷(Volume)与挂载(volumeMounts)
- Volume 定义:在
spec.volumes,与 containers 同级。 - 名称一致:如
nginx-data。 - 挂载路径:
mountPath: /www/flash。 - 原理:映射主机目录至容器内。
- 临时方案:如使用
emptyDir类型。 - 参考资料:关于 volume 的类型与用法:contentReference[oaicite:49]{index=49}。
5. 运行命令
- 执行命令:
kubectl create -f <文件>或kubectl apply -f <文件>。apply支持更新,不报错;create重复资源时报错:contentReference[oaicite:50]{index=50}。
- 错误处理:YAML 语法错误会触发 schema 校验失败,需修正后重试。
- 验证流程:依次为认证、授权、schema 校验:contentReference[oaicite:51]{index=51}。
- 成功标志:显示
created successfully。
6. 验证 Pod 状态
- 命令:
kubectl get pods或kubectl get po。 - 关注列:
STATUS与READY,若READY为1/1等,表示就绪。 - 详细信息:使用
-o wide查看 IP 与节点。
7. 获取 Pod IP 地址
- 命令:
kubectl get pods -o wide。 - 打印内容:包括 Pod IP、节点等常用信息。
8. 验证部署是否成功
- 验证方式:用
curl请求 Pod IP,若返回welcome to engineers表明部署成功。 - 未来工具:后续可能使用 Porter 管理 Kubernetes 资源,仍通过声明式 YAML 部署。
1 | apiVersion: v1 |