port
是容器内部的端口号
nodePort
是节点上的端口
targetPort
是Pod内部容器监听的端口
containerPort
是容器内部应用实际使用的端口
举例
apiVersion: v1 kind: Service metadata: name: my-service spec: type: NodePort selector: app: my-app ports: - name: http port: 8080 targetPort: 8080 nodePort: 30000
apiVersion: 指定了这个 YAML 文件是针对哪个 Kubernetes API 版本的。这里使用的是
v1
,适用于 Kubernetes 1.18 及之后的版本。kind: 定义了这个 YAML 文件描述的是一个 Kubernetes 资源类型,这里是
Service
。metadata:
- name: 服务的名称,这里为
my-service
。- namespace: 如果您希望在特定命名空间中创建这个服务,可以在这里指定。
spec:
- type: 服务类型,这里设置为
NodePort
,意味着服务将在集群中的所有节点上有一个公开的端口。- selector: 用于匹配服务要关联的 Pod 的标签。这里假设所有与服务关联的 Pod 都有
app: my-app
的标签。- ports: 服务要监听的端口信息。这里定义了一个名为
http
的端口,端口编号为8080
,目标端口也是8080
,这意味着服务将转发流量到 Pod 的8080
端口。nodePort
设置为30000
,表示在集群中的所有节点上公开的端口为30000
。