Discos de inicialização personalizados

Veja nesta página como personalizar um disco de inicialização de nós nos clusters e pools do Google Kubernetes Engine (GKE).

Visão geral

Quando você cria um cluster do GKE ou um pool de nós, pode escolher o tipo de disco permanente em que o sistema de arquivos de nós do Kubernetes fica instalado para cada nó. Os discos permanentes padrão são o tipo predefinido pelo GKE. É possível também especificar um disco permanente SSD.

Discos permanentes SSD podem melhorar o desempenho de seus nós para determinadas cargas de trabalho. No entanto, a escolha deles como discos de inicialização de nós gera mais custos. Para mais informações, consulte Opções de armazenamento.

Benefícios do uso de um disco SSD de inicialização

Usar um disco permanente SSD como um disco de inicialização para seus nós oferece alguns benefícios de desempenho:

  • Os nós têm tempos de inicialização mais rápidos.
  • Binários e arquivos disponibilizados de contêineres estão disponíveis para o nó mais rapidamente. Isso pode aumentar o desempenho das cargas de trabalho com muito tráfego de E/S, como aplicativos de exibição da Web que hospedam arquivos estáticos ou jobs em lote de curta execução com muito tráfego de E/S.
  • Os arquivos armazenados na mídia local do nó (expostos por meio de volumes hostPath ou emptyDir) podem apresentar um desempenho melhor de I/O.

Para mais informações sobre como os discos permanentes SSD funcionam em comparação com o padrão, consulte a comparação do desempenho do armazenamento em blocos.

Como especificar um tipo de disco de inicialização de nós

É possível especificar o tipo de disco de inicialização (padrão ou SSD) ao criar um cluster ou pool de nós.

gcloud

Para criar um cluster com um disco de inicialização personalizado, execute o seguinte comando.

[DISK-TYPE] pode ser:

  • pd-standard, um disco permanente padrão
  • pd-ssd, um disco permanente SSD
gcloud container clusters create [CLUSTER_NAME] --disk-type [DISK_TYPE]

Para criar um pool de nós em um cluster atual:

gcloud container node-pools create [POOL_NAME] --disk-type [DISK_TYPE]

Por exemplo, o comando a seguir cria um cluster, example-cluster, com o tipo de disco permanente SSD, pd-ssd:

gcloud container clusters create example-cluster --disk-type pd-ssd

Console

Para selecionar o disco de inicialização ao criar um cluster com o Console do Google Cloud, execute as seguintes etapas:

  1. Acesse o menu do Google Kubernetes Engine no Console do Cloud.

    Acessar o menu do Google Kubernetes Engine

  2. Clique em Criar cluster.

  3. Escolha o Cluster padrão ou um modelo apropriado para a carga de trabalho.

  4. Configure o cluster como quiser.

  5. Clique em Edição avançada do pool de nós padrão. No menu suspenso Tipo de disco de inicialização, selecione Disco permanente padrão ou Disco permanente SSD.

  6. Clique em Salvar para fechar a sobreposição Edição avançada.

  7. Clique em Criar O pool de nós padrão do cluster usa o tipo de disco de inicialização especificado.

Para criar um pool de nós com um disco de inicialização personalizado:

  1. Acesse o menu do Google Kubernetes Engine no Console do Cloud.

    Acessar o menu do Google Kubernetes Engine

  2. Selecione o cluster pretendido.

  3. No menu Pools de nós, clique em Adicionar pool de nós.

  4. Configure seu pool de nós como quiser.

  5. No menu suspenso Tipo de disco de inicialização, selecione Disco permanente padrão ou Disco permanente SSD.

  6. Clique em Criar

Como proteger os discos de inicialização de nós

Um disco de inicialização de nós armazena a imagem do contêiner, alguns registros de processos do sistema, registros de pods e a camada de contêineres graváveis por padrão.

Se as cargas de trabalho usarem os volumes configMap, emptyDir ou hostPath, seus pods poderão gravar mais dados nos discos de inicialização de nós. Para interromper essa ação, configure emptyDir para ter suporte de tmpfs. Para saber como fazer isso, consulte a documentação do Kubernetes. Como os volumes secret, downwardAPI e projected têm o suporte de tmpfs, os pods que os utilizam não gravam dados no disco de inicialização de nós.

Por padrão, o Google Cloud criptografa o conteúdo do cliente em repouso, incluindo os discos de inicialização de nós, e o GGE gerencia a criptografia sem que você precise realizar nenhuma ação.

No entanto, ao usar volumes que gravam no disco de inicialização de nós, é possível ter um controle ainda melhor da proteção dos dados de carga de trabalho no GKE. Para fazer isso, impeça que os pods gravem nos discos de inicialização de nós ou use as chaves de criptografia gerenciadas pelo cliente (CMEKs) nos discos de inicialização de nós.

Como impedir que os pods gravem em discos de inicialização

É possível impedir a gravação de dados diretamente dos pods nos discos de inicialização de nós e determinar que isso ocorra apenas nos discos anexados. Basta excluir os seguintes volumes do campo volumes da sua PodSecurityPolicy:

  • configMap
  • emptyDir (se não houver suporte de tmpfs)
  • hostPath

No exemplo a seguir, a PodSecurityPolicy, preventWritingToBootDisk.yaml, impede gravações nos discos de inicialização:

apiVersion: policy/v1beta1
kind: PodSecurityPolicy
metadata:
  name: preventWritingToBootDisk
spec:
  Volumes: # Exclude configMap, emptyDir (if not backed by tmpfs), and hostPath.
           # Include all other desired volumes.
     - 'persistentVolumeClaim'
  # Required fields.
  runAsUser:
    rule: 'RunAsAny'
  seLinux:
    rule: 'RunAsAny'
  supplementalGroups:
    rule: 'RunAsAny'
  fsGroup:
    rule: 'RunAsAny'

Criptografia gerenciada pelo cliente

Se você quiser controlar e gerenciar a rotação de chave de criptografia, opte pelas CMEKs. Elas são usadas para criptografar as chaves que criptografam seus dados. Para saber como utilizá-las em discos de inicialização de nós, consulte Como usar chaves de criptografia gerenciadas pelo cliente.

Há algumas limitações no uso de CMEKs em discos de inicialização de nós:

  • Não é possível ativar ou desativar a criptografia gerenciada pelo cliente para discos de inicialização em clusters ou pools de nós existentes.
  • Só é possível utilizar CMEKs em discos permanentes pd-standard e pd-ssd.

A seguir