spec
2024年08月28日
一、containers
Containers
是 Kubernetes
中最常见的工作负载定义部分, 用来定义定义 Pod
中主容器的列表。它们代表应用程序的主要进程或服务,负责处理应用的核心业务逻辑。通常,Containers
会运行实际的应用程序代码,如 Web
服务器、数据库、缓存服务等。它们有以下几个特点和应用场景:
-
并行启动:
Pod
中的所有Containers
默认情况下会并行启动,并且可以共享同一个网络命名空间和存储卷,这使得它们能够相互通信并共享数据。 -
资源请求与限制: 每个
Container
可以指定CPU
和内存的资源请求和限制,以确保它们在集群中分配适当的资源,同时避免资源过载。 -
生命周期管理:
Containers
的生命周期与Pod
紧密相关。Pod
可能会因为各种原因(如节点故障、调度策略)而重启或迁移,这会导致Containers
被终止并重新启动。 -
健 康检查:
Kubernetes
提供了探针(Liveness
、Readiness
、Startup
)来检查Containers
的健康状况,确保应用程序在正确的状态下运行。
语法
apiVersion: v1
kind: Pod
metadata:
name: my-pod
labels:
name: my-pod
spec:
containers:
- name: my-container-1
image: docker.io/library/xx:yy
command: [xx,yy]
ports:
- containerPort: 80
1.1 name
name
: 容器的名字,必须在 Pod
内唯一。
1.2 image
image
: 容器的镜像,可以包含镜像版本号(例如 nginx:1.19.0
)。
语法
spec:
containers:
- name: my-container // 使用 Docker Hub 上的公共镜像
image: nginx:1.19.0
imagePullPolicy: IfNotPresent
spec:
containers:
- name: my-container
image: registry.example.com/myapp/backend:2.0.0 // 使用特定镜像仓库的镜像
imagePullPolicy: IfNotPresent