k8s Service和Ingress

Service概念

在这里插入图片描述

Service的类型

在这里插入图片描述

ClusterIP

当使用默认ClusterIP的时候,其他pod访问nginx-deployment通过svc,直接访问集群内部的IP

在这里插入图片描述

NodePort类型

使用NodePort类型会在 节点服务器上开放一个端口映射到SVC上面设置的某个端口上,通过标签选择,负载到要访问的pod上,一般SVC前面放个nginx反向代理做负载来实现svc对的高可用
在这里插入图片描述

LoadBalancer

需要前面有个云供应商暴露ip,需要收费

ExternalName

在这里插入图片描述

VIP和Service代理

在这里插入图片描述

代理模式分类

1.userspace

在这里插入图片描述

2.iptables代理模式

在这里插入图片描述

3.ipvs代理模式

在这里插入图片描述
在这里插入图片描述
ipvsadm -Ln查看ipvs相关信息
在这里插入图片描述

扫描二维码关注公众号,回复: 13333266 查看本文章

ClusterIP具体原理

apiserver通过kubectl命令建立service,存储到etcd中,每个NODE节点上面的kube-proxy进程通过读取etcd感知到service和pod的变化,然后将变化写入iptables中
在这里插入图片描述

clusterip原理Demo

1.创建deployment

在这里插入图片描述

2.创建service信息

通过deployment里面的标签加载到svc里面
在这里插入图片描述
如果将svc的yaml文件改为不存在的label
在这里插入图片描述
查看新增的svc可以查看到cluster-ip,但是访问cluster-ip 拒绝连接,无法访问到后面的pod上面的服务
在这里插入图片描述
ipvsadm -Ln查看到10.105.33.115:80对应的服务没有
在这里插入图片描述
将svc yaml里面对应的selector标签修改正确后ipvsadm -Ln查看到10.99.10.103:80端口对应后面3个pod的虚拟ip和80端口对外暴露提供服务
在这里插入图片描述

Headless Service

在这里插入图片描述
在这里插入图片描述

NodePort

在这里插入图片描述
在这里插入图片描述
访问宿主机192.168.66.10:30715 即可访问到对应的svc后面的pod,在k8s集群中
在这里插入图片描述

LoadBalancer

ExternalName在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

Ingress

在这里插入图片描述
在这里插入图片描述

Ingress controller的搭建

官方网站地址:https://kubernetes.github.io/ingress-nginx/deploy/
使用wget下载yaml
在这里插入图片描述
在这里插入图片描述
docker pull nginx-ingress镜像下载ingress相关的镜像
在这里插入图片描述
docker save -o ingress.contr.tar 镜像下载地址保存ingress镜像的tar文件
在这里插入图片描述
docker load -i ingress.contro.tar 将镜像导入到docker本地仓库中
创建完ingress的deployment后
ingress pod默认的名称空间为 ingress-nginx

在这里插入图片描述

如果采用NODE 暴露方案
下载service-nodeport.yaml
在这里插入图片描述
kubectl apply -f service-nodeport.yaml生成svc

kubectl get svc -n ingress-nginx即可查看到nginx的svc对外暴露niginx的NODE主机的端口
在这里插入图片描述
至此ingress controller搭建完成,宿主机的31345和31802端口映射到ingress niginxpod里面的80和443端口

ingress案例

ingress controller 搭建完毕后配置ingress规则以及svc和deployment
在这里插入图片描述
创建一个yaml文件,其中包括deployment1以及svc-1,
在这里插入图片描述
在这里插入图片描述
产生svc-1后默认是ClusterIP并且根据lable name=nginx转发到对应的pod上,curl请求集群ip也可以成功
在这里插入图片描述
创建deployment2
在这里插入图片描述
将第二个svc改为svc-2标签也为svc-2,镜像升级为v2并且创建,请求cluster-ip地址即可查看到请求成功
在这里插入图片描述
创建ingress,ingress1和ingress2映射svc-1和svc-2
在这里插入图片描述
进入到ingress中查看
kubectl exec ingresspod名称 -n ingress-nginx -it -- /bin/bash查看
在这里插入图片描述
查看 ingress-nginx里面的conf文件,相关配置的kind:Ingress,会修改部署的ingress deployment里面conf配置文件里面的内容
在这里插入图片描述
访问www1.aiguigu.com:31345可以转发到部署的pod上面

在这里插入图片描述

Ingress HTTPS代理访问在这里插入图片描述

创建ingress的规则
在这里插入图片描述
新增deployment3 和svc-3
在这里插入图片描述

新增ingress规则https,指定secret name,域名,以及映射的svc的名称

在这里插入图片描述

猜你喜欢

转载自blog.csdn.net/Persistence___/article/details/117420496