示例资源清单
示例部署资源清单:
apiVersion: apps/v1
kind: Deployment
metadata:
name: whoami-deploy
spec:
replicas: 1
selector:
matchLabels:
app: whoami
release: canary
template:
metadata:
labels:
app: whoami
release: canary
spec:
containers:
- name: whoami
image: traefik/whoami:v1.10
ports:
- name: http
containerPort: 80
---
apiVersion: v1
kind: Service
metadata:
name: whoami
spec:
type: NodePort
selector:
app: whoami
release: canary
ports:
- name: http
port: 80
targetPort: 80 # pod port
nodePort: 30080
部署:
kubectl apply -f xxx.yaml
关键参数说明
我来为您解释这个 Kubernetes 配置文件中的关键参数:
Deployment 部分
apiVersion: apps/v1 # K8s API 版本
kind: Deployment # 资源类型为 Deployment
metadata:
name: whoami-deploy– Deployment 的名称
spec:
replicas: 1– 指定要运行的 Pod 副本数量selector– 用于选择要管理哪些 PodmatchLabels– Pod 必须包含这些标签才会被该 Deployment 管理app: whoamirelease: canary
template: – Pod 的模板定义
metadata/labels– 为创建的 Pod 添加标签containers– 容器配置image: traefik/whoami:v1.10– 使用的容器镜像containerPort: 80– 容器内部暴露的端口
Service 部分
kind: Service # 资源类型为 Service
type: NodePort # Service 类型为 NodePort,允许从集群外访问
selector: – 选择要暴露哪些 Pod
- 与 Deployment 中的标签对应:
app: whoamirelease: canary
ports:
port: 80– Service 的端口targetPort: 80– Pod 的目标端口nodePort: 30080– 节点上暴露的端口(可以通过 :30080 访问)
重要概念说明:
-
这是一个完整的应用部署配置,包含了 Deployment(管理 Pod)和 Service(暴露服务)两部分
-
标签(Labels)在这里起到了关键作用:
- Deployment 使用标签选择器来管理 Pod
- Service 使用相同的标签来确定要暴露哪些 Pod
-
端口映射关系:
- 容器端口 80
- Service 端口 80
- 节点端口 30080(外部访问端口)
-
NodePort 类型的 Service 允许从集群外部访问服务,端口范围通常在 30000-32767 之间