一、Pod访问方式

ClusterIP Service(内部)

NodePort Service(由内而外)

LoadBalance Service(外部)

Ingress(外部)

 

1、ClusterIP

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

 

 

2、NodePort 

K8S服务发现与负载均衡原理_服务调用_02

 

 

3、LoadBalance

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

 

 

4、Ingress

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

 

 

二、服务发现

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

K8S服务发现与负载均衡原理_内网_05

 

运行busybox

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

访问nginx-svc

通过IP地址访问

K8S服务发现与负载均衡原理_内网_06

 

 查看index.html

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

 

 

通过服务名访问

wget nginx-svc.default:8080

K8S服务发现与负载均衡原理_服务调用_08

 

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

 

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

1)、修改yaml配置

vi service.yaml

K8S服务发现与负载均衡原理_内网_09

 

 端口为30000

 

2)、测试

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

K8S服务发现与负载均衡原理_服务调用_10

 

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

 

三、访问策略

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

podSelector

ingress/egress