hostNetwork、hostPort、NodePort、LoadBalancer、Ingress
暴露Pod与Service一样,因为Pod就是Service的backend

  1. 1hostNetworktrue pod中使用该配置,在这种Pod中运行的应用程序可以直接看到pod启动的主机的网络接口。<br /> 注:每次podIP是会变化的
  2. 2hostPort:直接将容器的端口与所调度的节点上的端口路由,这样用户就可以通过主机的IP来访问Pod了<br /> 注:Pod重新调度时该Pod可能会被调度到不同的宿主机,因此,需要维护一个Pod与宿主机的对应关系
  3. 3NodePort:是K8s里一个广泛应用的服务暴露方式。K8s中的service默认情况都是使用Cluster IP这种类型,会产生一个只能在内部访问的Cluster IP,如果想能够直接访问service,需要将service type修改为nodePort。同时给改service指定一个nodeport值(30000-32767),用` --service-node-port-range`定义。
  4. 集群外就可以使用K8s任意一个节点的IP加上30000端口访问该服务了,kube-proxy会自动将流量以轮询的方式转发给该service的每一个pod。<br />![image.png](https://cdn.nlark.com/yuque/0/2021/png/147059/1639823097624-d0ec6c90-8ce9-4c1f-b279-7d99cd4029fc.png#clientId=u505b14c8-5227-4&crop=0&crop=0&crop=1&crop=1&from=paste&id=u2b3b5149&margin=%5Bobject%20Object%5D&name=image.png&originHeight=293&originWidth=246&originalType=url&ratio=1&rotation=0&showTitle=false&size=10930&status=done&style=none&taskId=u57891bad-2bbb-4f36-b315-725a8128275&title=)<br />4、LoadBalancer:只能在service上定义,是公有云提供的负载均衡器。<br />![image.png](https://cdn.nlark.com/yuque/0/2021/png/147059/1639823111671-58373cc1-6e95-435a-a9cd-88b98d34157d.png#clientId=u505b14c8-5227-4&crop=0&crop=0&crop=1&crop=1&from=paste&id=ud880c70d&margin=%5Bobject%20Object%5D&name=image.png&originHeight=264&originWidth=213&originalType=url&ratio=1&rotation=0&showTitle=false&size=9431&status=done&style=none&taskId=uc7062d92-7222-4d59-b9fd-672bb0794b4&title=)<br />查看服务:` kubectl get svc influxdb`<br />![image.png](https://cdn.nlark.com/yuque/0/2021/png/147059/1639823126730-4ba9b0ec-c199-4099-a36a-19fd2cbf7496.png#clientId=u505b14c8-5227-4&crop=0&crop=0&crop=1&crop=1&from=paste&id=ub6b208fa&margin=%5Bobject%20Object%5D&name=image.png&originHeight=80&originWidth=700&originalType=url&ratio=1&rotation=0&showTitle=false&size=7310&status=done&style=none&taskId=u516d3359-ca14-4179-ada4-6b18455e21b&title=)<br />内部可以使用ClusterIP加端口来访问服务<br />外部可以使用两种方式:
  5. 任意节点的IP30051端口访问服务 10.97.121.42:30051<br /> 使用EXTERNAL-IP来访问,这是云供应商提供的负载均衡IP 10.13.242.236:8086

5、Ingress:ingress controller是由K8s管理的负载均衡容器,它的镜像包含一个nginx或HAProxy负载均衡器和一个控制器守护进程。
image.png
外部访问URL http://influxdb.kube.example.com/ping 访问该服务,入口是80端口,然后Ingress controller直接将流量转发给后端Pod,不需再经过kube-proxy的转发,比LoadBalance方式更高效

会话保持配置

sessionAffinity: ClientIP
sessionAffinityConfig:
    clientIP:
      timeoutSeconds: 10800

image.png