Serviço Kubernetes define um conjunto lógico de pods e uma política pela qual acessá-los. O serviço pode ser exposto de diferentes formas, especificando um tipo no serviceSpec. StatefulSet atualmente requer um Headless Service para controlar o domínio de seus Pods, alcançar diretamente cada Pod com entradas de DNS estáveis. Especificando “None” para o clusterIP, você pode criar o serviço Headless.
Copie/Cole os seguintes comandos no seu terminal Cloud9.
cd ~/environment/templates
wget https://eksworkshop.com/statefulset/services.files/mysql-services.yml
Verifique a configuração do mysql-services.yml, com o seguinte comando.
cat ~/environment/templates/mysql-services.yml
Você pode ver que o serviço mysql é para resolução de DNS, de modo que quando os pods são colocados pelo controlador StatefulSet, pods podem ser resolvidos usando pod-name.mysql. mysql-read é um serviço de cliente que faz o balanceamento de carga para todos slaves.
# Serviço Headless de DNS estáveis de membros do StatefulSet.
apiVersion: v1
kind: Service
metadata:
name: mysql
labels:
app: mysql
spec:
ports:
- name: mysql
port: 3306
clusterIP: None
selector:
app: mysql
---
# Serviço de cliente para conectar-se a qualquer instância do MySQL para leituras.
# Para gravações, você deve se conectar ao master: mysql-0.mysql.
apiVersion: v1
kind: Service
metadata:
name: mysql-read
labels:
app: mysql
spec:
ports:
- name: mysql
port: 3306
selector:
app: mysql
Criar serviço mysql e mysql-read com o seguinte comando
kubectl create -f ~/environment/templates/mysql-services.yml