Kubernetes'te Kapsayıcı bağlantı noktası ile hedef bağlantı noktası arasındaki fark nedir?

Aug 17 2020

Nasıl container portfarklı targetportsKubernetes bir kapta? Birbirlerinin yerine kullanılıyorlar mı, öyleyse neden?

Kubernetes'teki bir bölmeyi containerPortbelirtmek için kullanılan aşağıdaki kod parçacığına portrastladım.

apiVersion: apps/v1
kind: Deployment
metadata:
  name: postgres-deployment
  labels:
    app: demo-voting-app
spec:
  replicas: 1
  selector:
    matchLabels:
      name: postgres-pod
      app: demo-voting-app
  template:
    metadata:
      name: postgres-pod
      labels:
        name: postgres-pod
        app: demo-voting-app

    spec:
      containers:
      - name: postgres
        image: postgres:9.4
        ports:
        - containerPort: 5432
        

Yukarıdaki kod parçacığında containerPortparametre için 5432 vermişlerdir (son satırda). Peki, bu nasıl containerPortfarklı targetport?

Bildiğim kadarıyla, terim portgenel portolarak service(Kubernetes) 'e atıfta bulunuyor . Hatalıysam düzeltin.

Yanıtlar

4 mario Aug 18 2020 at 16:17

Özetle: targetPort ve containerPorttemelde aynı bağlantı noktasına atıfta bulunun (yani her ikisi de kullanılırsa aynı değere sahip olmaları beklenir) ancak iki farklı bağlamda kullanılırlar ve tamamen farklı amaçlara sahiptirler.

Her ikisi de iki farklı kubernetes kaynağının / nesnesinin spesifikasyonunun parçaları olduğu için birbirleri arasında kullanılamazlar: Serviceve Podsırasıyla. Amacı containerPorttamamen bilgilendirme amaçlı olarak ele alınabilse de, bir dizi ortaya çıkaran için targetPortgereklidir .ServicePods

/ Belirtiminizdeki containerPortbelirli bir değerle beyan ederek bu belirli bağlantı noktasını açığa çıkaramayacağınızı anlamanız önemlidir; örneğin, alanda nginx'inizin varsayılan yerine bağlantı noktasını açığa çıkardığını bildirirseniz , yine de kapsayıcınızda nginx sunucunuzu yapılandırmanız gerekir. bu limanda dinlemek için.PodDeploymentPodcontainerPortPod808080

Bildirilmesi containerPortde Podtarifnamede isteğe bağlıdır. O olmasa bile Service, içinde beyan ettiği bilgilere dayanarak talebi nereye yönlendireceğinizi bileceksiniz targetPort.

O ilan etmek zorunda değil hatırlamakta fayda var targetPortiçinde Servicetanım. Atlarsanız, varsayılan olarak beyan ettiğiniz değere port(ki bu Servicekendisinin bağlantı noktasıdır ) gelir.

2 ArghyaSadhu Aug 17 2020 at 10:05

Kapsül spesifikasyonunda ContainerPort

Kaptan açığa çıkacak bağlantı noktalarının listesi. Burada bir bağlantı noktasının gösterilmesi, sisteme bir konteynerin kullandığı ağ bağlantıları hakkında ek bilgi verir, ancak öncelikle bilgi amaçlıdır. Burada bir bağlantı noktası belirtmemek, bu bağlantı noktasının açığa çıkmasını ENGELLEMEZ

hizmet spesifikasyonunda targetPort

Hizmetin hedeflediği bölmelere erişilecek bağlantı noktasının numarası veya adı. Numara, 1 ile 65535 arasında olmalıdır. Ad, bir IANA_SVC_NAME olmalıdır. Bu bir dizeyse, hedef Kapsülün konteyner bağlantı noktalarında adlandırılmış bir bağlantı noktası olarak aranacaktır. Bu belirtilmezse, "bağlantı noktası" alanının değeri kullanılır (bir kimlik haritası).

Bu nedenle targetPorthizmet içi containerPort, kapsüldeki spesifikasyonla eşleşmelidir, çünkü hizmet, trafiğin hangi konteyner bağlantı noktasının hedef olduğunu bilir.