kubernetes exporta portas

1

Eu gostaria de vincular meu serviço em todos os nós às portas 80 e 443, para que eu seja redirecionado por meio de um nome DNS (kubernetes) para qualquer nó que me redirecione diretamente para o serviço via HTTP / S e depois para o implantação (nginx). No entanto, eu não sei exatamente como isso funciona, porque o intervalo de NodePorts só vai de 30000 a 32xxx.

Aqui está minha configuração

DNS-Name      IPv4
k8s-master    172.25.35.47
k8s-node-01   172.25.36.47
k8s-node-02   172.25.36.8
kubernetes    172.25.36.47
kubernetes    172.25.36.8

Meu arquivo yaml

apiVersion: v1
kind: Service
metadata:
  name: proxy
spec:
  ports:
  - name: http
    nodePort: 80     
    port: 80            
    protocol: TCP      
    targetPort: 80     
  - name: https
    nodePort: 443     
    port: 443           
    protocol: TCP       
    targetPort: 443     
  selector:
    name: proxy
  type: NodePort
---
apiVersion: apps/v1
kind: Deployment
metadata:
  name: proxy
  labels:
    name: proxy
spec:
  selector:
    matchLabels:
      name: proxy
  replicas: 1
  template:
    metadata:
     labels:
       name: proxy
    spec:
      containers:
      - name: nginx
        image: nginx:latest
        ports:
        - name: http
          containerPort: 80
          protocol: TCP
        - name: https
          containerPort: 443
          protocol: TCP

Que tipo de serviço me fornece uma função para expor essas portas ou como posso realizar minha configuração mental?

Volker

    
por Volker Raschek 06.03.2018 / 11:35

1 resposta

1

Você tem duas opções:

  1. encaminhamento de porta simples
  2. externalIPs
  3. keepalived

Encaminhamento de porta simples

Execute o seguinte em todos os servidores

sudo iptables -t nat -I PREROUTING -p tcp --dport 443 -j REDIRECT --to-ports <nodeport>
sudo iptables -t nat -I OUTPUT -p tcp -o lo --dport 443 -j REDIRECT --to-ports <nodeport>

substitua <nodeport> pela porta escolhida para o nodeport. Isso requer que você execute um comando em todas as máquinas e é um pouco hacks. Uma solução melhor seria:

externalIps

link para documentos

Isso permite ligar qualquer porta em um nó específico, que será roteado pelo cluster. Isso fornece um único ponto de falha, obviamente, que pode ser corrigido com:

keepalived

keepalived é um software muito simples. Ele cria um endereço IP virtual, que é movido para apontar para um nó diferente quando o mestre falha. Efetivamente cria um endereço IP de alias para o servidor principal keepalived. Um bom começo seria keepalived-vip , que configura automaticamente o keepalived para os serviços que você fornece.

conclusão

Eu pessoalmente uso o keepalived-vip para isso, pois ele se ajusta muito melhor ao meu modelo de rede, mas se seus clientes puderem acessar qualquer um dos seus servidores, o simples redirecionamento de portas será a única maneira de fazê-lo.

    
por 06.04.2018 / 19:09