Utilize armazenamento persistente num recipiente windows e prepare os nosdes do Windows para contas de serviço geridas pelo grupoUse persistent storage in a Windows container and prepare Windows nodes for group Managed Service Accounts

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

Before you beginBefore you begin

Eis o que precisas para começar:Here's what you need to get started:

  • Um cluster Kubernetes com pelo menos um nó de trabalhador do Windows.A Kubernetes cluster with at least one Windows worker node.
  • Um ficheiro kubeconfig para aceder ao cluster Kubernetes.A kubeconfig file to access the Kubernetes cluster.

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

Uma reivindicação de volume persistente é usada para provisões automáticas de armazenamento com base numa classe de armazenamento.A persistent volume claim is used to automatically provision storage based on a storage class. Para criar uma reclamação de volume, primeiro crie um ficheiro nomeado pvc-akshci-csi.yaml e copie na seguinte definição YAML.To create a volume claim, first create a file named pvc-akshci-csi.yaml and copy in the following YAML definition. A reclamação solicita um disco de 10 GB de tamanho com acesso ReadWriteOnce.The claim requests a disk that is 10 GB in size with ReadWriteOnce access. A classe de armazenamento predefinida   é 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 numa sessão administrativa do PowerShell num dos servidores do cluster HCI Azure Stack (utilizando um método como Enter-PSSession ou Remote Desktop para ligar 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 seguinte saída mostrará que a sua reivindicação de volume persistente foi criada com sucesso:The following output will show that your persistent volume claim has been created successfully:

Saída:Output:

persistentvolumeclaim/pvc-akshci-csi created

Use volume persistenteUse persistent volume

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

Na definição yaml abaixo, mountPath é o caminho para montar um volume dentro de um recipiente.In the yaml definition below, mountPath is the path to mount a volume inside a container. Após uma criação bem sucedida de casulos, você verá o mnt subdirecional criado em \ C: e o akshciscsi subdiretório criado dentro do 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 uma vagem com a definição de yaml acima, corra:To create a pod with the above yaml definition, run:

Kubectl create -f winwebserver.yaml 

Para se certificar de que a cápsula está a funcionar, executa o seguinte comando.To make sure the pod is running, run the following command. Espere alguns minutos até que a cápsula esteja em funcionamento, já que puxar a 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 

Uma vez que o seu casulo esteja em funcionamento, veja o estado 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 seu volume foi montado na cápsula, verifique o seguinte comando:To verify your volume has been mounted in the pod, run the following command:

kubectl exec -it %podname% cmd.exe 

Eliminar uma reivindicação de volume persistenteDelete a persistent volume claim

Antes de eliminar uma reclamação de volume persistente, deve eliminar a implementação da aplicação executando:Before deleting a persistent volume claim, you must delete the app deployment by running:

kubectl.exe delete deployments win-webserver

Em seguida, pode eliminar uma reivindicação de volume persistente executando:You can then delete a persistent volume claim by running:

kubectl.exe delete PersistentVolumeClaim pvc-akshci-csi

Prepare os nosdes do Windows para o suporte de conta de serviço gerido em grupo nos nosmos windowsPrepare Windows nodes for group Managed Service Account support on Windows nodes

As Contas de Serviço Gerido do Grupo são um tipo específico de conta Ative Directory que fornece gestão automática de passwords, gestão de nome principal de serviço simplificado (SPN) e a capacidade de delegar a gestão 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 as contas de serviço geridas do grupo (gMSA) para cápsulas e contentores que irão funcionar nos nós windows, primeiro tem de se juntar aos seus nós Windows a um domínio ative 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 ativar o suporte à conta de serviço gerido pelo grupo, o nome do cluster Kubernetes tem de ser inferior a 4 caracteres.To enable group Managed Service Account support, your Kubernetes cluster name has to be fewer than 4 characters. Isto porque o comprimento máximo suportado para um nome de servidor de domínio é de 15 caracteres, e o AKS em Azure Stack HCI Kubernetes convenção de nomeação para um nó de trabalhador adiciona alguns caracteres pré-definidos 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 juntar os nós do seu trabalhador do Windows a um domínio, inicie sessão num nó de trabalhador do Windows, executando kubectl get e notando 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, pode SSH no nó utilizando ssh Administrator@ip .You can then SSH into the node using ssh Administrator@ip.

Depois de ter iniciado sessão com sucesso no nó do trabalhador do Windows, execute o seguinte comando PowerShell para se juntar ao nó a 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. Será solicitado a introduzir as credenciais de conta do administrador de domínio.You'll be prompted to enter your domain administrator account credentials. Também pode utilizar credenciais elevadas de utilizador que tenham sido dadas a direitos de junção de computadores ao domínio dado.You can also use elevated user credentials that have been given rights to join computers to the given domain. Em seguida, terá de reiniciar o nó do trabalhador do Windows.You'll then need to reboot your Windows worker node.

add-computer --domainame "YourDomainName" -restart

Uma vez que todos os nós de trabalhadores do Windows tenham sido unidos a um domínio, siga os passos detalhados na configuração do gMSA para aplicar as definições de recursos e webhooks personalizados Kubernetes gMSA no seu cluster 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 recipiente windows com gMSA, consulte os recipientes windows e gMSA.For more information on Windows container with gMSA, refer Windows containers and gMSA.

Passos seguintesNext steps