一、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-icsenvironment: production
  • metadata 需缩进两个空格。
  • 可选字段:包括 annotationsnamespace 等。name 是唯一必须项。

3. 容器规格与端口配置

  • 容器数量:在 spec.containers 下指定。
  • 容器名称:如 enginex
  • 镜像:如 image: nginx:1.22.0latest,建议指定版本。
  • 端口配置:通过 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 podskubectl get po
  • 关注列STATUSREADY,若 READY1/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
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
apiVersion: v1
kind: Pod

metadata:
name: nginx-demo # Pod 名称,用于唯一标识
labels:
app: nginx # 部署或服务选择器常用标签
Approx: Prod # 自定义标签,例如“生产环境”

spec:
containers:
- name: nginx # 容器名称,有别于 Pod 名称
image: nginx:latest # 使用最新版本的 Nginx 镜像
ports:
- containerPort: 80 # 通知 Pod 该容器监听的端口
volumeMounts:
- name: nginx-data # 将名为 nginx-data 的卷挂载进该路径
mountPath: /var/www/html # 容器内部路径,通常是 Web 根目录

volumes:
- name: nginx-data # 定义一个卷,名称需与 volumeMounts 匹配
emptyDir: {} # 临时卷类型,当 Pod 生命周期结束后自动销毁