Lista de bloqueio de serviços personalizados
Por predefinição, a ferramenta Migrate to Containers desativa os serviços desnecessários numa VM quando a migra para um contentor. Por vezes, estes serviços podem causar problemas com o contentor migrado ou não são necessários num contexto de contentor.
Também pode definir a sua própria lista personalizada de serviços a desativar num contentor migrado através de uma lista de bloqueio personalizada. Com uma lista de bloqueio, especifica um ou mais serviços a desativar num contentor migrado.
Definir a lista de bloqueio
Defina a sua lista de bloqueios personalizada num ficheiro .yaml, no formato:
service_list:
- name: <var>group-name-1</var>
services:
- <var>service-name</var>
- name: <var>group-name-2</var>
services:
- <var>service-name</var>
- <var>ervice-name</var>
Onde:
- Os grupos são uma coleção lógica de serviços para que possa recolher serviços semelhantes num único grupo. Especifique qualquer valor de string para o nome do grupo.
- O nome do serviço especifica o serviço a desativar no contentor migrado.
Por exemplo, defina o ficheiro my-blocklist.yaml
como:
service_list:
- name: lvm-related
services:
- lvm2-lvmetad
- name: hardware-related
services:
- microcode
- microcode.ctl
Aplicar uma lista de bloqueio personalizada
Aplique a sua lista de bloqueios personalizada a um contentor de uma das seguintes formas:
Criar um Kubernetes
configmap
que contenha a lista de bloqueio e adicioná-lo à especificação de implementação do contentor.Este método permite-lhe adicionar a lista de bloqueio sem ter de reconstruir o contentor. No entanto, tem de recriar o
configmap
em todos os clusters usados para alojar o contentor.Edite o Dockerfile do contentor e reconstrua a imagem do contentor.
Este método requer que recrie a imagem do contentor para adicionar a lista de bloqueio. Uma vez que a lista de bloqueio está agora incluída no contentor, não é necessário fazer nenhuma configuração adicional no cluster antes da implementação.
Usar um configmap
Para criar uma lista de bloqueios através de um configmap
:
Migre a VM de origem para um contentor.
Crie um ficheiro .yaml de lista de bloqueios, conforme mostrado acima, que liste o serviço que quer desativar. Neste exemplo, atribua o nome
my-blocklist.yaml
ao ficheiro.Crie uma
configmap
a partir do ficheiro .yaml da lista de bloqueio:kubectl create configmap configmap-name --from-file=path-to-yaml
Neste exemplo, o configmap chama-se
blocklistcm
:kubectl create configmap blocklistcm --from-file=./my-blocklist.yaml
Veja o configmap:
kubectl describe configmaps
Edite o
deployment_spec.yaml
criado quando migrou o contentor:vi deployment_spec.yaml
Na especificação de implementação, adicione o seguinte:
Adicione um novo volume para o
configmap
emvolumes
:volumes: - configMap: name: blocklistcm # Name of the config map you created above. name: blocklistvol # Name of the configmap volume.
Adicione uma montagem de volume para o configmap:
spec: containers: volumeMounts: - mountPath: /etc/bl # Mount path for the configmap volume. name: blocklistvol # Name of the configmap volume.
Adicione uma nova variável de ambiente denominada
HC_CUSTOM_SERVICE_BLOCKLIST
que especifique o caminho para o ficheiro .yaml da lista de bloqueio. O nome da variável de ambiente tem de serHC_CUSTOM_SERVICE_BLOCKLIST
:containers: - image: container-image-location env: - name: HC_CUSTOM_SERVICE_BLOCKLIST value: "/etc/bl/my-blocklist.yaml"
O caminho especificado pelo valor é a concatenação do mountPath do configmap e do nome do ficheiro .yaml da lista de bloqueio,
my-blocklist.yaml
.Guarde o ficheiro.
Implemente o contentor:
kubectl apply -f deployment_spec.yaml
Depois de o contentor ser implementado, pode examiná-lo para garantir que os serviços não estão em execução. Por exemplo:
# Get pod name. $ kubectl get pod # Connect to pod. $ kubectl exec -it POD_NAME -- /bin/bash # View running services. This step is OS dependent. For example: $ service --status-all```
Editar o ficheiro Dockerfile
Esta secção descreve como criar uma lista de bloqueio personalizada editando o Dockerfile criado pela migração.
Migre a VM de origem para um contentor.
Abra o Dockerfile num editor.
Adicione o seguinte comando
COPY
para adicionar o ficheiro .yaml da lista de bloqueio ao sistema de ficheiros do contentor:COPY src dest
Por exemplo:
COPY my-blocklist.yaml /etc/mybl/my-blocklist.yaml
O caminho de destino pode ser qualquer caminho dentro do contentor.
Adicione uma nova variável de ambiente denominada
HC_CUSTOM_SERVICE_BLOCKLIST
que especifique o caminho para o ficheiro .yaml da lista de bloqueio com base no destino do ficheiro especificado pelo comandoCOPY
. O nome da variável de ambiente tem de serHC_CUSTOM_SERVICE_BLOCKLIST
:ENV HC_CUSTOM_SERVICE_BLOCKLIST /file-path
Por exemplo:
ENV HC_CUSTOM_SERVICE_BLOCKLIST /etc/mybl/my-blocklist.yaml
Atualize a imagem do contentor.
A forma como atualiza a imagem do contentor depende do seu ambiente de compilação. Pode usar:
gcloud
para criar a imagem e carregá-la para o Container Registry, conforme descrito no Início rápido: criar.docker build
, conforme descrito em Crie e execute a sua imagem .
Depois de criar a nova imagem, abra o ficheiro
deployment_spec.yaml
num editor para atualizar a localização da imagem:spec: containers: - image: new-image-location
Por exemplo, new-image-location pode ser
gcr.io/my-project/my-new-image:v1.0
se usougcloud
para criar a imagem e a carregou para o Container Registry.Implemente o contentor:
kubectl apply -f deployment_spec.yaml
Depois de o contentor ser implementado, pode examiná-lo para garantir que os serviços não estão em execução. Por exemplo:
# Get pod name. $ kubectl get pod # Connect to pod. $ kubectl exec -it POD_NAME -- /bin/bash # View running services. This step is OS dependent. For example: $ service --status-all