● Pod是Kubernets中的基本执行单位,可以包含一个或多个容器。
● Pod提供了容器间的网络和存储共享。
apiVersion: v1
kind: Pod
metadata:name: my-podlabels: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-volumemountPath: /usr/share/nginx/html# 检查容器是否正常运行livenessProbe:httpGet:path: /healthzport: 80initialDelaySeconds: 30periodSeconds: 10# 检查容器是否准备好接受流量readinessProbe:httpGet:path: /readinessport: 80initialDelaySeconds: 10periodSeconds: 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_volumemountPath: /app- name: api_conf_volumemountPath: /app/Confs# 检查容器是否正常运行livenessProbe:httpGet:path: /healthzport: 80initialDelaySeconds: 30periodSeconds: 10# 检查容器是否准备好接受流量readinessProbe:httpGet:path: /readinessport: 80initialDelaySeconds: 10periodSeconds: 5# 主机中的目录与Pod内虚拟卷挂载关系volumes:- name: nginx-volumehostPath:path: /data/webtype: DirectoryOrCreate- name: api_app_volumehostPath:path: /data/api/apptype: DirectoryOrCreate- name: api_conf_volumehostPath:path: /data/api/conftype: DirectoryOrCreate
- apiVersion:API版本
- kind:资源类型
- metadata:元数据,包含Pod名称和标签
- spec:规范,定义Pod的容器、端口和卷
- containers:容器列表,定义一个或多个容器
- name:容器名称
- image:容器使用的镜像
- ports:容器暴露的端口
- resources: 容器资源的最小需求和最大限制
- livenessProbe: 检查容器是否正常运行
- readinessProbe: 检查容器是否准备好接受流量
- volumeMounts:卷挂载到容器的路径
- volumes:Pod内部虚拟卷定义,以及与主机目录挂载关系定义
- containers:容器列表,定义一个或多个容器
- 在一个Pod中如何运行多个容器?
在containers节点下增加多个容器配置 - 如何进行容器健康检查?
使用 livenessProbe 检查容器是否仍在运行。如果探针失败,k8s会重启容器。这个探针确保容器在出现问题时能够自动尝试恢复。
使用 readinessProbe 检查容器是否准备好接收流量。如果探针失败,k8s会从服务的负载均衡池中移除容器,直到容器恢复正常。这个探针确保容器在其准备好处理请求之前不会接收流量。 - 如何将主机目录挂载到容器内?
先在Pod中volumes节点定义虚拟卷,将主机目录挂载到虚拟卷;再在容器中volumeMounts节点使用虚拟卷,将虚拟卷挂载到容器内目录。