Explicação detalhada do serviço K8S


Vídeo de referência : https://ke.qq.com/user/index/index.html#/plan/cid=1709963&term_id=102815140

1. Conceito

1.1.Service存在的意义

1. Impedir que o pod perca a conexão (descoberta de serviço)
2. Defina um conjunto de estratégias de acesso ao pod (balanceamento de carga)

1.2.三种常用类型

(1) ClusterIP (usado dentro do cluster)

Por padrão, atribua um endereço IP estável, ou seja, VIP, que só pode ser acessado dentro do cluster

(2) NodePort (aplicativo exposto externamente)

Habilite uma porta em cada nó para expor o serviço, que pode ser acessado fora do cluster por meio de NodeIP: NodePort

(3) LoadBalancer (aplicativo exposto externamente, adequado para nuvem pública)

Semelhante ao NodePort, uma porta é habilitada em cada nó para expor serviços. Além disso, o K8s solicita que o balanceador de carga da plataforma de nuvem subjacente adicione cada [Node IP]: [NodePort] como um back-end

Dois, modo de proxy de serviço

Insira a descrição da imagem aqui
O serviço é implementado por kube-proxy

Implementar regras de balanceamento de carga de duas maneiras, ou seja, iptables e IPVS

2.1.iptables模式

Ver regras

iptables-save |grep <Service Name>

Processo de implementação

接受流量->概率分配请求->根据分配请求转发到实际Pod

2.2.IPVS模式【推荐使用】

2.2.1.修改代理模式为ipvs

Carregar módulos de kernel relacionados ao ip_vs

modprobe ip_vs
modprobe ip_vs_rr
modprobe ip_vs_wrr
modprobe ip_vs_sh

Defina o modo para ipvs

kubectl edit configmaps kube-proxy -nkube-system

Insira a descrição da imagem aqui
Exclua o Pod do kube-proxy para tornar o arquivo de configuração efetivo

kubectl delete pod kube-proxy-9lvgh -nkube-system

Verifique o log do pod para ver se ele foi alterado para o modo ipvs
Insira a descrição da imagem aqui

ipvsadm -Ln		#查看规则

Insira a descrição da imagem aqui

Tres exemplo

3.1.tomcat-service.yaml

apiVersion: v1
kind: Service
metadata:
  name: tomcat-service
spec:
  type: NodePort
  ports:
  - port: 8080
    name: service-port
    nodePort: 31005
  - port: 8005
    name: shutdown-port
  selector:
    tier: frontend

kubectl apply -f tomcat-service.yaml

3.2.解释

Um serviço denominado tomcat-service é definido, as portas de serviço são 8080 e 8005 e o NodePort é usado para fornecer serviços para o mundo externo. Todos os exemplos de pod com o rótulo "tier = frontend" pertencem a ele.

3.3.验证

kubectl get svc

O serviço Tomcat atribui um ClusterIP de 10.1.9.124, as portas virtuais do serviço são 8080 e 8005, 8080 especifica a porta nodePort como 31005 e 8005 não é especificado, K8S atribuirá aleatoriamente uma porta a ela.
Insira a descrição da imagem aqui

3.3.1.集群内通过ClusterIP+虚端口可以访问服务

Insira a descrição da imagem aqui

3.3.2.集群外通过NodeIP+nodePort端口可以访问Service服务

Insira a descrição da imagem aqui

kubectl get endpoints

10.244.1.15 é o endereço IP do Pod e a porta 8080 é a porta exposta pelo contêiner, que pode ser acessada por meio do PodIP + número da porta
Insira a descrição da imagem aqui

kubectl get svc tomcat-service -o yaml

Você pode ver informações mais detalhadas sobre o serviço, como nome, namespace, clusterIP, porta virtual

A porta port é a porta do ClusterIP, que é usada para acesso dentro do cluster;
targetPort é o número da porta exposto pelo contêiner que fornece o serviço. Se targetPort não for especificado no arquivo yaml, o targetPort padrão é o mesmo que a porta

Insira a descrição da imagem aqui

3.3.3.在Pod里面,建议通过ServiceName.Namespace.svc.cluster.local访问

Insira a descrição da imagem aqui

Acho que você gosta

Origin blog.csdn.net/anqixiang/article/details/108007552
Recomendado
Clasificación