k8s Service和Ingress
Service概念Service的类型ClusterIP当使用默认ClusterIP的时候,其他pod访问nginx-deployment通过svc,直接访问集群内部的IPNodePort类型使用NodePort类型会在 节点服务器上开放一个端口映射到SVC上面设置的某个端口上,通过标签选择,负载到要访问的pod上,一般SVC前面放个nginx反向代理做负载来实现svc对的高可用LoadBalan
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相关信息
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的名称
更多推荐
所有评论(0)