Dopo aver eseguito il provisioning di un cluster TKG, è consigliabile distribuire un carico di lavoro di prova e convalidare la funzionalità del cluster.
Distribuire un'app di prova per verificare che il cluster TKG sia in esecuzione.
Prerequisiti
- Effettuare il provisioning di un cluster TKG.
- Connettersi al cluster TKG.
Procedura
- Effettuare il provisioning di un cluster TKG.
- Accedere al Supervisore tramite kubectl.
kubectl vsphere login --server=<IP or FQDN> --vsphere-username <USERNAME>
- Passare al contesto di configurazione di Spazio dei nomi vSphere in cui è stato eseguito il provisioning del cluster TKGS.
kubectl config use-context VSPHERE-NAMESPACE
- Accedere al cluster TKG di destinazione.
kubectl vsphere login --server=<IP or FQDN> --vsphere-username <USERNAME> \ --tanzu-kubernetes-cluster-name CLUSTER-NAME \ --tanzu-kubernetes-cluster-namespace NAMESPACE-NAME
- Creare il file
ping-pod.yaml
con il contenuto seguente.apiVersion: v1 kind: Pod metadata: name: ping-pod namespace: default spec: containers: - image: busybox:1.34 name: busybox command: ["ping", "-c"] args: ["1", "8.8.8.8"] imagePullSecrets: - name: regcred restartPolicy: Never
- Creare le credenziali del registro
regcred
.L'immagine del container utilizzata per questo scenario (busybox) viene estratta dal registro di Docker Hub pubblico, che potrebbe limitare l'estrazione delle immagini. In tal caso, sarà necessario un account Docker Hub e un segreto dell'estrazione dell'immagine ("regcred") a cui si fa riferimento nella specifica del pod. Per creare questo segreto, vedere Creazione di un segreto per le credenziali del registro privato. - Configurare la sicurezza del pod in base alle necessità.
Se si utilizza Tanzu Kubernetes versione v1.24 o precedente, procedere con il passaggio successivo e creare il pod.Se si utilizza Tanzu Kubernetes versione v1.25, gli avvisi PSA sono abilitati. È possibile procedere con il passaggio successivo e creare il pod. Si tenga tuttavia presente che verrà visualizzato un avviso relativo alle violazioni della sicurezza del pod, che è possibile ignorare.
Warning: would violate PodSecurity "restricted:latest": allowPrivilegeEscalation != false (container "busybox" must set securityContext.allowPrivilegeEscalation=false), unrestricted capabilities (container "busybox" must set securityContext.capabilities.drop=["ALL"]), runAsNonRoot != true (pod or container "busybox" must set securityContext.runAsNonRoot=true), seccompProfile (pod or container "busybox" must set securityContext.seccompProfile.type to "RuntimeDefault" or "Localhost")
Se si utilizza Tanzu Kubernetes versione v1.26 o successiva, vengono applicate le restrizioni PSA. Se si tenta di creare il pod come illustrato nel passaggio successivo, l'operazione non riesce e viene visualizzato il messaggio di errore seguente.Error from server (Forbidden): error when creating "ping-pod.yaml": pods "ping-pod" is forbidden: violates PodSecurity "restricted:latest": allowPrivilegeEscalation != false (container "busybox" must set securityContext.allowPrivilegeEscalation=false), unrestricted capabilities (container "busybox" must set securityContext.capabilities.drop=["ALL"]), runAsNonRoot != true (pod or container "busybox" must set securityContext.runAsNonRoot=true), seccompProfile (pod or container "busybox" must set securityContext.seccompProfile.type to "RuntimeDefault" or "Localhost")
Per risolvere questo problema, eseguire il comando seguente nello spazio dei nomidefault
in cui viene creato il pod. Si tenga presente che in questo modo si rimuovono le restrizioni PSA nello spazio dei nomi.kubectl label --overwrite ns default pod-security.kubernetes.io/enforce=privileged
In alternativa, è possibile applicare securityContext direttamente al pod, ad esempio:... spec: containers: - image: busybox:1.34 name: busybox command: ["ping", "-c"] args: ["1", "8.8.8.8"] securityContext: allowPrivilegeEscalation: false capabilities: drop: ["ALL"] runAsNonRoot: true runAsUser: 1000 seccompProfile: type: "RuntimeDefault" ...
- Applicare il file YAML.
kubectl apply -f ping-pod.yaml
Risultato previsto:pod/ping-pod created
- Verificare che il pod sia stato completato correttamente.
kubectl get pods -n default
NAME READY STATUS RESTARTS AGE ping-pod 0/1 Completed 0 13s
- Verificare che il pod eseguiva il ping del server DNS.
kubectl logs ping-pod -f
Risultato previsto:PING 8.8.8.8 (8.8.8.8): 56 data bytes 64 bytes from 8.8.8.8: seq=0 ttl=106 time=33.352 ms --- 8.8.8.8 ping statistics --- 1 packets transmitted, 1 packets received, 0% packet loss round-trip min/avg/max = 33.352/33.352/33.352 ms
- Eliminare il pod.
kubectl delete -f ping-pod.yaml
- Verificare che il pod sia stato eliminato.
kubectl get pods