k8s是一个全新的编排方式,但是它的通信方式也是比较复杂的,而且种类也比较的多。
最常见的是就比如我们通过service
kubernetes的访问方式(10)
查看到的,
接下来我们会创建不同的访问方式,给大家演示效果
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这种访问方式:

kubernetes的访问方式(10)
然后创建一下

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

kubernetes的访问方式(10)
kubernetes的访问方式(10)
这次其他node节点也就可以,每个节点都有部署的pod


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

kubernetes的访问方式(10)
创建一下

kubectl create -f nginx-hostport.yaml

kubernetes的访问方式(10)
kubernetes的访问方式(10)


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
kubernetes的访问方式(10)
kubernetes的访问方式(10)

启动一下
kubernetes的访问方式(10)
访问一下
kubernetes的访问方式(10)
这种方式,所有的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

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

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


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

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

开始创建一下

kubernetes的访问方式(10)

接下来创建ingress
kubernetes的访问方式(10)
kubernetes的访问方式(10)
kubernetes的访问方式(10)
这里需要注意,ingress如何和pod关联,是通过svc上面的地址和端口关联的哈

接下来访问一下
在本地配置了hosts,或者要有dns
kubernetes的访问方式(10)

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

kubernetes的访问方式(10)
kubernetes的访问方式(10)
kubernetes的访问方式(10)


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

比如
kubernetes的访问方式(10)
kubernetes的访问方式(10)

然后创建一下
kubernetes的访问方式(10)

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