0

在一个多集群中,使用 Istio 设置命名空间租赁的单网格(纯粹有超过 5,000 个节点),我想创建一个网关并将其分配给特定节点,当前的文档没有涵盖这里的网关但是IstioOperator在这里通过 NodeSelector

我将如何分配特定节点(以及 Istio 网关的可能特定公共 IP)

我已经研究了一个类似的问题,但是我没有看到任何适当的记录方法来解决这个问题。

编辑我希望网关成为集群上所有命名空间的唯一入口

4

1 回答 1

2

Gatewayobject 只不过是作为代理的pod 的Envoy配置。istio-ingressgatewayEnvoy

因此,如果您希望将网关部署在特定节点上,则应将nodeSelectoror添加nodeAffinity到.Deploymentistio-ingressgateway

编辑

假设你已经istioctl下载了。

$ kubectl label no worker-1-v1-21 istio-gatewaynode=valid
$ istioctl manifest generate --set profile=demo > istio.yaml
$ vim istio.yaml

搜索被Deployment调用istio-ingressgateway,并将以下行添加到nodeAffinitysectio,如下所示:

      ...
      requiredDuringSchedulingIgnoredDuringExecution:
        nodeSelectorTerms:
        - matchExpressions:
          - key: kubernetes.io/arch
            operator: In
            values:
            - amd64
            - ppc64le
            - s390x
      requiredDuringSchedulingIgnoredDuringExecution: <-
        nodeSelectorTerms:                            <- 
        - matchExpressions:                           <- add
          - key: istio-gatewaynode                    <- these
            operator: In                              <- lines
            values:                                   <-
            - valid                                   <-
  containers:
  - args:
  ... 

使用生成的 yaml 安装 istio:

# kubectl create -f istio.yaml
...
# kubectl get po -n istio-system -owide
NAME                                    READY   STATUS    RESTARTS   AGE   IP               NODE             NOMINATED NODE   READINESS GATES
istio-egressgateway-5547fcc8fc-wntbc    1/1     Running   0          13m   192.168.184.5    worker-2-v1-21   <none>           <none>
istio-ingressgateway-85b7fddd86-mntmz   1/1     Running   0          13m   192.168.166.70   worker-1-v1-21   <none>           <none>
istiod-6659979bdf-vwc4x                 1/1     Running   0          13m   192.168.184.4    worker-2-v1-21   <none>           <none>
于 2021-08-03T14:46:12.000 回答