Consulte o exemplo de YAML para provisionar um TanzuKubernetesCluster usando a API v1alpha3 com configurações de rede personalizadas.

Exemplo de v1alpha3: TKC com configurações de rede personalizadas

A rede é personalizada da seguinte forma. Consulte a especificação da API v1alpha3 para obter detalhes.
  • O Calico CNI é usado em vez do Antrea padrão
  • Sub-redes não padrão para pods e serviços são usadas
  • Um servidor proxy e certificados TLS são declarados
apiVersion: run.tanzu.vmware.com/v1alpha3
kind: TanzuKubernetesCluster
metadata:
  name: tkc-custom-network
  namespace: tkg2-cluster-ns
spec:
  topology:
    controlPlane:
      replicas: 3
      vmClass: guaranteed-medium
      storageClass: tkg2-storage-policy
      tkr:
        reference:
          name: v1.23.8---vmware.2-tkg.2-zshippable
      volumes:
      - name: etcd
        mountPath: /var/lib/etcd
        capacity:
          storage: 4Gi
    nodePools:
    - name: worker
      replicas: 3
      vmClass: guaranteed-medium
      storageClass: tkg2-storage-policy
      tkr:
        reference:
          name: v1.23.8---vmware.2-tkg.2-zshippable
      volumes:
      - name: containerd
        mountPath: /var/lib/containerd
        capacity:
          storage: 50Gi
      - name: kubelet
        mountPath: /var/lib/kubelet
        capacity:
          storage: 50Gi
  settings:
    storage:
      defaultClass: tkg2-storage-policy
    network:
      cni:
        name: calico
      services:
        cidrBlocks: ["198.53.100.0/16"]
      pods:
        cidrBlocks: ["192.0.5.0/16"]
      serviceDomain: cluster.local
      proxy:
        httpProxy: http://<user>:<pwd>@<ip>:<port>
        httpsProxy: http://<user>:<pwd>@<ip>:<port>
        noProxy: [10.246.0.0/16,192.168.144.0/20,192.168.128.0/20]
      trust:
        additionalTrustedCAs:
          - name: CompanyInternalCA-1
            data: LS0tLS1C...LS0tCg==
          - name: CompanyInternalCA-2
            data: MTLtMT1C...MT0tPg==

Considerações para personalizar a rede de pods do TKC

A configuração de especificação de cluster spec.settings.network.pods.cidrBlocks padrão é 192.168.0.0/16.

Se você personalizar, o tamanho mínimo do bloco CIDR de pods será /24. No entanto, tenha cuidado ao restringir a máscara de sub-rede pods.cidrBlocks além de /16.

O TKG aloca a cada nó de cluster uma sub-rede /24 extraída do pods.cidrBlocks. Essa alocação é determinada pelo parâmetro Kubernetes Controller Manager > NodeIPAMController chamado NodeCIDRMaskSize, que define o tamanho da máscara de sub-rede para o CIDR do nó no cluster. A máscara de sub-rede do nó padrão é /24 para IPv4.

Como cada nó em um cluster obtém uma sub-rede /24 do pods.cidrBlocks, você pode ficar sem endereços IP de nó se usar um tamanho de máscara de sub-rede que seja muito restritivo para o cluster que você está provisionando.

Os limites de nó a seguir se aplicam a um cluster Tanzu Kubernetes provisionado com a CNI do Antrea ou do Calico.

/16 == 150 nós no máximo (por ConfigMax)

/17 == 128 nós no máximo

/18 == 64 nós no máximo

/19 == 32 nós no máximo

/20 == 16 nós no máximo

/21 == 8 nós no máximo

/22 == 4 nós no máximo

/23 == 2 nós no máximo

/24 == 1 nó no máximo