Este conteúdo foi traduzido por máquina para sua conveniência e a Huawei Cloud não pode garantir que o conteúdo foi traduzido com precisão. Para exibir o conteúdo original, use o link no canto superior direito para mudar para a página em inglês.
Atualizado em 2024-11-28 GMT+08:00

Criação de uma Implantação

Cenário

As Implantações são cargas de trabalho (por exemplo, Nginx) que não armazenam dados ou status. Você pode criar Implantações no console do CCE ou executando comandos kubectl.

Pré-requisitos

  • Antes de criar uma carga de trabalho, você deve ter um cluster disponível. Para obter detalhes sobre como criar um cluster, consulte Compra de um cluster do CCE.
  • Para habilitar o acesso público a uma carga de trabalho, verifique se um EIP ou balanceador de carga foi vinculado a pelo menos um nó no cluster.

    Se um pod tiver vários contêineres, certifique-se de que as portas usadas pelos contêineres não entrem em conflito entre si. Caso contrário, a criação da Implantação falhará.

Usar o console do CCE

  1. Efetue logon no console do CCE.
  2. Clique no nome do cluster para acessar o console do cluster, escolha Workloads no painel de navegação e clique em Create Workload no canto superior direito.
  3. Defina informações básicas sobre a carga de trabalho.

    Basic Info
    • Workload Type: selecione Deployment. Para obter detalhes sobre os tipos de carga de trabalho, consulte Visão geral.
    • Workload Name: insira o nome da carga de trabalho. Digite de 1 a 63 caracteres começando com uma letra minúscula e terminando com uma letra minúscula ou dígito. Somente letras minúsculas, dígitos e hifens (-) são permitidos.
    • Namespace: selecione o namespace da carga de trabalho. O valor padrão é default. Você também pode clicar em Create Namespace para criar um. Para mais detalhes, consulte Criação de um namespace.
    • Pods: digite o número de pods da carga de trabalho.
    • Container Runtime: um cluster do CCE usa runC por padrão, enquanto um cluster do CCE Turbo suporta runC e Kata. Para obter detalhes sobre as diferenças, consulte Tempo de execução do Kata e tempo de execução comum.
    • Time Zone Synchronization: especifique se deseja ativar a sincronização de fuso horário. Depois que a sincronização de fuso horário estiver ativada, o contêiner e o nó usarão o mesmo fuso horário. A função de sincronização de fuso horário depende do disco local montado no contêiner. Não modifique nem exclua o fuso horário. Para mais detalhes, consulte Configuração da sincronização de fuso horário.
    Container Settings
    • Informações sobre o contêiner
      Vários contêineres podem ser configurados em um pod. Você pode clicar em Add Container à direita para configurar vários contêineres para o pod.
      • Basic Info: configure informações básicas sobre o contêiner.

        Parâmetro

        Descrição

        Container Name

        Nomeie o contêiner.

        Pull Policy

        Política de atualização ou extração de imagem. Se você selecionar Always, a imagem será extraída do repositório de imagens a cada vez. Se você não selecionar Always, a imagem existente do nó é usada preferencialmente. Se a imagem não existir, a imagem será extraída do repositório de imagens.

        Image Name

        Clique em Select Image e selecione a imagem usada pelo contêiner.

        Para usar uma imagem de terceiros, consulte Uso de imagens de terceiros.

        Image Tag

        Selecione a tag de imagem a ser implementada.

        CPU Quota

        • Request: número mínimo de núcleos de CPU exigidos por um contêiner. O valor padrão é 0,25 núcleos.
        • Limit: número máximo de núcleos de CPU disponíveis para um contêiner. Não deixe Limit não especificado. Caso contrário, ocorrerá um uso intensivo de recursos de contêiner e sua carga de trabalho poderá exibir um comportamento inesperado.

        Se Request e Limit não forem especificados, a cota não é limitada. Para obter mais informações e sugestões sobre Request e Limit, consulte Configuração de especificações do contêiner.

        Memory Quota

        • Request: quantidade mínima de memória requerida por um contêiner. O valor padrão é 512 MiB.
        • Limit: quantidade máxima de memória disponível para um contêiner. Quando o uso de memória exceder o limite de memória especificado, o contêiner será encerrado.

        Se Request e Limit não forem especificados, a cota não é limitada. Para obter mais informações e sugestões sobre Request e Limit, consulte Configuração de especificações do contêiner.

        (Optional) GPU Quota

        Configurável somente quando o cluster contém nós de GPU e o complemento Suíte IA do CCE (GPU NVIDIA) está instalado.

        • All: nenhuma GPU será usada.
        • Dedicated: os recursos da GPU são dedicados ao contêiner.
        • Shared: porcentagem de recursos de GPU usados pelo contêiner. Por exemplo, se esse parâmetro for definido como 10%, o contêiner usará 10% dos recursos da GPU.

        Para obter detalhes sobre como usar GPUs no cluster, consulte Agendamento de GPU padrão no Kubernetes.

        (Optional) NPU Quota

        Número de chips de Ascend 310 necessários para o contêiner. O valor deve ser um número inteiro e o complemento Suíte de IA do CCE (Ascend NPU) deve ser instalado.

        Para obter detalhes sobre como usar NPUs no cluster, consulte Agendamento de NPU.

        (Optional) Privileged Container

        Programas em um contêiner privilegiado têm certos privilégios.

        Se Privileged Container estiver habilitado, os privilégios serão atribuídos ao contêiner. Por exemplo, contêineres privilegiados podem manipular dispositivos de rede na máquina host e modificar parâmetros do kernel.

        (Optional) Init Container

        Se usar o contêiner como um contêiner init. Um contêiner init não suporta verificação de integridade.

        Um contêiner init é um contêiner especial que é executado antes que outros contêineres de aplicações em um pod sejam iniciados. Cada pod pode conter vários contêineres. Além disso, um pod pode conter um ou mais contêineres init. Os contêineres de aplicações em um pod são iniciados e executados somente após a conclusão da execução de todos os contêineres init. Para obter detalhes, consulte Contêineres init.

      • (Opcional) Lifecycle: configure as operações a serem executadas em uma fase específica do ciclo de vida do contêiner, como Startup Command, Post-Start e Pre-Stop. Para mais detalhes, consulte Definição dos parâmetros do ciclo de vida do contêiner.
      • (Opcional) Health Check: configure a sonda de vivacidade, a sonda pronta e a sonda de inicialização conforme necessário. Para mais detalhes, consulte Configuração da verificação de integridade para um contêiner.
      • (Opcional) Environment Variables: configure variáveis para o ambiente em execução do contêiner usando pares chave-valor. Essas variáveis transferem informações externas para contêineres executados em pods e podem ser modificadas de forma flexível após a implementação da aplicação. Para mais detalhes, consulte Configuração de uma variável de ambiente.
      • (Opcional) Data Storage: monte armazenamento local ou armazenamento em nuvem no contêiner. Os cenários de aplicações e os modos de montagem variam de acordo com o tipo de armazenamento. Para mais detalhes, consulte Armazenamento.

        Se a carga de trabalho contiver mais de um pod, os volumes do EVS não poderão ser montados.

      • (Opcional) Security Context: atribua permissões de contêiner para proteger o sistema e outros contêineres de serem afetados. Insira o ID do usuário para atribuir permissões de contêiner e impedir que sistemas e outros contêineres sejam afetados.
      • (Opcional) Logging: relate os logs de saída de contêiner padrão para o AOM por padrão, sem a necessidade de configurações manuais. Você pode configurar manualmente o caminho da coleção de logs. Para mais detalhes, consulte Uso do ICAgent para coletar logs de contêiner.

        Para desativar a saída padrão da carga de trabalho atual, adicione a anotação kubernetes.AOM.log.stdout: [] em Rótulos e anotações. Para obter detalhes sobre como usar essa anotação, consulte Tabela 1.

    • Image Access Credential: selecione a credencial usada para acessar o repositório de imagens. O valor padrão é default-secret. Você pode usar default-secret para acessar imagens no SWR. Para obter detalhes sobre default-secret, consulte default-secret.
    • (Opcional) GPU: All é selecionado por padrão. A instância da carga de trabalho será agendada para o nó do tipo de GPU especificado.

    (Opcional) Service Settings

    Um Serviço fornece acesso externo para pods. Com um endereço IP estático, um Serviço encaminha o tráfego de acesso aos pods e equilibra automaticamente a carga desses pods.

    Você também pode criar um Serviço depois de criar uma carga de trabalho. Para obter detalhes sobre Serviços de diferentes tipos, consulte Visão geral.

    (Opcional) Advanced Settings
    • Upgrade: especifique o modo de atualizar e os parâmetros de upgrade da carga de trabalho. Rolling upgrade e Replace upgrade são suportados. Para mais detalhes, consulte Configuração da política de atualização da carga de trabalho.
    • Scheduling: configure políticas de afinidade e antiafinidade para agendamento flexível de carga de trabalho. Afinidade de nó, afinidade de pod e antiafinidade de pod são suportadas. Para mais detalhes, consulte Política de agendamento (afinidade/antiafinidade).
    • Toleration: o uso de ambas manchas e tolerâncias permite (não forçosamente) que o pod seja agendado para um nó com as manchas correspondentes e controla as políticas de despejo de pod depois que o nó onde o pod está localizado é manchado. Para mais detalhes, consulte Manchas e tolerâncias.
    • Labels and Annotations: adicione rótulos ou anotações para pods usando pares chave-valor. Depois de inserir a chave e o valor, clique em Confirm. Para obter detalhes sobre como usar e configurar rótulos e anotações, consulte Rótulos e anotações.
    • DNS: configure uma política DNS separada para a carga de trabalho. Para mais detalhes, consulte Configuração de DNS.
    • APM Settings: use o Application Performance Management (APM) para fornecer uma análise de problemas e localização mais precisas para programas Java. Para mais detalhes, consulte Configuração de configurações de APM para análise de gargalo de desempenho.
    • Network configuration:

  4. Clique em Create Workload no canto inferior direito.

Usar kubectl

O procedimento a seguir usa o Nginx como exemplo para descrever como criar uma carga de trabalho usando o kubectl.

  1. Use o kubectl para se conectar ao cluster. Para mais detalhes, consulte Conexão a um cluster usando o kubectl.
  2. Crie e edite o arquivo nginx-deployment.yaml. nginx-deployment.yaml é um nome de arquivo de exemplo. Você pode renomeá-lo conforme necessário.

    vi nginx-deployment.yaml

    O seguinte é um exemplo de arquivo YAML. Para obter mais informações sobre Implementações, consulte a documentação do Kubernetes.

    apiVersion: apps/v1
    kind: Deployment
    metadata:
      name: nginx
    spec:
      replicas: 1
      selector:
        matchLabels:
          app: nginx
      strategy:
        type: RollingUpdate
      template:
        metadata:
          labels:
            app: nginx
        spec:
          containers:
          - image: nginx    # If you use an image from an open-source image registry, enter the image name. If you use an image in My Images, obtain the image path from SWR.
            imagePullPolicy: Always
            name: nginx
          imagePullSecrets:
          - name: default-secret

    Para obter detalhes sobre os parâmetros, consulte Tabela 1.

    Tabela 1 Parâmetros de Implementação YAML

    Parâmetro

    Descrição

    Obrigatório/opcional

    apiVersion

    Versão da API.

    NOTA:

    Defina este parâmetro com base na versão do cluster.

    • Para clusters v1.17 ou posterior, o formato de apiVersion de Implementações é apps/v1.
    • Para clusters de v1.15 ou anterior, o formato de apiVersion de Implementações é extensions/v1beta1.

    Obrigatório

    kind

    Tipo de um objeto criado.

    Obrigatório

    metadata

    Metadados de um objeto de recurso.

    Obrigatório

    name

    Nome da Implementação.

    Obrigatório

    spec

    Descrição detalhada da Implementação.

    Obrigatório

    replicas

    Número de pods.

    Obrigatório

    selector

    Determina os pods de contêiner que podem ser gerenciados pela Implementação.

    Obrigatório

    strategy

    Modo de atualização. Valores possíveis:

    • RollingUpdate
    • ReplaceUpdate

    Por padrão, a atualização rolante é usada.

    Opcional

    template

    Descrição detalhada de um pod de contêiner criado.

    Obrigatório

    metadata

    Metadados.

    Obrigatório

    labels

    metadata.labels: rótulos de contêineres.

    Opcional

    spec:

    containers

    • image (obrigatório): nome de uma imagem de contêiner.
    • imagePullPolicy (opcional): política para obtenção de uma imagem. As opções incluem Always (tentando baixar imagens a cada vez), Never (usando apenas imagens locais) e IfNotPresent (usando imagens locais se estiverem disponíveis; baixando imagens se imagens locais não estiverem disponíveis). O valor padrão é Always.
    • name (obrigatório): nome do contêiner.

    Obrigatório

    imagePullSecrets

    Nome do segredo usado durante a extração da imagem. Se for utilizada uma imagem privada, este parâmetro é obrigatório.

    • Para extrair uma imagem do Software Repository for Container (SWR), defina esse parâmetro como default-secret.
    • Para extrair uma imagem de um repositório de imagens de terceiros, defina esse parâmetro como o nome do segredo criado.

    Opcional

  3. Crie uma Implementação.

    kubectl create -f nginx-deployment.yaml

    Se as informações a seguir forem exibidas, isso indicará que a Implementação está sendo criada.

    deployment "nginx" created

  4. Consulte o status da Implementação.

    kubectl get deployment

    Se as informações a seguir forem exibidas, a Implementação está sendo executada.

    NAME           READY     UP-TO-DATE   AVAILABLE   AGE 
    nginx          1/1       1            1           4m5s

    Descrição do parâmetro

    • NAME: nome da aplicação em execução no pod.
    • READY: indica o número de cargas de trabalho disponíveis. O valor é exibido como "the number of available pods/the number of expected pods".
    • UP-TO-DATE: indica o número de réplicas que foram atualizadas.
    • AVAILABLE: indica o número de pods disponíveis.
    • AGE: período em que a Implementação continua funcionando

  5. Se a Implementação for acessada por meio de um Serviço ClusterIP ou NodePort, adicione o Serviço correspondente. Para mais detalhes, consulte Rede.