k8s是一个全新的编排方式,但是它的通信方式也是比较复杂的,而且种类也比较的多。 最常见的是就比如我们通过service 查看到的, 接下来我们会创建不同的访问方式,给大家演示效果 hostNetwork、hostPort、NodePort、LoadBalancer、Ingress、clusterip 一共包括6中通信方式,其中clusterip是不对外开放的,只是集群内部使用

yaml文件我已经放到了百度网盘 解压可以使用 链接:https://pan.baidu.com/s/1YNnNZamlW325x5spVjw4Ig 提取码:wbtg

然后倒入镜像 docker load < gcr.io#google_containers#defaultbackend.tar

docker tag 452a96d81c30 gcr.io/google_containers/defaultbackend

然后解压tar包,里面就是yaml问题件

1、首先我们介绍下hostNetwork这种访问方式:

然后创建一下

kubectl create -f nginx.yaml 去node1上面查看一下 访问测试一下 这里只能node1可以访问,其他node节点访问是不行的 修改一下副本数量验证一下 kubectl edit deployment nginx

这次其他node节点也就可以,每个节点都有部署的pod


2、接下来介绍hostPort zhezhong这种模式

创建一下

kubectl create -f nginx-hostport.yaml


3、接下来创建NodePort

这种也比较简单

创建2个yaml kubectl create deployment nginx --image=nginx --dry-run -o yaml > nginx.yaml

kubectl expose deployment nginx --port=8080 --target-port=80 --type=NodePort --dry-run -o yaml > svc.yaml

启动一下 访问一下 这种方式,所有的nodeip+端口都可以访问


4、接下来我们介绍比较特殊的一种访问方式LoadBalancer

先简答的介绍一下 metallb简介 官方网站:https://metallb.universe.tf/ MetalLB是使用标准路由协议的裸机Kubernetes集群的软负载均衡器 【备注】私有云裸金属架构的kubernetes集群不支持LoadBalance 如果你的kubernetes集群没有在公有云的IaaS平台(GCP,AWS,Azure …)上运行,则LoadBalancers将在创建时无限期地保持“挂起”状态,也就是说只有公有云厂商自家的kubernetes支持LoadBalancer。


MetalLB旨在解决这种不平衡 MetalLB旨在通过提供与标准网络设备集成的网络LB实现来纠正这种不平衡,以便裸机集群上的外部服务也“尽可能”地工作。即MetalLB能够帮助你在kubernetes中创建LoadBalancer类型的kubernetes服务 接下来我们部署一下: wget https://raw.githubusercontent.com/google/metallb/v0.7.3/manifests/metallb.yaml

wget https://raw.githubusercontent.com/google/metallb/v0.7.3/manifests/example-layer2-config.yaml

创建一下 修改ip地址池和集群节点网段相同 注意:【这里的 IP 地址范围需要跟集群实际情况相对应】

创建后端应用和服务测试 接下来测试一下 我的机器应为是腾讯云机器自己创建的所以这个ip不能直接那到外网使用,只能通过公网访问,刚才curl其实已经验证了。


5、上面介绍了LoadBalancer接下来介绍另外的一种比较流行的方式 Ingress,这种是当前比较流行的方式 简单介绍一下 一个负载均衡的玩意,其主要用来解决使用NodePort暴露Service的端口时Node IP会漂移的问题。同时,若大量使用NodePort暴露主机端口,管理会非常混乱 Ingress就可以解决上面的问题,其包含两个组件Ingress Controller和Ingress:

Ingress 将Nginx的配置抽象成一个Ingress对象,每添加一个新的服务只需写一个新的Ingress的yaml文件即可 Ingress Controller 将新加入的Ingress转化成Nginx的配置文件并使之生效

开始创建一下

接下来创建ingress 这里需要注意,ingress如何和pod关联,是通过svc上面的地址和端口关联的哈

接下来访问一下 在本地配置了hosts,或者要有dns

接下来还要配置一个错误的网页 default-backend的作用是,如果外界访问的域名不存在的话,则默认转发到default-http-backend这个Service,其会直接返回404


6、接下来开始最后一种模式ClusterIP 这种模式主要是整个k8s集群内部使用,不对外开放的,比如我们启动一个nginx想要对外访问需要nodeport这类的的转发,但是没有转发的时候是无法访问的,只能在集群内部使用

比如

然后创建一下

----================================================ 好了今天这6中方式就介绍到这里,后续有问题,欢迎大家私信联系