在特定的 kubernetes 节点上部署 istio 网关

Deploy istio gateway on a specific kubernetes node

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

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

我已经调查了 ,但是我没有看到任何适当的文档化方法来解决这个问题。

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

Gateway 对象不过是 istio-ingressgateway pod 的 Envoy 配置,它是一个 Envoy 代理。

因此,如果您希望将您的网关部署在特定节点上,您应该将nodeSelectornodeAffinity添加到istio-ingressgatewayDeployment对象中。

编辑

假设您已 istioctl 下载。

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

搜索名为 istio-ingressgatewayDeployment,然后将以下行添加到 nodeAffinity 部分,如下所示:

      ...
      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>