L'API du Service Tanzu Kubernetes Grid fournit des valeurs par défaut intelligentes et un groupe d'options pour personnaliser les clusters Tanzu Kubernetes. Reportez-vous aux exemples pour provisionner des clusters de différents types avec différentes configurations et personnalisations pour répondre à vos besoins.
YAML minimal pour le provisionnement d'un cluster Tanzu Kubernetes
L'exemple suivant de YAML constitue la configuration minimale requise pour appeler le Service Tanzu Kubernetes Grid et provisionner un cluster Tanzu Kubernetes qui utilise tous les paramètres par défaut.
- La version de Version de Tanzu Kubernetes, répertoriée comme v1.19, est résolue sur la distribution la plus récente correspondant à cette version mineure, par exemple
v1.19.7+vmware.1-tkg.1.xxxxxx
. Reportez-vous à la section Vérifier la compatibilité du cluster Tanzu Kubernetes pour la mise à jour. - La classe de machine virtuelle
best-effort-<size>
n'a aucune réservation. Pour plus d'informations, consultez Classes de machine virtuelle pour des clusters Tanzu Kubernetes. - Le cluster n'inclut pas de stockage persistant pour les conteneurs. Si nécessaire, il est défini dans
spec.settings.storage
. Reportez-vous à l'exemple de stockage ci-dessous. - Certaines charges de travail, telles que Helm, peuvent nécessiter
spec.settings.storage.defaultClass
. Reportez-vous à l'exemple de stockage ci-dessous. - La section
spec.settings.network
n'est pas spécifiée. Cela signifie que le cluster utilise les paramètres réseau par défaut suivants :- CNI par défaut :
antrea
- CIDR d'espace par défaut :
192.168.0.0/16
- CIDR de services par défaut :
10.96.0.0/12
- Domaine de service par défaut :
cluster.local
Note : La plage d'adresses IP par défaut pour les espaces est192.168.0.0/16
. Si ce sous-réseau est déjà utilisé, vous devez spécifier une plage CIDR différente. Reportez-vous aux exemples de réseaux personnalisés ci-dessous. - CNI par défaut :
apiVersion: run.tanzu.vmware.com/v1alpha1 #TKGS API endpoint kind: TanzuKubernetesCluster #required parameter metadata: name: tkgs-cluster-1 #cluster name, user defined namespace: tgks-cluster-ns #vsphere namespace spec: distribution: version: v1.20 #Resolves to latest TKR 1.20 topology: controlPlane: count: 1 #number of control plane nodes class: best-effort-medium #vmclass for control plane nodes storageClass: vwt-storage-policy #storageclass for control plane workers: count: 3 #number of worker nodes class: best-effort-medium #vmclass for worker nodes storageClass: vwt-storage-policy #storageclass for worker nodes
Cluster avec des disques séparés et paramètres de stockage
L'exemple de YAML suivant montre comment provisionner un cluster avec des disques et des paramètres de stockage distincts pour le plan de contrôle du cluster et les nœuds worker.
- Personnaliser les performances de stockage sur les nœuds du plan de contrôle de la base de données ETCD
- Personnaliser la taille du disque pour les images de conteneur sur les nœuds worker
L'exemple présente les caractéristiques suivantes :
- Les paramètres
spec.topology.controlPlane.volumes
spécifient le volume distinct de la base de données ETCD. - Les paramètres
spec.topology.workers.volumes
spécifient le volume distinct des images de conteneur. - Le chemin
mountPath: /var/lib/containerd
des images de conteneur est pris en charge pour Tanzu Kubernetes versions 1.17 et ultérieures.
apiVersion: run.tanzu.vmware.com/v1alpha1 kind: TanzuKubernetesCluster metadata: name: tkgs-cluster-5 namespace: tgks-cluster-ns spec: distribution: version: v1.20 topology: controlPlane: count: 3 class: best-effort-medium storageClass: vwt-storage-policy volumes: - name: etcd mountPath: /var/lib/etcd capacity: storage: 4Gi workers: count: 3 class: best-effort-medium storageClass: vwt-storage-policy volumes: - name: containerd mountPath: /var/lib/containerd capacity: storage: 16Gi
Cluster avec un réseau Antrea personnalisé
- Étant donné que des paramètres réseau personnalisés sont appliqués, le paramètre
cni.name
est requis, même si le CNI Antrea par défaut est utilisé.- Nom du CNI :
antrea
- CIDR des espaces personnalisés :
193.0.2.0/16
- CIDR de services personnalisés :
195.51.100.0/12
- Domaine de service personnalisé :
managedcluster.local
- Nom du CNI :
- Les blocs CIDR personnalisés spécifiés ne peuvent pas chevaucher le Cluster superviseur. Pour plus d'informations, consultez Paramètres de configuration des clusters Tanzu Kubernetes utilisant Service Tanzu Kubernetes Grid v1alpha1 API.
apiVersion: run.tanzu.vmware.com/v1alpha1 kind: TanzuKubernetesCluster metadata: name: tkg-cluster-3-antrea namespace: tkgs-cluster-ns spec: distribution: version: v1.20 topology: controlPlane: class: guaranteed-medium count: 3 storageClass: vwt-storage-policy workers: class: guaranteed-medium count: 5 storageClass: vwt-storage-policy settings: network: cni: name: antrea #Use Antrea CNI pods: cidrBlocks: - 193.0.2.0/16 #Must not overlap with SVC services: cidrBlocks: - 195.51.100.0/12 #Must not overlap with SVC serviceDomain: managedcluster.local
Cluster avec un réseau calibré personnalisé
- Calico n'est pas le CNI par défaut, il est donc explicitement nommé dans le manifeste. Pour modifier le CNI par défaut au niveau du service, reportez-vous à la section Exemples de configuration de l'API v1alpha1 du Service Tanzu Kubernetes Grid.
- Nom du CNI :
calico
- CIDR des espaces personnalisés :
198.51.100.0/12
- CIDR de services personnalisés :
192.0.2.0/16
- Domaine de service personnalisé :
managedcluster.local
- Nom du CNI :
- Le réseau utilise des plages CIDR personnalisées, pas les valeurs par défaut. Ces plages ne doivent pas se chevaucher avec le Cluster superviseur. Reportez-vous à la section Paramètres de configuration des clusters Tanzu Kubernetes utilisant Service Tanzu Kubernetes Grid v1alpha1 API.
apiVersion: run.tanzu.vmware.com/v1alpha1 kind: TanzuKubernetesCluster metadata: name: tkgs-cluster-2 namespace: tkgs-cluster-ns spec: distribution: version: v1.20 topology: controlPlane: count: 3 class: guaranteed-large storageClass: vwt-storage-policy workers: count: 5 class: guaranteed-xlarge storageClass: vwt-storage-policy settings: network: cni: name: calico #Use Calico CNI for this cluster services: cidrBlocks: ["198.51.100.0/12"] #Must not overlap with SVC pods: cidrBlocks: ["192.0.2.0/16"] #Must not overlap with SVC serviceDomain: managedcluster.local
Cluster avec classes de stockage et classe par défaut pour les volumes persistants
- Le paramètre
spec.settings.storage.classes
spécifie deux classes de stockage pour le stockage persistant des conteneurs du cluster. spec.settings.storage.defaultClass
est spécifié. Certaines applications nécessitent une classe par défaut. Par exemple, si vous souhaitez utiliser Helm ou Kubeapps commedefaultClass
, qui est référencé par de nombreux diagrammes.
apiVersion: run.tanzu.vmware.com/v1alpha1 kind: TanzuKubernetesCluster metadata: name: default-storage-spec namespace: tkgs-cluster-ns spec: topology: controlPlane: count: 3 class: best-effort-medium storageClass: vwt-storage-policy workers: count: 3 class: best-effort-medium storageClass: vwt-storage-policy distribution: version: v1.20 settings: network: cni: name: antrea services: cidrBlocks: ["198.51.100.0/12"] pods: cidrBlocks: ["192.0.2.0/16"] serviceDomain: "tanzukubernetescluster.local" storage: classes: ["gold", "silver"] #Array of named PVC storage classes defaultClass: silver #Default PVC storage class
Cluster avec un serveur proxy
Vous pouvez utiliser un serveur proxy avec un cluster Tanzu Kubernetes individuel en appliquant la configuration du serveur proxy au manifeste du cluster.
Notez les caractéristiques suivantes :
- La section
spec.settings.network.proxy
spécifie la configuration de proxy HTTP(s) pour ce cluster Tanzu Kubernetes. - La syntaxe des deux valeurs de serveur
proxy
esthttp://<user>:<pwd>@<ip>:<port>
. - Les points de terminaison spécifiques ne sont pas automatiquement mis en proxy, notamment
localhost
et127.0.0.1
, ainsi que les CIDR d'espace et de service pour les clusters Tanzu Kubernetes. Vous n'avez pas besoin de les inclure dans le champnoProxy
. - Le champ
noProxy
accepte un groupe de CIDR à ne pas mettre en proxy. Obtenez les valeurs requises à partir du réseau de charge de travail sur le Cluster superviseur. Reportez-vous à l'image dans la section Paramètres de configuration des clusters Tanzu Kubernetes utilisant Service Tanzu Kubernetes Grid v1alpha1 API. - Si un proxy global est configuré sur
TkgServiceConfiguration
, ces informations de proxy sont propagées au manifeste du cluster après le déploiement initial du cluster. La configuration du proxy global est ajoutée au manifeste du cluster uniquement si aucun champ de configuration de proxy n'est présent lors de la création du cluster. En d'autres termes, la configuration par cluster est prioritaire et la configuration du proxy global est prioritaire.
apiVersion: run.tanzu.vmware.com/v1alpha1 kind: TanzuKubernetesCluster metadata: name: tkgs-cluster-with-proxy namespace: tkgs-cluster-ns spec: distribution: version: v1.20 topology: controlPlane: count: 3 class: guaranteed-medium storageClass: vwt-storage-policy workers: count: 5 class: guaranteed-xlarge storageClass: vwt-storage-policy settings: storage: classes: ["gold", "silver"] defaultClass: silver network: cni: name: antrea pods: cidrBlocks: - 193.0.2.0/16 services: cidrBlocks: - 195.51.100.0/12 serviceDomain: managedcluster.local proxy: httpProxy: http://10.186.102.224:3128 #Proxy URL for HTTP connections httpsProxy: http://10.186.102.224:3128 #Proxy URL for HTTPS connections noProxy: [10.246.0.0/16,192.168.144.0/20,192.168.128.0/20] #SVC Pod, Egress, Ingress CIDRs
Cluster avec certificats personnalisés pour TLS
trust.additionalTrustedCAs
dans la spécification
TkgServiceConfiguration
(voir
Paramètres de configuration de Service Tanzu Kubernetes Grid v1alpha1 API), vous pouvez inclure
trust.additionalTrustedCAs
sous le
spec.settings.network
dans la spécification
TanzuKubernetesCluster
. Par exemple :
apiVersion: run.tanzu.vmware.com/v1alpha1 kind: TanzuKubernetesCluster metadata: name: tkgs-cluster-with-custom-certs-tls namespace: tkgs-cluster-ns spec: topology: controlPlane: count: 3 class: guaranteed-medium storageClass: vwt-storage-profile workers: count: 3 class: guaranteed-large storageClass: vwt-storage-profile distribution: version: 1.20.2 settings: network: cni: name: antrea services: cidrBlocks: ["198.51.100.0/12"] pods: cidrBlocks: ["192.0.2.0/16"] serviceDomain: "managedcluster.local" trust: additionalTrustedCAs: - name: custom-selfsigned-cert-for-tkc data: | LS0aaaaaaaaaaaaaaabase64...
Cluster qui hérite ou non des paramètres globaux de la spécification TkgServiceConfiguration
TkgServiceConfiguration
, configurez le cluster avec le paramètre global non spécifié ou null.
Par exemple, si vous souhaitez configurer un cluster qui hériterait du paramètre de proxy
, vous pouvez utiliser l'une des approches suivantes :
proxy
dans la spécification du cluster :
... settings: network: cni: name: antrea services: cidrBlocks: ["198.51.100.0/12"] pods: cidrBlocks: ["192.0.2.0/16"] serviceDomain: "tanzukubernetescluster.local"
proxy
dans la spécification, mais définissez explicitement sa valeur sur
null
:
settings: network: proxy: null
Pour provisionner un cluster Tanzu Kubernetes qui n'hérite pas de la valeur par défaut de la spécification TkgServiceConfiguration
, configurez la spécification du cluster avec tous les éléments inclus, mais avec des valeurs vides.
TkgServiceConfiguration
dispose d'un paramètre de
proxy
global configuré et que vous souhaitez provisionner un cluster qui n'hérite pas des paramètres de
proxy
globaux, incluez la syntaxe suivante dans votre spécification de cluster :
... settings: network: proxy: httpProxy: "" httpsProxy: "" noProxy: null
Cluster utilisant une bibliothèque de contenu locale
Pour provisionner un cluster Tanzu Kubernetes dans un environnement isolé, créez un cluster à l'aide de l'image de machine virtuelle synchronisée à partir d'une bibliothèque de contenu locale.
distribution.version
, vous pouvez entrer le nom complet de l'image ou, si vous avez conservé le format du nom du répertoire de l'image, vous pouvez le raccourcir pour la version Kubernetes. Si vous souhaitez utiliser un numéro de version complet, remplacez
-----
par
+
. Par exemple, si vous avez une image OVA nommée
photon-3-k8s-v1.20.2---vmware.1-tkg.1.1d4f79a
, les formats suivants sont acceptables.
spec: distribution: version: v1.20
spec: distribution: version: v1.20.2
spec: distribution: version: v1.20.2+vmware.1-tkg.1
apiVersion: run.tanzu.vmware.com/v1alpha1 kind: TanzuKubernetesCluster metadata: name: tgks-cluster-9 namespace: tkgs-cluster-ns spec: topology: controlPlane: count: 3 class: best-effort-medium storageClass: vwt-storage-policy workers: count: 3 class: best-effort-medium storageClass: vwt-storage-policy distribution: version: v1.20.2 settings: network: cni: name: antrea services: cidrBlocks: ["198.51.100.0/12"] pods: cidrBlocks: ["192.0.2.0/16"]