部署K8S集群(五):配置文件之Pod配置文件

● Pod是Kubernets中的基本执行单位,可以包含一个或多个容器。
● Pod提供了容器间的网络和存储共享。

apiVersion: v1
kind: Pod
metadata:
  name: my-pod
  labels:
    app: my-app
spec:
  containers:
  # 容器1:web页面
    # 容器名称
  - name: web-container
    # 容器使用的镜像
    image: nginx:latest
    # 容器暴露的端口
    ports:
    - containerPort: 80
    - containerPort: 81
    # 容器资源限制
    resources:
      requests:
        memory: "512Mi"
        cpu: "500m"
      limits:
        memory: "1Gi"
        cpu: "1"
    # Pod的虚拟卷与容器内的目录挂载关系
    volumeMounts:
    - name: nginx-volume
      mountPath: /usr/share/nginx/html
    # 检查容器是否正常运行
    livenessProbe:
      httpGet:
        path: /healthz
        port: 80
      initialDelaySeconds: 30
      periodSeconds: 10
    # 检查容器是否准备好接受流量
    readinessProbe:
      httpGet:
        path: /readiness
        port: 80
      initialDelaySeconds: 10
      periodSeconds: 5
  # 容器2:api后台
    # 容器名称
  - name: api-container
    # 容器使用的镜像
    image: my-api:latest
    # 容器暴露的端口
    ports:
    - containerPort: 80
    - containerPort: 81
    # 容器资源限制
    resources:
      requests:
        memory: "512Mi"
        cpu: "500m"
      limits:
        memory: "1Gi"
        cpu: "1"
    # Pod的虚拟卷与容器内的目录挂载关系
    volumeMounts:
    - name: api_app_volume
      mountPath: /app
    - name: api_conf_volume
      mountPath: /app/Confs
    # 检查容器是否正常运行
    livenessProbe:
      httpGet:
        path: /healthz
        port: 80
      initialDelaySeconds: 30
      periodSeconds: 10
    # 检查容器是否准备好接受流量
    readinessProbe:
      httpGet:
        path: /readiness
        port: 80
      initialDelaySeconds: 10
      periodSeconds: 5
  # 主机中的目录与Pod内虚拟卷挂载关系
  volumes:
  - name: nginx-volume
    hostPath:
      path: /data/web
      type: DirectoryOrCreate
  - name: api_app_volume
    hostPath:
      path: /data/api/app
      type: DirectoryOrCreate
  - name: api_conf_volume
    hostPath:
      path: /data/api/conf
      type: DirectoryOrCreate
  • apiVersion:API版本
  • kind:资源类型
  • metadata:元数据,包含Pod名称和标签
  • spec:规范,定义Pod的容器、端口和卷
    • containers:容器列表,定义一个或多个容器
      • name:容器名称
      • image:容器使用的镜像
      • ports:容器暴露的端口
      • resources: 容器资源的最小需求和最大限制
      • livenessProbe: 检查容器是否正常运行
      • readinessProbe: 检查容器是否准备好接受流量
      • volumeMounts:卷挂载到容器的路径
    • volumes:Pod内部虚拟卷定义,以及与主机目录挂载关系定义
  1. 在一个Pod中如何运行多个容器?
    在containers节点下增加多个容器配置
  2. 如何进行容器健康检查?
    使用 livenessProbe 检查容器是否仍在运行。如果探针失败,k8s会重启容器。这个探针确保容器在出现问题时能够自动尝试恢复。
    使用 readinessProbe 检查容器是否准备好接收流量。如果探针失败,k8s会从服务的负载均衡池中移除容器,直到容器恢复正常。这个探针确保容器在其准备好处理请求之前不会接收流量。
  3. 如何将主机目录挂载到容器内?
    先在Pod中volumes节点定义虚拟卷,将主机目录挂载到虚拟卷;再在容器中volumeMounts节点使用虚拟卷,将虚拟卷挂载到容器内目录。
posted @ 2024-09-11 22:43  Ar4te  阅读(42)  评论(0编辑  收藏  举报