work hard work smart

专注于Java后端开发。 不断总结,举一反三。
  博客园  :: 首页  :: 新随笔  :: 联系 :: 订阅 订阅  :: 管理

K8S服务发现与负载均衡原理

Posted on 2020-12-08 15:41  work hard work smart  阅读(710)  评论(0编辑  收藏  举报

一、Pod访问方式

ClusterIP Service(内部)

NodePort Service(由内而外)

LoadBalance Service(外部)

Ingress(外部)

 

1、ClusterIP

 

 

2、NodePort 

 

 

3、LoadBalance

 

 

4、Ingress

 

 

二、服务发现

Pod内服务调用:localhost:容器内应用端口

Pod间服务调用:服务名.namespace名:服务端口   (namespace名相当于域名)

外部服务调用: 负载均衡器IP:负载均衡器内映射端口或Ingress URL

 1、pod间调用

创建service

vi service.yaml

apiVersion: v1
kind: Service
metadata:
  name: nginx-svc
spec:
  selector:
    app: web_server
  ports:
  - protocol: TCP
    port: 8080
    targetPort: 80  

使service生效

 kubectl apply -f service.yaml

查看service

 

运行busybox

kubectl run busybox --rm -it --image=busybox  /bin/sh

访问nginx-svc

通过IP地址访问

 

 查看index.html

 

 

通过服务名访问

wget nginx-svc.default:8080

 

 这就是一个K8s集群里Pod之间的访问。

 

2、外部访问Nginx(外部服务调用)

1)、修改yaml配置

vi service.yaml

 

 端口为30000

 

2)、测试

http://192.168.127.136:30000/ 或者http://192.168.127.137:30000/

 

 因为在虚拟机使用,使用的是192内网地址。如果是云服务器,则将外网地址替换192地址。

 

三、访问策略

支持的网络协议(Calico、Canal等,flannel不支持策略控制)

podSelector

ingress/egress