Como faço para solucionar problemas de contêineres confidenciais?
Analise esses possíveis problemas.
Os problemas podem ser causados por uma configuração incorreta durante a instalação.
Para começar a solucionar problemas, execute os seguintes comandos para reunir o máximo de dados possível sobre os contêineres confidenciais.
-
Reúna informações sobre o operador.
oc get csv -n openshift-sandboxed-containers-operatoroc describe csv -n openshift-sandboxed-containers-operatoroc get all -n openshift-sandboxed-containers-operator -
Recupere registros e eventos de todos os pods relacionados ao site DaemonSets.
oc describe pod/osc-caa-ds-<random string> -n openshift-sandboxed-containers-operatoroc logs pod/osc-caa-ds-<random string> -n openshift-sandboxed-containers-operatoroc describe pod/osc-config-sync-install-<random string> -n openshift-sandboxed-containers-operatoroc logs pod/osc-config-sync-install-<random string> -n openshift-sandboxed-containers-operatoroc describe pod/osc-rpm-install-<random string> -n openshift-sandboxed-containers-operatoroc logs pod/osc-rpm-install-<random string> -n openshift-sandboxed-containers-operator -
Reúna informações sobre as cápsulas.
a. Reúna informações sobre o gerente do controlador.
oc describe pod/controller-manager-<random string> -n openshift-sandboxed-containers-operatoroc logs pod/controller-manager-<random string> -n openshift-sandboxed-containers-operatorb. Coletar registros para uma sequência aleatória.
oc logs pod/<random string>oc describe pod/<random string>c. Reúna informações sobre o site
openshift-sandboxed-containers-operator-bundle.oc logs pod/trikprot-openshift-sandboxed-containers-operator-bundle-<version>oc describe pod/trikprot-openshift-sandboxed-containers-operator-bundle-<version> -
Reúna informações sobre a ConfigMaps.
a. Reunir informações sobre os portões de recursos.
oc get configmap/osc-feature-gates -n openshift-sandboxed-containers-operator -o yamlb. Reúna informações sobre os pods de pares.
oc get configmap/peer-pods-cm -n openshift-sandboxed-containers-operator -o yamlc. Reúna informações sobre os segredos.
oc get secret/auth-json-secret -n openshift-sandboxed-containers-operatoroc get secret/peer-pods-secret -n openshift-sandboxed-containers-operatord. Reúna informações sobre a KataConfig.
oc get kataconfigs.kataconfiguration.openshift.io/kata-runtime-settings -n openshift-sandboxed-containers-operator -o yamle. Reúna informações sobre as definições de recursos personalizados.
oc get crd/peerpods.confidentialcontainers.orgoc get crd/kataconfigs.kataconfiguration.openshift.io -
Verifique a capacidade e os limites dos pods de pares.
a. Verifique o limite atual de pods de pares em todos os nós de trabalho.
oc get nodes -o json | jq -r '[.items[] | select (.status.allocatable["kata.peerpods.io/vm"] != null)| .status.allocatable["kata.peerpods.io/vm"] | tonumber] | add'b. Verifique os recursos alocados em cada nó de trabalho.
for n in $(oc get nodes -o name); do echo "=== $n ===" oc describe "$n" | sed -n '/Allocated resources:/,/Events:/p' donec. Contar o número de pods de pares em execução no momento.
oc get pods -A -o json | jq '.items[] | select(.spec.runtimeClassName == "kata-remote") | "\(.metadata.namespace)/\(.metadata.name)"' | wc -l
Problemas e resoluções comuns
Insuficiente kata.peerpods.io/vm error
Se você vir um erro como o seguinte ao programar pods de pares:
Warning FailedScheduling 0/30 nodes are available: 9 Insufficient kata.peerpods.io/vm. preemption: 0/30 nodes are available: 9 No preemption victims found for incoming pod.
Esse erro indica que você atingiu o limite de PEERPODS_LIMIT_PER_NODE em seus nós de trabalho. O limite padrão é de 10 pods de pares por nó de trabalho.
Para resolver esse problema:
-
Verifique o limite atual e quantos pods de pares estão em execução.
oc get nodes -o json | jq '.items[] | {name: .metadata.name, allocatable: .status.allocatable["kata.peerpods.io/vm"], capacity: .status.capacity["kata.peerpods.io/vm"]}' -
Aumente o valor de
PEERPODS_LIMIT_PER_NODEempeer-pods-cmConfigMap. Para obter mais informações, consulte Criação de contêineres confidenciais.oc -n openshift-sandboxed-containers-operator patch cm peer-pods-cm \ --type merge \ -p '{"data":{"PEERPODS_LIMIT_PER_NODE":"24"}}' -
Reinicie o conjunto de daemons do Cloud API Adapter.
oc -n openshift-sandboxed-containers-operator rollout restart daemonset/osc-caa-ds -
Verifique se o novo limite foi aplicado.
oc get nodes -o json | jq -r '[.items[] | select (.status.allocatable["kata.peerpods.io/vm"] != null)| .status.allocatable["kata.peerpods.io/vm"] | tonumber] | add'
Para obter mais informações sobre limites de pods de pares e planejamento de capacidade, consulte Quantos pods de pares posso executar por nó de trabalho?
Erro de autenticação do IAM após a atualização para o OSC Operator 1.12.1
Se você encontrar um erro semelhante ao seguinte nos logs do Adaptador de API em Nuvem (CAA) após atualizar para a versão do Operador de Contêineres em Sandbox d OpenShift 1.12.1:
cloud-api-adaptor: cluster error with:
Unauthorized
further details:
{
"StatusCode": 401,
"Result": {
"code": "A0007",
"description": "You do not have the correct permissions to perform this action..."
}
}
A versão 1.12.1 introduziu um novo requisito para obter automaticamente o grupo de segurança do cluster por meio da API do serviço de cluster do IKS ( IBM Cloud ). Ao usar o serviço de autenticação do Google Cloud ( IBMCLOUD_IAM_PROFILE_ID ) para autenticação (identidade do recurso de computação), o perfil do IAM pode não ter as permissões necessárias para consultar a API de serviço do cluster.
Escolha uma das opções a seguir.
- Conceda permissões adicionais de IAM (recomendado)
-
Atualize o perfil do IAM para incluir permissões para a API do serviço do cluster IKS, especificamente a capacidade de chamar
GetClusterTypeSecurityGroups(). Entre em contato com o administrador do IBM Cloud para adicionar as permissões necessárias. - Definir explicitamente o ID do grupo de segurança
-
Configure a variável de ambiente
IBMCLOUD_VPC_SG_IDno arquivopeer-pods-cm( ConfigMap ) para ignorar a pesquisa automática do grupo de segurança do cluster. Em seguida, reinicie o daemonset do Cloud API Adapter.- Substitua “ ConfigMap ” pelo ID do seu grupo de segurança.
oc -n openshift-sandboxed-containers-operator patch cm peer-pods-cm \ --type merge \ -p '{"data":{"IBMCLOUD_VPC_SG_ID":"<your-security-group-id>"}}' ``` 2. Reinicie o conjunto de daemons do Cloud API Adapter. ```sh {: pre} oc -n openshift-sandboxed-containers-operator rollout restart daemonset/osc-caa-ds ``` - Mudar para a autenticação por chave de API
-
Mude da autenticação “
IBMCLOUD_IAM_PROFILE_ID” para “IBMCLOUD_API_KEY”. A autenticação por chave de API utiliza um ID de serviço com políticas explícitas do IAM, cujo escopo você pode definir para incluir as permissões necessárias para o serviço do cluster. Atualize o segredo “peer-pods-secret” com sua chave de API, em vez do ID do perfil do IAM.
Para obter mais informações sobre a alteração subjacente, consulte o commit do cloud-api-adaptor no repositório upstream: dde66055.
Erro de CPU insuficiente
Se você vir um erro como o seguinte ao programar pods de pares:
Warning FailedScheduling 0/3 nodes are available: 3 Insufficient cpu. preemption: 0/3 nodes are available: 3 No preemption victims found for incoming pod.
Esse erro indica que seus nós de trabalho não têm recursos de CPU suficientes disponíveis. Cada pod de pares consome aproximadamente 250m CPU no nó de trabalho para a construção do pod Kubernetes, mesmo que a carga de trabalho real seja executada em um VSI separado.
Para resolver esse problema:
-
Verifique a alocação de CPU em seus nós de trabalho.
for n in $(oc get nodes -o name); do echo "=== $n ===" oc describe "$n" | sed -n '/Allocated resources:/,/Events:/p' done -
Selecione uma das opções a seguir:
- Adicione mais nós de trabalho ao seu cluster
- Use nós de trabalho com mais vCPUs
- Reduza o valor de
PEERPODS_LIMIT_PER_NODEpara corresponder à capacidade de seu nó de trabalho - Remover outras cargas de trabalho dos nós de trabalho para liberar recursos da CPU