一、Pod 定义
apiVersion: v1
kind: Pod
metadata:
name: my-pod
labels:
app: my-app
spec:
containers:
- name: my-container
image: my-image
ports:
- containerPort: 8080
-
apiVersion:指定 Kubernetes API 的版本,对于 Pod 通常是v1。 -
kind:表明资源的类型,这里是Pod。 -
metadata:包含 Pod 的元数据信息。name:Pod 的名称,在集群中必须是唯一的。labels:用于标识 Pod 的标签,可以用于选择器和分组。
-
spec:定义 Pod 的具体规格。-
containers:列出 Pod 中的容器。-
name:容器的名称。 -
image:容器使用的镜像名称。 -
ports:容器暴露的端口列表。containerPort:容器内部监听的端口号。
-
-
二、Deployment 定义
apiVersion: apps/v1
kind: Deployment
metadata:
name: my-deployment
spec:
replicas: 3
selector:
matchLabels:
app: my-app
template:
metadata:
labels:
app: my-app
spec:
containers:
- name: my-container
image: my-image
ports:
- containerPort: 8080
-
apiVersion:对于 Deployment,通常是apps/v1。 -
kind:资源类型为Deployment。 -
metadata:name:Deployment 的名称。
-
spec:replicas:指定要创建的 Pod 副本数量。selector:用于选择要管理的 Pod 的标签选择器。template:定义 Pod 的模板,与 Pod 的定义类似。
三、Service 定义
apiVersion: v1
kind: Service
metadata:
name: my-service
spec:
selector:
app: my-app
ports:
- protocol: TCP
port: 80
targetPort: 8080
type: ClusterIP
-
apiVersion:通常是v1。 -
kind:资源类型为Service。 -
metadata:name:Service 的名称。
-
spec:-
selector:选择要关联的 Pod 的标签。 -
ports:定义服务的端口。
protocol:协议类型,通常是TCP或UDP。port:服务对外暴露的端口。targetPort:后端 Pod 上的端口。
-
type:服务的类型,可以是ClusterIP、NodePort、LoadBalancer等。
-
...