答案1
例如,如果您想deployment
在两个或更多端口上公开自己的信息,您至少可以通过两种方式来实现。
- 中的正确配置
YAML
。此方法在Kubernetes 文档。对于某些服务,您需要公开多个端口。Kubernetes 允许您在服务对象上配置多个端口定义。当为服务使用多个端口时,您必须为所有端口指定名称,以使其明确无误。例如:
例子:
apiVersion: v1
kind: Service
metadata:
name: my-service
spec:
selector:
app: MyApp
ports:
- name: http
protocol: TCP
port: 80
targetPort: 9376
- name: https
protocol: TCP
port: 443
targetPort: 9377
- name: <another-name>
protocol: TCP
port: XXX
targetPort: XXX
- 使用
kubectl expose
。
$ kubectl exposed <resource(deployment/Replicaset/etc)> <deployment-name> --port=XXX,XYZ,ABC --target-port=XXX
$ kubectl expose deployment nginx --port=80,8080,6000 --target-port=8080 service/nginx exposed
$ kubectl describe svc nginx
Name: nginx
Namespace: default
Labels: run=nginx
Annotations: <none>
Selector: run=nginx
Type: ClusterIP
IP: 10.0.74.75
Port: port-1 80/TCP
TargetPort: 8080/TCP
Endpoints: 10.48.0.13:8080
Port: port-2 8080/TCP
TargetPort: 8080/TCP
Endpoints: 10.48.0.13:8080
Port: port-3 6000/TCP
TargetPort: 8080/TCP
Endpoints: 10.48.0.13:8080
Session Affinity: None
Events: <none>
正如所提到的Kubernetes 文档
targetPort
:是容器接受流量的端口,
port
:是抽象Service
端口,可以是其他 pod 用于访问服务的任何端口