EKS 1.11 + Istio 1.0.6 + Cilium 1.4.1, Post https://istio -sidecar-injector.istio-system.svc: 443 / inject? Timeout = 30 с: адрес не разрешен - PullRequest
1 голос
/ 08 марта 2019

Вот шаги для воспроизведения ошибки:

1).Установите кластер AWS EKS (1.11)

2).Установите Cilium v1.4.1, следуя этой инструкции

$ kubectl -n kube-system set env ds aws-node AWS_VPC_K8S_CNI_EXTERNALSNAT=true

$ kubectl apply -f https://raw.githubusercontent.com/cilium/cilium/v1.4/examples/kubernetes/1.11/cilium.yaml

3).Установите istio 1.0.6

$ kubectl apply -f install/kubernetes/helm/helm-service-account.yaml

$ helm init --service-account tiller

$ helm install install/kubernetes/helm/istio --name istio --namespace istio-system

4).Попробуйте пример nginx

$ kubectl create ns nginx

$ kubectl label namespace nginx istio-injection=enabled

$ kubectl create deployment --image nginx nginx -n nginx

$ kubectl expose deployment nginx --port=80 --type=LoadBalancer -n nginx

Натолкнуться на проблему

$ kubectl get deploy -n nginx
NAME    DESIRED   CURRENT   UP-TO-DATE   AVAILABLE   AGE
nginx   1         0         0            0           27m

$ kubectl get deploy -n nginx -oyaml
apiVersion: v1
items:
- apiVersion: extensions/v1beta1
  kind: Deployment
  metadata:
    annotations:
      deployment.kubernetes.io/revision: "1"
      traffic.sidecar.istio.io/includeOutboundIPRanges: 172.20.0.0/16
    creationTimestamp: "2019-03-08T13:13:58Z"
    generation: 3
    labels:
      app: nginx
    name: nginx
    namespace: nginx
    resourceVersion: "36034"
    selfLink: /apis/extensions/v1beta1/namespaces/nginx/deployments/nginx
    uid: 0888b279-41a4-11e9-8f26-1274e185a192
  spec:
    progressDeadlineSeconds: 600
    replicas: 1
    revisionHistoryLimit: 10
    selector:
      matchLabels:
        app: nginx
    strategy:
      rollingUpdate:
        maxSurge: 25%
        maxUnavailable: 25%
      type: RollingUpdate
    template:
      metadata:
        creationTimestamp: null
        labels:
          app: nginx
      spec:
        containers:
        - image: nginx
          imagePullPolicy: Always
          name: nginx
          resources: {}
          terminationMessagePath: /dev/termination-log
          terminationMessagePolicy: File
        dnsPolicy: ClusterFirst
        restartPolicy: Always
        schedulerName: default-scheduler
        securityContext: {}
        terminationGracePeriodSeconds: 30
  status:
    conditions:
    - lastTransitionTime: "2019-03-08T13:13:58Z"
      lastUpdateTime: "2019-03-08T13:13:58Z"
      message: Deployment does not have minimum availability.
      reason: MinimumReplicasUnavailable
      status: "False"
      type: Available
    - lastTransitionTime: "2019-03-08T13:13:58Z"
      lastUpdateTime: "2019-03-08T13:13:58Z"
      message: 'Internal error occurred: failed calling admission webhook "sidecar-injector.istio.io":
        Post https://istio-sidecar-injector.istio-system.svc:443/inject?timeout=30s:
        Address is not allowed'
      reason: FailedCreate
      status: "True"
      type: ReplicaFailure
    - lastTransitionTime: "2019-03-08T13:23:59Z"
      lastUpdateTime: "2019-03-08T13:23:59Z"
      message: ReplicaSet "nginx-78f5d695bd" has timed out progressing.
      reason: ProgressDeadlineExceeded
      status: "False"
      type: Progressing
    observedGeneration: 3
    unavailableReplicas: 1
kind: List
metadata:
  resourceVersion: ""
  selfLink: ""

Исследование A, Обновлена ​​аннотация includeOutboundIPRanges, как показано ниже, не помогает

$ kubectl edit deploy -n nginx
  annotations:
    traffic.sidecar.istio.io/includeOutboundIPRanges: 172.20.0.0/20

Исследование B, Удалена ресничка, переустановите istio, затем переустановите nginx.Впрыск Nginx становится хорошим, модуль Nginx работает хорошо.

Исследование C, Для сравнения я переключил шаг установки между 2).и 3). Впрыск Nginx будет в порядке, можно увидеть страницу приветствия nginx.Но эта ошибка «Адрес не разрешен» появится снова после «ручного завершения» рабочих экземпляров ec2 - ASG автоматически создаст все рабочие экземпляры ec2.

1 Ответ

0 голосов
/ 08 мая 2019

Я столкнулся с той же проблемой с Calico, что и CNI на EKS, это, безусловно, связано с этим.После установки istio я получаю эту ошибку:

Internal error occurred: failed calling admission webhook \"mixer.validation.istio.io\": Post https://istio-galley.istio-system.svc:443/admitmixer?timeout=30s: Address is not allowed

Моя теория такова: это связано с тем, что Calico CNI присутствует только на моих рабочих узлах (Pods CIDR равен 192.168 ... / 16) иплоскость управления по-прежнему работает с AWS CNI, поскольку я не могу управлять этим с помощью EKS.

Это означает, что веб-крюку (работающему из плоскости управления) не разрешено связываться с моим сервисом istio-galley.istio-system.svc, имеющимIP за пределами VPC.

...