Usar o armazenamento persistente em um contêiner do Windows e preparar os nós do Windows para contas de serviço gerenciado de grupoUse persistent storage in a Windows container and prepare Windows nodes for group Managed Service Accounts

Um volume persistente representa uma parte do armazenamento que foi provisionada para uso com pods do Kubernetes.A persistent volume represents a piece of storage that has been provisioned for use with Kubernetes pods. Um volume persistente pode ser usado por um ou mais pods e destina-se ao armazenamento de longo prazo.A persistent volume can be used by one or more pods and is meant for long-term storage. Também depende do ciclo de vida do Pod ou do nó.It's also independent of pod or node lifecycle. Nesta seção, você verá como criar um volume persistente e como usar esse volume em seu aplicativo do Windows.In this section, you'll see how to create a persistent volume and how to use this volume in your Windows application.

Antes de começarBefore you begin

Veja o que você precisa para começar:Here's what you need to get started:

  • Um cluster kubernetes com pelo menos um nó de trabalho do Windows.A Kubernetes cluster with at least one Windows worker node.
  • Um arquivo kubeconfig para acessar o cluster kubernetes.A kubeconfig file to access the Kubernetes cluster.

Criar uma declaração de volume persistenteCreate a persistent volume claim

Uma declaração de volume persistente é usada para provisionar automaticamente o armazenamento com base em uma classe de armazenamento.A persistent volume claim is used to automatically provision storage based on a storage class. Para criar uma declaração de volume, primeiro crie um arquivo chamado pvc-akshci-csi.yaml e copie na seguinte definição de YAML.To create a volume claim, first create a file named pvc-akshci-csi.yaml and copy in the following YAML definition. A declaração solicita um disco com 10 GB de tamanho com acesso ReadWriteOnce   .The claim requests a disk that is 10 GB in size with ReadWriteOnce access. A default   classe de armazenamento padrão é especificada como a classe de armazenamento (vhdx).The default storage class is specified as the storage class (vhdx).

apiVersion: v1
kind: PersistentVolumeClaim
metadata:
 name: pvc-akshci-csi
spec:
 accessModes:
 - ReadWriteOnce
 resources:
  requests:
   storage: 10Gi

Crie o volume executando os seguintes comandos em uma sessão administrativa do PowerShell em um dos servidores no cluster Azure Stack HCI (usando um método como Enter-PSSession ou área de trabalho remota para se conectar ao servidor):Create the volume by running the following commands in an administrative PowerShell session on one of the servers in the Azure Stack HCI cluster (using a method such as Enter-PSSession or Remote Desktop to connect to the server):

kubectl create -f pvc-akshci-csi.yaml 

A saída a seguir mostrará que a declaração de volume persistente foi criada com êxito:The following output will show that your persistent volume claim has been created successfully:

Saída:Output:

persistentvolumeclaim/pvc-akshci-csi created

Usar volume persistenteUse persistent volume

Para usar um volume persistente, crie um arquivo chamado winwebserver. YAML e copie na seguinte definição de YAML.To use a persistent volume, create a file named winwebserver.yaml and copy in the following YAML definition. Em seguida, você criará um pod com acesso à declaração de volume persistente e vhdx.You will then create a pod with access to the persistent volume claim and vhdx.

Na definição de YAML abaixo, mountPath é o caminho para montar um volume dentro de um contêiner.In the yaml definition below, mountPath is the path to mount a volume inside a container. Após uma criação de Pod bem-sucedida, você verá o subdiretório mnt criado em C \ : e o subdiretório akshciscsi criado dentro de mnt.After a successful pod creation, you will see the subdirectory mnt created in C:\ and the subdirectory akshciscsi created inside mnt.

apiVersion: apps/v1 
kind: Deployment 
metadata: 
  labels: 
    app: win-webserver 
  name: win-webserver 
spec: 
  replicas: 1 
  selector: 
    matchLabels: 
      app: win-webserver 
  template: 
    metadata: 
      labels: 
        app: win-webserver 
      name: win-webserver 
    spec: 
     containers: 
      - name: windowswebserver 
        image: mcr.microsoft.com/windows/servercore/iis:windowsservercore-ltsc2019 
        ports:  
          - containerPort: 80    
        volumeMounts: 
            - name: akshciscsi 
              mountPath: "/mnt/akshciscsi" 
     volumes: 
        - name: akshciscsi 
          persistentVolumeClaim: 
            claimName:  pvc-akshci-csi 
     nodeSelector: 
      kubernetes.io/os: windows 

Para criar um pod com a definição de YAML acima, execute:To create a pod with the above yaml definition, run:

Kubectl create -f winwebserver.yaml 

Para verificar se o Pod está em execução, execute o comando a seguir.To make sure the pod is running, run the following command. Aguarde alguns minutos até que o Pod esteja em um estado de execução, já que a extração da imagem leva tempo.Wait a few minutes until the pod is in a running state, since pulling the image takes time.

kubectl get pods -o wide 

Quando o Pod estiver em execução, exiba o status do pod executando o seguinte comando:Once your pod is running, view the pod status by running the following command:

kubectl.exe describe pod %podName% 

Para verificar se o volume foi montado no pod, execute o seguinte comando:To verify your volume has been mounted in the pod, run the following command:

kubectl exec -it %podname% cmd.exe 

Excluir uma declaração de volume persistenteDelete a persistent volume claim

Antes de excluir uma declaração de volume persistente, você deve excluir a implantação do aplicativo executando:Before deleting a persistent volume claim, you must delete the app deployment by running:

kubectl.exe delete deployments win-webserver

Em seguida, você pode excluir uma declaração de volume persistente executando:You can then delete a persistent volume claim by running:

kubectl.exe delete PersistentVolumeClaim pvc-akshci-csi

Preparar nós do Windows para o suporte de conta de serviço gerenciado de grupo em nós do WindowsPrepare Windows nodes for group Managed Service Account support on Windows nodes

Contas de serviço gerenciado de grupo são um tipo específico de conta de Active Directory que fornece gerenciamento automático de senhas, gerenciamento de SPN (nome da entidade de serviço) simplificado e a capacidade de delegar o gerenciamento a outros administradores em vários servidores.Group Managed Service Accounts are a specific type of Active Directory account that provides automatic password management, simplified service principal name (SPN) management, and the ability to delegate the management to other administrators across multiple servers. Para configurar contas de serviço gerenciado de grupo (gMSA) para pods e contêineres que serão executados em seus nós do Windows, primeiro você precisará unir seus nós do Windows a um domínio Active Directory.To configure group Managed Service Accounts (gMSA) for pods and containers that will run on your Windows nodes, you first have to join your Windows nodes to an Active Directory domain.

Para habilitar o suporte de conta de serviço gerenciado de grupo, o nome do cluster kubernetes deve ter menos de 4 caracteres.To enable group Managed Service Account support, your Kubernetes cluster name has to be fewer than 4 characters. Isso ocorre porque o comprimento máximo com suporte para um nome de servidor ingressado no domínio é de 15 caracteres e o AKS em Azure Stack Convenção de nomenclatura de cluster kubernetes do HCI para um nó de trabalho adiciona alguns caracteres predefinidos a um nome de nó.This is because the maximum supported length for a domain joined server name is 15 characters, and the AKS on Azure Stack HCI Kubernetes cluster naming convention for a worker node adds a few pre-defined characters to a node name.

Para unir seus nós de trabalho do Windows a um domínio, faça logon em um nó de trabalho do Windows, executando kubectl get e observando o EXTERNAL-IP valor.To join your Windows worker nodes to a domain, log in to a Windows worker node, by running kubectl get and noting the EXTERNAL-IP value.

kubectl get nodes -o wide

Em seguida, você pode usar SSH no nó usando ssh Administrator@ip .You can then SSH into the node using ssh Administrator@ip.

Depois de fazer logon com êxito no seu nó de trabalho do Windows, execute o seguinte comando do PowerShell para ingressar o nó em um domínio.After you've successfully logged in to your Windows worker node, run the following PowerShell command to join the node to a domain. Você será solicitado a inserir suas credenciais de conta de administrador de domínio .You'll be prompted to enter your domain administrator account credentials. Você também pode usar credenciais de usuário elevadas que receberam direitos para unir computadores ao domínio especificado.You can also use elevated user credentials that have been given rights to join computers to the given domain. Em seguida, você precisará reinicializar o nó de trabalho do Windows.You'll then need to reboot your Windows worker node.

add-computer --domainame "YourDomainName" -restart

Depois que todos os nós de trabalho do Windows tiverem ingressado em um domínio, siga as etapas detalhadas em Configurando gMSA para aplicar as definições de recursos personalizados do kubernetes gMSA e os WebHooks no cluster do kubernetes.Once all Windows worker nodes have been joined to a domain, follow the steps detailed at configuring gMSA to apply the Kubernetes gMSA custom resource definitions and webhooks on your Kubernetes cluster.

Para obter mais informações sobre o contêiner do Windows com gMSA, consulte contêineres do Windows e gMSA.For more information on Windows container with gMSA, refer Windows containers and gMSA.

Próximas etapasNext steps