Como configurar uma política de DNS para um contêiner?
O CCE usa dnsPolicy para identificar diferentes políticas de DNS para cada pod. O valor de dnsPolicy pode ser um dos seguintes:
- None: nenhuma política de DNS está configurada. Nesse modo, você pode personalizar a configuração do DNS, e o dnsPolicy precisa ser usado junto com dnsConfig para personalizar o DNS.
- Default: alguns dizem que o modo padrão está usando o computador host, o que não é preciso.
Neste modo, o kubelet determina a política de DNS a ser usada. Por padrão, o kubelet usa o arquivo /etc/resolv.conf do host. No entanto, o kubelet pode configurar de forma flexível qual arquivo será usado para políticas do DNS. Você pode usar o parâmetro kubelet –resolv-conf=/etc/resolv.conf para determinar o endereço do arquivo de resolução do DNS.
- ClusterFirst: nesse modo, o DNS no pod usa o serviço DNS configurado no cluster. Ou seja, o serviço kube-dns ou CoreDNS no Kubernetes é usado para resolução de nomes de domínio. Se a resolução falhar, a configuração do DNS do computador host será usada para resolução.
Se o tipo de dnsPolicy não for especificado, ClusterFirst será usado por padrão.
- Se o tipo de dnsPolicy estiver definido como Default, a configuração de resolução de nome será herdada do nó de trabalho onde o pod está em execução.
- Se o tipo de dnsPolicy for definido como ClusterFirst, as consultas de DNS serão enviadas para o serviço kube-dns.
O serviço kube-dns responde a consultas nos domínios que usam o sufixo de domínio de cluster configurado como raiz. Todas as outras consultas (por exemplo www.kubernetes.io) são encaminhadas para o servidor de nomes upstream herdado do nó. Antes que esse recurso fosse suportado, os domínios de stub eram normalmente introduzidos por um resolvedor personalizado, em vez do DNS upstream. No entanto, isso faz com que o próprio resolvedor personalizado seja o caminho chave para a resolução de DNS, onde problemas de escalabilidade e disponibilidade podem tornar as funções de DNS indisponíveis para o cluster. Esse recurso permite que você introduza resolvedores personalizados sem assumir todo o caminho de resolução.
Se uma carga de trabalho não precisar usar o CoreDNS no cluster, você poderá usar kubectl ou chamar as APIs para definir a dnsPolicy como padrão.