Gerenciamento de campos do Kubernetes
Os complementos do Amazon EKS são instalados no cluster usando as configurações padrão de prática recomendada. Para obter mais informações sobre como adicionar um complemento do Amazon EKS ao cluster, consulte Complementos do Amazon EKS.
Talvez você queira personalizar a configuração de um complemento do Amazon EKS para habilitar recursos avançados. O Amazon EKS usa o recurso de aplicação no lado do servidor do Kubernetes para permitir o gerenciamento de um complemento pelo Amazon EKS sem substituir a configuração por configurações que não são gerenciadas pelo Amazon EKS. Para obter mais informações, consulte Server-Side Applykube-controller-manager
, sem problemas.
Importante
A modificação de um campo gerenciado pelo Amazon EKS impede que o Amazon EKS gerencie o complemento e pode resultar na substituição das alterações quando um complemento for atualizado.
Exibir status do gerenciamento do campo
Você pode usar o kubectl
para ver quais campos são gerenciados pelo Amazon EKS para qualquer complemento do Amazon EKS.
Para ver o status de gerenciamento de um campo
-
Determine qual complemento você deseja examinar. Para ver todas as
deployments
e osDaemonSets
implantados no cluster, consulte Visualizar os recursos do Kubernetes. -
Exiba os campos gerenciados para um complemento executando o seguinte comando:
kubectl get
type
/add-on-name
-nadd-on-namespace
-o yamlPor exemplo, você pode ver os campos gerenciados do complemento CoreDNS com o comando a seguir.
kubectl get deployment/coredns -n kube-system -o yaml
O gerenciamento de campo é listado na seção a seguir no resultado retornado.
[...] managedFields: - apiVersion: apps/v1 fieldsType: FieldsV1 fieldsV1: [...]
nota
Se a saída não exibir
managedFields
, adicione
ao comando e execute-o novamente. A versão do--show-managed-fields
kubectl
que você está usando determina se os campos gerenciados serão retornados por padrão.
Entender a sintaxe de gerenciamento de campo na API do Kubernetes
Quando você visualiza os detalhes de um objeto do Kubernetes, tanto os campos gerenciados quanto os não gerenciados são retornados na saída. Os campos gerenciados podem ser de um dos seguintes tipos:
-
Fully managed (Totalmente gerenciado) – Todas as chaves para o campo são gerenciadas pelo Amazon EKS. Modificações em qualquer valor neste campo geram conflito.
-
Partially managed (Parcialmente gerenciado) – Algumas chaves para o campo são gerenciadas pelo Amazon EKS. Somente modificações nas chaves gerenciadas explicitamente pelo Amazon EKS geram conflito.
Ambos os tipos de campos são marcados com manager: eks
.
Cada chave é um .
que representa o próprio campo, que sempre mapeia para um conjunto vazio, ou uma string que representa um subcampo ou item. A saída para o gerenciamento de campo consiste nos seguintes tipos de declarações:
-
f:
, em quename
é o nome de um campo em uma lista.name
-
k:
, em quekeys
é um mapa dos campos do item em uma lista.keys
-
v:
, em quevalue
é o valor exato formatado em JSON do item de uma lista.value
-
i:
, em queindex
é a posição de um item na lista.index
As seguintes partes do resultado para o complemento CoreDNS ilustram as declarações anteriores:
-
Fully managed fields (Campos totalmente gerenciados) – Se um campo gerenciado tiver um (campo)
f:
especificado, mas nãok:
(chave), todo o campo é gerenciado. Modificações em quaisquer valores neste campo causam um conflito.No resultado a seguir, é possível ver que o contêiner chamado
coredns
é gerenciado peloeks
. Os subcamposargs
,image
eimagePullPolicy
também são gerenciados peloeks
. Modificações em qualquer valor nesse campo geram conflito.[...] f:containers: k:{"name":"coredns"}: .: {} f:args: {} f:image: {} f:imagePullPolicy: {} [...] manager: eks [...]
-
Partially managed fields (campos parcialmente gerenciados) – Se uma chave gerenciada tiver um valor especificado, as chaves declaradas são gerenciadas para esse campo. A modificação das chaves especificadas gera conflito.
No resultado a seguir, é possível ver que o
eks
gerencia os volumesconfig-volume
etmp
, definidos com a chavename
.[...] f:volumes: k:{"name":"config-volume"}: .: {} f:configMap: f:items: {} f:name: {} f:name: {} k:{"name":"tmp"}: .: {} f:name: {} [...] manager: eks [...]
-
Adição de chaves em campos gerenciados parcialmente – Se apenas um valor de chave específico for gerenciado, você pode adicionar, com segurança, mais chaves, como, por exemplo, argumentos, em um campo sem gerar conflito. Se você adicionar outras chaves, certifique-se de que o campo não seja gerenciado primeiro. Adicionar ou modificar qualquer valor gerenciado causa um conflito.
No resultado a seguir, é possível ver que tanto a chave do
name
, quando oname
são gerenciados. Adicionar ou modificar qualquer nome de contêiner causa um conflito com essa chave gerenciada.[...] f:containers: k:{"name":"coredns"}: [...] f:name: {} [...] manager: eks [...]