Почему Kubernetes определяет множественный селектор? - PullRequest
0 голосов
/ 17 марта 2020

Я совершенно новичок в Kubernetes (AKS), я создаю службу следующим образом: https://docs.microsoft.com/it-it/azure/aks/internal-lb

The Yaml file looks like this :
apiVersion: v1
kind: Service
metadata:
  name: internal-app
  annotations:
    **service.beta.kubernetes.io/azure-load-balancer-internal: "true"**
spec:
  type: LoadBalancer
  loadBalancerIP: **10.240.0.25**
  ports:
  - port: 80
  selector:
    app: internal-app

Через несколько минут создается балансировщик нагрузки и состояние c IP назначен правильно. Проблема в том, что селектор не работает. Я не могу подключить модуль к этому сервису. Заранее благодарим за помощь.

Это файл yaml для развертывания POD:

{
  "kind": "Pod",
  "apiVersion": "v1",
  "metadata": {
    "name": "internal-app-6b587d746d-kstrx",
    "generateName": "internal-app-6b587d746d-",
    "namespace": "default",
    "selfLink": "/api/v1/namespaces/default/pods/internal-app-6b587d746d-kstrx",
    "uid": "03389261-a8b6-4d17-ba7f-231fd09682ec",
    "resourceVersion": "544508",
    "creationTimestamp": "2020-03-17T07:11:00Z",
    "labels": {
      "k8s-app": "internal-app",
      "pod-template-hash": "6b587d746d"
    },
    "ownerReferences": [
      {
        "apiVersion": "apps/v1",
        "kind": "ReplicaSet",
        "name": "internal-app-6b587d746d",
        "uid": "5099da2e-8a7a-4483-b752-3baccffe6d64",
        "controller": true,
        "blockOwnerDeletion": true
      }
    ]
  },
  "spec": {
    "volumes": [
      {
        "name": "default-token-kbhrk",
        "secret": {
          "secretName": "default-token-kbhrk",
          "defaultMode": 420
        }
      }
    ],
    "containers": [
      {
        "name": "internal-app",
        "image": "xxxxxxxxxxxxxxxxxx.azurecr.io/projtest:20293",
        "resources": {},
        "volumeMounts": [
          {
            "name": "default-token-kbhrk",
            "readOnly": true,
            "mountPath": "/var/run/secrets/kubernetes.io/serviceaccount"
          }
        ],
        "terminationMessagePath": "/dev/termination-log",
        "terminationMessagePolicy": "File",
        "imagePullPolicy": "IfNotPresent",
        "securityContext": {
          "privileged": false
        }
      }
    ],
    "restartPolicy": "Always",
    "terminationGracePeriodSeconds": 30,
    "dnsPolicy": "ClusterFirst",
    "serviceAccountName": "default",
    "serviceAccount": "default",
    "nodeName": "aks-agentpool-47203187-vmss000000",
    "securityContext": {},
    "imagePullSecrets": [
      {
        "name": "acrazure"
      }
    ],
    "schedulerName": "default-scheduler",
    "tolerations": [
      {
        "key": "node.kubernetes.io/not-ready",
        "operator": "Exists",
        "effect": "NoExecute",
        "tolerationSeconds": 300
      },
      {
        "key": "node.kubernetes.io/unreachable",
        "operator": "Exists",
        "effect": "NoExecute",
        "tolerationSeconds": 300
      }
    ],
    "priority": 0,
    "enableServiceLinks": true
  },
  "status": {
    "phase": "Running",
    "conditions": [
      {
        "type": "Initialized",
        "status": "True",
        "lastProbeTime": null,
        "lastTransitionTime": "2020-03-17T07:11:00Z"
      },
      {
        "type": "Ready",
        "status": "True",
        "lastProbeTime": null,
        "lastTransitionTime": "2020-03-17T07:11:02Z"
      },
      {
        "type": "ContainersReady",
        "status": "True",
        "lastProbeTime": null,
        "lastTransitionTime": "2020-03-17T07:11:02Z"
      },
      {
        "type": "PodScheduled",
        "status": "True",
        "lastProbeTime": null,
        "lastTransitionTime": "2020-03-17T07:11:00Z"
      }
    ],
    "hostIP": "10.240.0.4",
    "podIP": "10.244.0.40",
    "startTime": "2020-03-17T07:11:00Z",
    "containerStatuses": [
      {
        "name": "internal-app",
        "state": {
          "running": {
            "startedAt": "2020-03-17T07:11:01Z"
          }
        },
        "lastState": {},
        "ready": true,
        "restartCount": 0,
        "image": "axxxxxxxxxxxxxxxazurecr.io/projtest:20293",
        "imageID": "docker-pullable://xxxxxxxxxxxxxxxxxxxxxxx/projtest@sha256:cxxxxxxxxxxxxxx315464984f7e0fe10ecef57xxxxxxxxxxxxxxxxxxxb7d227a4",
        "containerID": "docker://c4d74c2xxxxxxxxxxxxxxxxxxxxxxx878337823dc"
      }
    ],
    "qosClass": "BestEffort"
  }
}

Ответы [ 2 ]

2 голосов
/ 17 марта 2020

Проверьте, есть ли у сервиса конечные точки. Если селектор правильный, он будет иметь IP-адреса Pod в качестве конечных точек.

kubectl describe svc internal-app

Селектор в службе не соответствует ни одной метке на модулях

  selector:
    app: internal-app

Либо добавьте метку app: internal-app в модулях или измените селектор в обслуживании на

  selector:
    k8s-app: internal-app
1 голос
/ 17 марта 2020

метка модуля и селектор услуг не совпадают.

pod has below label
"k8s-app": "internal-app",

You need to correct service selector 
  selector:
    app: internal-app

Обновите определение сервиса, как показано ниже. Должно работать

apiVersion: v1
kind: Service
metadata:
  name: internal-app
  annotations:
    **service.beta.kubernetes.io/azure-load-balancer-internal: "true"**
spec:
  type: LoadBalancer
  loadBalancerIP: **10.240.0.25**
  ports:
  - port: 80
  selector:
    k8s-app: internal-app
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...