Esta página descreve os campos num ficheiro de configuração da infraestrutura do vSphere,
que é usado na configuração de domínios de topologia.
Este ficheiro é necessário se infraConfigFilePath
no ficheiro de configuração do cluster de administrador estiver definido.
As secções seguintes fornecem descrições dos objetos e campos nos recursos personalizados Secret
e VSphereInfraConfig
. Consulte a secção
Ficheiro de configuração de exemplo que
se segue e que mostra valores de exemplo para os campos.
Todos os campos são obrigatórios no ficheiro de configuração, exceto se estiverem indicados como "Opcional".
Secret
Descreve o segredo das credenciais do vSphere que armazena as credenciais de cada servidor vCenter. Adicione ou elimine segredos conforme necessário, de acordo com o número de instâncias do vCenter Server que planeia usar para o cluster de administrador e os clusters de utilizadores. Cada objeto tem de estar separado por ---
. Pode remover todos os segredos deste ficheiro de configuração depois de o cluster de administrador ser criado com êxito.
Secret.name
Imutável
String
O nome do segredo. Este nome tem de corresponder a um dos nomes no campo credentials.vCenters[i].secretName
no recurso personalizado VSphereInfraConfig
.
Secret.namespace
Imutável
String
Pré-preenchido: kube-system
O espaço de nomes em que o Secret se encontra. Este espaço de nomes tem de corresponder ao campo credentials.vCenters[i].secretNamespace
correspondente no recurso personalizado VSphereInfraConfig
.
stringData.admin-username
e stringData.admin-password
As credenciais da conta de utilizador do vCenter que tem a função de administrador do vCenter Server ou privilégios equivalentes. Para mais informações, consulte o artigo Privilégios da conta de utilizador do vCenter.
stringData.ca-crt
Mutável
String multilinha
O certificado da CA codificado em Base64 do vCenter Server.
Siga os passos em Obter o certificado de raiz da AC do vCenter até executar o comando que mostra o certificado codificado em Base64. Copie e cole o certificado completo neste campo.
VSphereInfraConfig
A configuração da infraestrutura do vSphere. Esta configuração é armazenada no cluster de administrador e partilhada pelo cluster de administrador e todos os respetivos clusters de utilizadores de gestão. Cada cluster de administrador deve ter apenas uma configuração de infraestrutura do vSphere.
VSphereInfraConfig.name
Imutável
String
Pré-preenchido: predefinição
O nome da configuração da infraestrutura do vSphere.
credentials
As credenciais usadas pela configuração da infraestrutura do vSphere.
credentials.vCenters
Uma matriz de objetos, cada um dos quais contém as referências de segredos para cada
servidor vCenter. Adicione ou elimine entradas conforme necessário. Depois de criar o cluster de administrador, pode adicionar um novo objeto credentials.vCenters
ao ficheiro de configuração, se necessário, e, em seguida, executar gkectl update admin
para atualizar a configuração no cluster.
credentials.vCenters[i].address
Imutável
String
O endereço IP ou o nome de anfitrião do seu vCenter Server.
Para mais informações, consulte o artigo Encontrar o endereço do vCenter Server.
credentials.vCenters[i].secretName
Imutável
String
O nome do Secret. O nome tem de corresponder a um name
no recurso personalizado Secret
.
credentials.vCenters[i].secretNamespace
Immutable
String
Prepopulated kube-system
O espaço de nomes em que o Secret se encontra. O espaço de nomes tem de corresponder ao namespace
correspondente no recurso personalizado Secret
.
topologyDomains
Uma matriz de objetos, cada um dos quais descreve uma configuração de domínio de topologia.
Adicione ou elimine entradas conforme necessário. Depois de criar o cluster de administrador, pode
adicionar um novo objeto topologyDomains
ao ficheiro de configuração, se necessário, e
executar gkectl update admin
para
atualizar a configuração no cluster.
topologyDomains[i].name
Imutável
String
O nome do domínio de topologia.
topologyDomains[i].topologyLabels
Uma lista de etiquetas aplicadas aos nós neste domínio de topologia que é usado pelo programador do Kubernetes. Cada etiqueta é um par "key":"value"
. Recomendamos que especifique apenas uma etiqueta por domínio de topologia.
Exemplo:
topologyDomains: - name: "td-01" topologyLabel: "topology.examplepetstore.com/zone": "zone-1"
Para a chave, pode usar a restrição predefinida ao nível do cluster do Kubernetes,
"topology.kubernetes.io/zone"
, conforme descrito em
Restrições predefinidas incorporadas.
Após a criação do cluster, a etiqueta de topologia especificada é preenchida
para etiquetas de nós no domínio de topologia. Se não usar "topology.kubernetes.io/zone"
como chave, tem de configurar a chave de topologia no PodTemplate
na sua implementação, StatefulSet ou ReplicaSet, conforme aplicável.
Por exemplo, suponhamos que definiu a chave na etiqueta de topologia como
"topology.examplepetstore.com/zone"
. Em PodTemplate
, especifica a chave como o valor do campo topologySpreadConstraints.topologyKey
. Isto permite que o programador do Kubernetes distribua os pods pelo domínio da topologia para garantir a elevada disponibilidade e evitar a concentração excessiva numa única área em caso de falha.
Para mais informações sobre a configuração de topologySpreadConstraints
, consulte
Restrições de dispersão da topologia de pods
na documentação do Kubernetes.
topologyDomains[i].compute
Recursos de computação atribuídos a este domínio de topologia.
topologyDomains[i].compute.vcenter
Imutável
String
O endereço IP ou o nome de anfitrião do seu vCenter Server.
Para mais informações, consulte o artigo Encontrar o endereço do vCenter Server.
topologyDomains[i].compute.datacenter
Imutável
String
O caminho relativo de um centro de dados do vSphere.
O valor que especificar é relativo à pasta raiz denominada /
.
Se o centro de dados estiver na pasta raiz, o valor é o nome do centro de dados.
topologyDomains[i].compute.cluster
Imutável
String
O caminho relativo de um cluster do vSphere que representa os anfitriões ESXi onde as VMs do cluster neste domínio de topologia serão executadas. Este cluster do vSphere representa um subconjunto dos anfitriões ESXi físicos no seu centro de dados do vCenter.
O valor que especificar é relativo a /.../DATA_CENTER/vm/
.
Se o cluster do vSphere estiver na pasta /.../DATA_CENTER/vm/
, o valor é o nome do cluster do vSphere.
Caso contrário, o valor é um caminho relativo que inclui uma ou mais pastas, juntamente com o nome do cluster do vSphere.
topologyDomains[i].compute.resourcePool
Imutável
String
Um conjunto de recursos do vCenter para as suas VMs neste domínio de topologia.
Se quiser usar o conjunto de recursos predefinido, defina esta opção como
VSPHERE_CLUSTER/Resources
.
Exemplo:
topologyDomains: - name: "td-01" compute: resourcePool: "my-vsphere-cluster/Resources"
Se quiser usar um conjunto de recursos que já criou, defina este parâmetro como o caminho relativo do conjunto de recursos.
O valor que especificar é relativo a
/.../DATA_CENTER/host/.../VSPHERE_CLUSTER/Resources/
Se o conjunto de recursos for um filho direto de
/.../DATA_CENTER/host/.../VSPHERE_CLUSTER/Resources/
o valor é o nome do conjunto de recursos.
Exemplo:
topologyDomains: - name: "td-01" compute: resourcePool: "my-resource-pool"
Caso contrário, o valor é um caminho relativo que tem dois ou mais conjuntos de recursos.
Exemplo:
topologyDomains: - name: "td-01" compute: resourcePool: "resource-pool-1/resource-pool-2"
topologyDomains[i].compute.folder
Opcional
Imutável
String
O caminho relativo de uma pasta do vSphere que já criou. Esta pasta vai conter todas as VMs neste domínio de topologia.
Se não especificar um valor, todas as VMs neste domínio de topologia são colocadas em
/.../DATA_CENTER/vm/
.
Se especificar um valor, este é relativo a /.../DATA_CENTER/vm/
.
O valor pode ser o nome de uma pasta.
Exemplo:
topologyDomains: - name: "td-01" compute: folder: "my-folder"
Em alternativa, o valor pode ser um caminho relativo que inclua mais do que uma pasta.
Exemplo:
topologyDomains: - name: "td-01" compute: folder: "folders/folder-1"
topologyDomains[i].storage
Configurações de armazenamento deste domínio de topologia. É usado apenas por discos de dados e discos de arranque de máquinas virtuais. Os volumes de CNS (aprovisionados por PVCs e PVs) não estão incluídos.
Especifique um valor para storage.policyName
ou storage.datastore
, mas não
ambos.
topologyDomains[i].storage.policyName
Obrigatório se storage.datastore
não estiver especificado
Imutável
String
O nome de uma política de armazenamento de VMs para os nós do cluster.
Para mais informações, consulte o artigo Configure uma política de armazenamento.
Tem de especificar um valor para storage.datastore
ou
storage.policyName
, mas não ambos. Se especificar um valor para este campo, não especifique um valor para storage.datastore
.
topologyDomains[i].storage.datastore
Obrigatório se storage.policyName
não estiver especificado
Imutável
String
O nome de um armazeno de dados do vSphere para o cluster de administrador.
O valor especificado tem de ser um nome, não um caminho. Não inclua pastas no valor.
Exemplo:
topologyDomains: - name: "td-01" storage: datastore: "my-datastore"
Tem de especificar um valor para storage.datastore
ou storage.PolicyName
, mas não ambos. Se especificar um valor para este campo, não especifique um valor para
storage.PolicyName
.
topologyDomains[i].network
Configurações de rede deste domínio de topologia.
topologyDomains[i].network.vsphereNetwork
Imutável
String
O nome da rede vSphere para os nós do cluster.
Exemplo:
topologyDomains: - name: "td-01" network: vsphereNetwork: "my-network"
Se o nome contiver um carater especial, tem de usar uma sequência de escape para o mesmo.
Carateres especiais | Sequência de escape |
---|---|
Barra (/ ) |
%2f |
Barra invertida (\ ) |
%5c |
Sinal de percentagem (% ) |
%25 |
Se o nome da rede não for exclusivo no seu centro de dados, pode especificar um caminho completo.
Exemplo:
topologyDomains: - name: "td-01" network: vsphereNetwork: "/data-centers/data-center-1/network/my-network"
topologyDomains[i].network.gateway
O endereço de gateway da sub-rede para nós do cluster neste domínio de topologia. O endereço IP tem de ser igual ao endereço de gateway no ficheiro de bloco de IPs. Para ver um exemplo, consulte o ficheiro de blocos de IP de exemplo para domínios de topologia.
topologyDomains[i].network.dnsServers
Imutável
Matriz de strings.
O número máximo de elementos na matriz é três.
Os endereços IP dos servidores DNS para as VMs.
topologyDomains[i].network.ntpServers
Imutável
Matriz de strings
Os endereços IP dos servidores de tempo que as VMs devem usar.
topologyDomains[i].network.searchDomains
Opcional
Imutável
Matriz de strings
Domínios de pesquisa de DNS para as VMs usarem. Estes domínios são usados como parte de uma lista de pesquisa de domínios.
Exemplo:
topologyDomains: - name: "td-01" network: hostConfig: searchDomainsForDNS: - "my.local.com"
topologyDomains[i].defaultTopologyDomain
Imutável
Opcional
String
O nome do domínio de topologia predefinido. Este nome tem de corresponder a um dos nomes
em topologyDomains[i].name
. Se não especificar um nome predefinido no momento da criação do cluster, pode atualizar o ficheiro de configuração com um nome, se necessário, e, em seguida, executar gkectl update admin
para atualizar a configuração no cluster.
Os nós são atribuídos ao domínio de topologia predefinido, a menos que defina um domínio de topologia para nós do plano de controlo ou nós num conjunto de nós.
Exemplo de ficheiro de configuração
O exemplo seguinte mostra um ficheiro de configuração com valores preenchidos.
apiVersion: v1
kind: Secret
metadata:
namespace: kube-system
name: "vsphere-auth-0"
stringData:
admin-username: "example-admi1n@vsphere.local"
admin-password: "GltFl4@5f"
ca-crt: |
-----BEGIN CERTIFICATE-----
MIIEITCCAwmgAwIBAgIJAPFVaTIKdyCbMA0GCSqGSIb3DQEBCwUAMIGbMQswCQYD
VQQDDAJDQTEXMBUGCgmSJomT8ixkARkWB3ZzcGhlcmUxFTATBgoJkiaJk/IsZAEZ
FgVsb2NhbDELMAkGA1UEBhMCVVMxEzARBgNVBAgMCkNhbGlmb3JuaWExHTAbBgNV
BAoMFGF0bC1xdWFsLXZjMDMuYW50aG9zMRswGQYDVQQLDBJWTXdhcmUgRW5naW5l
ZXJpbmcwHhcNMjIwODA3MDIzNTQ4WhcNMzIwODA0MDIzNTQ4WjCBmzELMAkGA1UE
AwwCQ0ExFzAVBgoJkiaJk/IsZAEZFgd2c3BoZXJlMRUwEwYKCZImiZPyLGQBGRYF
bG9jYWwxCzAJBgNVBAYTAlVTMRMwEQYDVQQIDApDYWxpZm9ybmlhMR0wGwYDVQQK
DBRhdGwtcXVhbC12YzAzLmFudGhvczEbMBkGA1UECwwSVk13YXJlIEVuZ2luZWVy
aW5nMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAz5MOjTQ4FHcIYjzo
bcIFJmnVDjSnLGYDdVayhmUo1+CC5RqJRuAnJmDYt9PY/lJhVDVUSFHWJdvRjeAP
0+xjRs33VJctzjDqwy2xRMVxoA+c8DfvALHIK+rHwIidGNt5eb2HOrB1MSCB5KFi
gkXhJf/2kiEPiTMqbu2nWySdBfZRVSYs1jSiAuz/cgyglfVUcRFn4oRhR35QZ8gj
t54IGY9atzKCYuvFAgeTCGBxI30cZRQDCtkWyWHPdK3GniNW/qh4C7gC+VI+Pnh+
fUGtAx3Px/O5h5RpHDmvuSqMNoWEsChKGgbrbkZGB9OWL8OsVAUnz8TXC6s4/AG1
0GGDGQIDAQABo2YwZDAdBgNVHQ4EFgQUM8RXjNIlar+S6uZBSH+3oVkUdGwwHwYD
VR0RBBgwFoEOZW1haWxAYWNtZS5jb22HBH8AAAEwDgYDVR0PAQH/BAQDAgEGMBIG
A1UdEwEB/wQIMAYBAf8CAQAwDQYJKoZIhvcNAQELBQADggEBABIO4RO3Jk6PaDyt
+PGP1ng5fpcKbwCi90KfEkfAd/HV3YM6suEhCar6azKXJutL9gGzidi9NvKv43Pg
hOOuTQWbdwuhqgF3YPKZ1HJWSV0NR5J9WFjp9rk1EdM6NApUwmy7EIbo8TY7M6SL
jaR8VgaelG2PSf2S4ybxKdJ2gx2pPTcoYpd/+d9qaDFLNWa4irzB6sqBUVlkAMX+
JW4FmMs8ym4aLzlFBzG5gjK1PCsBugbVRSAbF+Y8LwnMoe2WMiF1nNXoKSiaQm0A
Z0psC1b37G9dKzr9soLS5OENFrAEClfVD5luETvUHo51VhanetWbZmL5dK8iGAuj
otykS2w=
-----END CERTIFICATE-----
---
apiVersion: v1
kind: Secret
metadata:
namespace: kube-system
name: "vsphere-auth-1"
stringData:
admin-username: "example-admin2@vsphere.local"
admin-password: "xuBAcK5lT@uq2Ix"
ca-crt: |
-----BEGIN CERTIFICATE-----
MIIEITCCAwmgAwIBAgIJAMJPzGX27yKBMA0GCSqGSIb3DQEBCwUAMIGbMQswCQYD
VQQDDAJDQTEXMBUGCgmSJomT8ixkARkWB3ZzcGhlcmUxFTATBgoJkiaJk/IsZAEZ
FgVsb2NhbDELMAkGA1UEBhMCVVMxEzARBgNVBAgMCkNhbGlmb3JuaWExHTAbBgNV
BAoMFGF0bC1xdWFsLXZjMTMuYW50aG9zMRswGQYDVQQLDBJWTXdhcmUgRW5naW5l
ZXJpbmcwHhcNMjMxMjAzMjM0NDM5WhcNMzMxMTMwMjM0NDM5WjCBmzELMAkGA1UE
AwwCQ0ExFzAVBgoJkiaJk/IsZAEZFgd2c3BoZXJlMRUwEwYKCZImiZPyLGQBGRYF
bG9jYWwxCzAJBgNVBAYTAlVTMRMwEQYDVQQIDApDYWxpZm9ybmlhMR0wGwYDVQQK
DBRhdGwtcXVhbC12YzEzLmFudGhvczEbMBkGA1UECwwSVk13YXJlIEVuZ2luZWVy
aW5nMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEA6d2PidzORMEOuIKa
XOXB4nB7ukYGOeju1nKJ90KnvKfZBNjN1JKuNPQcZelFyEcUEHnI18cA2VGbpXbF
O9jMlxu5VlhPepjEPAgtcAuCZNlxzRDip9u9ar3ma2SxMCogz91qDZKSE/PQpqNI
Ozpus6YsHmK3jzAUq/Zs1+wl9HFot0e5kPf79oqQC8gPxJqmFQyGm50SdOMwj5sD
pYm/3TZZ1gw4WftBhDecO9hKwcReCVjeVgp5omMcFHwIhqUBqZM3qX5gJaxE7ELO
xu66VibA1g70Xzso2hGVQ13ruGjgUAjDsICOTpHHcT33KoMRzn2BWlKtmsnThIrE
nbR9QQIDAQABo2YwZDAdBgNVHQ4EFgQUI84+93Iniliyzs3HSDatbYGsiJ4wHwYD
VR0RBBgwFoEOZW1haWxAYWNtZS5jb22HBH8AAAEwDgYDVR0PAQH/BAQDAgEGMBIG
A1UdEwEB/wQIMAYBAf8CAQAwDQYJKoZIhvcNAQELBQADggEBAIIihWWIcl+sKRmS
QB4wkjR9UA7QV96lbm+HFE5qvP5xVXss+PmSjLjeNZFfX65tGlKXWDmYstcw/jon
hnJVe/jxjIZ3GddrVfHdwOEQ+FORQyfxkLAQuHKvm/2PobGNsU0rOw14Ur4Eea6P
pIl70eJhRX22dkOhb+y6jz+k+L52HbzMz/X6yUnTFAJzobJD0C1vGAx3FgPdbUqF
fXYO/Q8NNrk+4561eT3x9T4RIj/0ZkBal0yQEdYnd+lOIkEmk7vmO1/eyb6+66rs
3wz4DIxtfhJIUlj0mBL0KkyDDDoc0oFTf5V/xrYls1dJ35DNFoG/KBJGgGbaW41t
vTz+0JA=
-----END CERTIFICATE-----
---
apiVersion: v1
kind: Secret
metadata:
namespace: kube-system
name: "vsphere-auth-2"
stringData:
admin-username: "example-admin3@vsphere.local"
admin-password: "nWKCITwqKTaY5@M5"
ca-crt: |
-----BEGIN CERTIFICATE-----
MIIEITCCAwmgAwIBAgIJAN4alqihWQukMA0GCSqGSIb3DQEBCwUAMIGbMQswCQYD
VQQDDAJDQTEXMBUGCgmSJomT8ixkARkWB3ZzcGhlcmUxFTATBgoJkiaJk/IsZAEZ
FgVsb2NhbDELMAkGA1UEBhMCVVMxEzARBgNVBAgMCkNhbGlmb3JuaWExHTAbBgNV
BAoMFGF0bC1xdWFsLXZjMDcuYW50aG9zMRswGQYDVQQLDBJWTXdhcmUgRW5naW5l
ZXJpbmcwHhcNMjMwMzI2MTc0NjE1WhcNMzMwMzIzMTc0NjE1WjCBmzELMAkGA1UE
AwwCQ0ExFzAVBgoJkiaJk/IsZAEZFgd2c3BoZXJlMRUwEwYKCZImiZPyLGQBGRYF
bG9jYWwxCzAJBgNVBAYTAlVTMRMwEQYDVQQIDApDYWxpZm9ybmlhMR0wGwYDVQQK
DBRhdGwtcXVhbC12YzA3LmFudGhvczEbMBkGA1UECwwSVk13YXJlIEVuZ2luZWVy
aW5nMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAuvM3aSemSrBxWVei
6pYlRvLWaCva2Q0MQvmUdVISa9uul/PHE2lwAcTAAr3Sayat2D5IRjd7NWbzaLVQ
Sxel0TINpMfITDT0x6lZ8FfKgrRpY30CPZQlgVo16rGKE0V+wHTkGYIzRITETzuu
z6nkpzvryh6JadSf4wrGj1TmrYpqYEmdzf7bLmz4Rql5PgVco7z+pqo0BA+UU/Uc
/OtEcVKAyaifHzZwPlscOpKpskQrP4Ke6i3iuyrEmaDH+4sQ1TDrcYpUBfqkl+xT
0G6ZKHs6KP18x0Xg4ifeC8x7sgajJ20TpbkDY4KtBdraj3HB4gZCxg7qY/0G75yF
C2bZ4wIDAQABo2YwZDAdBgNVHQ4EFgQUeE+R+gRo1oU578dyiyq4tPYefpIwHwYD
VR0RBBgwFoEOZW1haWxAYWNtZS5jb22HBH8AAAEwDgYDVR0PAQH/BAQDAgEGMBIG
A1UdEwEB/wQIMAYBAf8CAQAwDQYJKoZIhvcNAQELBQADggEBADzBUXsxICPGxt1o
wPrbmWhkrPy2pNr9unP/d+Py20groZ/KQ/d6dzDN7pxc6BtQbMfho7pij+mf3aHq
oBo+J80Ha/vZExMMwYrp/OTlxy2Jdb5pzxZQtWqNVS5SkzNtDs7DhXDTY19TBZhZ
4d+/g2eSq2/dRT7zF8q3LH6mmq0EbSRSDOm8r6AUdWt+Ov7YKTYk9c+5UTL9M9u4
1+VBkF34hB/xc1fsFSPHTQQDOlAy5HTZgM3ygtuhmAY+UUQVLZf+8sJh+5zqc6gw
Ecnz7HRcRPUitKACsxUm4f5VHiKUMrIBP5U1dovl4kUN8Ue0e+KnIjIGKjp4wrHi
UtQboUw=
-----END CERTIFICATE-----
---
apiVersion: vmware.cluster.gke.io/v1alpha1
kind: VSphereInfraConfig
metadata:
name: default
credentials:
vCenters:
- address: "vc03.example"
secretName: "vsphere-auth-0"
secretNamespace: "kube-system"
- address: "vc13.example"
secretName: "vsphere-auth-1"
secretNamespace: "kube-system"
- address: "vc07.example"
secretName: "vsphere-auth-2"
secretNamespace: "kube-system"
topologyDomains:
- name: "topology-domain-0"
topologyLabels:
"topology.kubernetes.io/zone": "zone-0"
compute:
vcenter: "vc03.example"
datacenter: "vc03"
cluster: "workloads3"
resourcePool: "vc03-default-pool"
storage:
datastore: "vsanDatastore"
network:
vsphereNetwork: "qual-343"
gateway: "203.0.113.1"
dnsServers:
- "192.0.2.1"
- "192.0.2.2"
ntpServers:
- "203.0.113.50"
- name: "topology-domain-1"
topologyLabels:
"topology.kubernetes.io/zone": "zone-1"
compute:
vcenter: "vc13.example"
datacenter: "vc13-dc1"
cluster: "workloads13-1"
resourcePool: "vc13-dc1-default-pool"
storage:
datastore: "vsanDatastore-1c"
network:
vsphereNetwork: "scale-332"
gateway: "203.0.113.2"
dnsServers:
- "192.0.2.10"
- "192.0.2.11"
ntpServers:
- "203.0.113.51"
- name: "topology-domain-2"
topologyLabels:
"topology.kubernetes.io/zone": "zone-2"
compute:
vcenter: "vc07.example"
datacenter: "vc07"
cluster: "workloads7"
resourcePool: "vc07-default-pool"
storage:
datastore: "vsanDatastore"
network:
vsphereNetwork: "qual-323"
gateway: "203.0.113.3"
dnsServers:
- "192.0.2.21"
- "192.0.2.22"
ntpServers:
- "203.0.113.52"