web-dev-qa-db-fra.com

Exposer deux ports dans Google Container Engine

Est-il possible de créer un pod dans Google Container Engine où deux ports sont exposés: le port 8080 écoute le contenu entrant et le port 80 distribue ce contenu aux clients?

La commande suivante pour créer un pod est donnée à titre d'exemple par Google:

kubectl run hello-node --image=gcr.io/${PROJECT_ID}/hello-node --port=8080

Je n'arrive pas à définir un port d'écoute, et lors de l'ajout d'un deuxième commutateur "--port =", un seul port est exposé. Existe-t-il un moyen d'exposer un deuxième port ou suis-je limité à un port par conteneur?

13
cute_marmalade

Depuis la ligne de commande, il est possible de spécifier plusieurs ports en utilisant l'option - - overrides:

Cet exemple expose les ports 80 et 8080:

    export APP_NAME=app-hello
    export IMAGE=gcr.io/google-samples/hello-app:1.0
    kubectl run $APP_NAME \
                --image=$IMAGE \
                --overrides='{"spec": {"template":  {"spec": {"containers": [{"name": "'$APP_NAME'", "image": "'$IMAGE'",
 "ports": [{"containerPort": 8080, "protocol": "TCP"}, {"containerPort": 80, "protocol": "TCP"}]}]}}}}'
1
Drew

Si nécessaire à travers la barre, il peut être réalisé comme:

deployment.yaml

        ports:
        - containerPort: {{ .Values.containerport1 }}
          #name: containerport1
        - containerPort: {{ .Values.containerport2 }}
          #name: containerport2
        - containerPort: {{ .Values.containerport3 }}
          #name: containerport3

Le fichier de service doit avoir un nom de port sinon il donnera une erreur de rendu.

service.yaml

  ports:
  - name: containerport1
    protocol: TCP
    port: {{ .Values.exposedport1 }}
    targetPort: {{ .Values.containerport1 }}
  - name: containerport2
    protocol: TCP
    port: {{ .Values.exposedport2 }}
    targetPort: {{ .Values.containerport2 }}
  - name: containerport3
    protocol: TCP
    port: {{ .Values.exposedport3 }}
    targetPort: {{ .Values.containerport3 }}

Les valeurs peuvent être définies à l'aide du paramètre --set lors de l'installation du graphique de barre.

values.yaml

containerport1: 8001
containerport2: 8002
containerport3: 8003
exposedport1: 8004
exposedport2: 8005
exposedport3: 8006
1
redzack

Kubernetes prend en charge un port cible:

kubectl expose deployment example --type=LoadBalancer --port 8080 --target-port 80

0

Souligné dans une autre réponse en utilisant kubernetes permet le ciblage, mais aussi plusieurs ports:

kubectl expose deployment example --type=LoadBalancer --port 8080,8081 --target-port 80
0
NotJohn