J'ai créé un cluster à l'aide de la plateforme Google Cloud (moteur de conteneur) et déployé un pod à l'aide du fichier yaml suivant:
apiVersion: extensions/v1beta1
kind: Deployment
metadata:
name: deployment-name
spec:
replicas: 1
template:
metadata:
name: pod-name
labels:
app: app-label
spec:
containers:
- name: container-name
image: gcr.io/project-id/image-name
resources:
requests:
cpu: 1
ports:
- name: port80
containerPort: 80
- name: port443
containerPort: 443
- name: port6001
containerPort: 6001
Ensuite, je veux créer un service qui permet au pod d'écouter sur tous ces ports. Je sais qu'il suit le fichier yaml pour créer un service qui écoute sur un port:
apiVersion: v1
kind: Service
metadata:
name: service-name
spec:
ports:
- port: 80
targetPort: 80
selector:
app: app-label
type: LoadBalancer
Cependant, lorsque je veux que le pod écoute sur plusieurs ports comme celui-ci, cela ne fonctionne pas:
apiVersion: v1
kind: Service
metadata:
name: service-name
spec:
ports:
- port: 80
targetPort: 80
- port: 443
targetPort: 443
- port: 6001
targetPort: 6001
selector:
app: app-label
type: LoadBalancer
Comment puis-je faire écouter mon pod à plusieurs ports?
Vous avez deux options:
Dans votre cas, le service devient:
apiVersion: v1
kind: Service
metadata:
name: service-name
spec:
ports:
- name: http
port: 80
targetPort: 80
- name: https
port: 443
targetPort: 443
- name: something
port: 6001
targetPort: 6001
selector:
app: app-label
type: LoadBalancer
Cela est nécessaire pour que les points d'extrémité puissent être désambiguïsés.