鸿 网 互 联 www.68idc.cn

kubernetes ingress 原理、部署

来源:互联网 作者:佚名 时间:2022-07-19 11:17
一、 ingress 原理 1、数据流向 ingress为七层负载均衡,理解为nginx。源于官网的数据流向图,客户端访问进入ingress,ingress根据域名进行解析 ,随后找到关联的service服务获取pod信息,直接

一、 ingress 原理

1、数据流向

ingress为七层负载均衡,理解为nginx。源于官网的数据流向图,客户端访问进入ingress,ingress根据域名进行解析 ,随后找到关联的service服务获取pod信息,直接代理至pod节点kubernetes ingress 原理、部署

2、ingress 模式 hostnetwork nodeport

hostnetwork模式:

kubernetes ingress 原理、部署每个节点都创建一个ingress-controller的容器,容器的网络模式设为hostNetwork。访问请求通过80/443端口将直接进入到pod-nginx中。而后nginx根据ingress规则再将流量转发到对应的web应用容器中。

nodeport模式 :

kubernetes ingress 原理、部署访问流量先通过nodeport进入到node节点,经iptables (svc) 转发至ingress-controller容器,再根据rule转发至后端各业务的容器中。

二、部署

1、hostnetwork模式

1) 下载yaml文件

wget https://raw.githubusercontent.com/kubernetes/ingress-nginx/nginx-0.30.0/deploy/static/mandatory.yaml

2) 修改镜像

cp mandatory.yaml mandatory.yaml_back quay.io/kubernetes-ingress-controller/nginx-ingress-controller:0.30.0 改为,registry.cn-hangzhou.aliyuncs.com/google_containers/nginx-ingress-controller:0.30.0 3) 先把镜像拉取下来 docker pull registry.cn-hangzhou.aliyuncs.com/google_containers/nginx-ingress-controller:0.30.0

3) 修改为hostnetwork模式

vim mandatory

kubernetes ingress 原理、部署

4) 部署

kubectl apply -f mandatory.yaml

kubernetes ingress 原理、部署

5) ingress-nginx pod 随机分配检验ingress-nginx pod 随机被调配到node节点,新加nod02节点,再重新部署

kubectl apply -f mandatory.yaml

kubernetes ingress 原理、部署

kubernetes ingress 原理、部署6) 修改为daemon-set模式kubernetes ingress 原理、部署ingress-controller pod 在所有节点都有部署kubernetes ingress 原理、部署7) 使用标签分组部署ingress-controller找一组专用于ingress入口的node节点做为流量入口,使用10.0.0.104做为流量入口。对于亲和性的配置需要k8s v1.10+

1>nod02做为ingress 专用节点,打标签

kubectl get nodes --show-labels kubectl label nodes nod02 httpin=ingressfor kubectl label nodes nod02 httpin=podforingress --overwrite

kubernetes ingress 原理、部署

2>daemon-set,亲和性配置根据 nodeselector配置亲和性,node节点配置设置limit上限kubernetes ingress 原理、部署kubernetes ingress 原理、部署3>apply

kubectl apply -f mandatory.yaml

pod被调度到nod02节点。(如果使用label 的 key value配置,配置错误不会报错并且配置不会生效,命名空间看不到任何pod)kubernetes ingress 原理、部署

2、nodeport 模式部署

nodeport 可以使用deploy部署或者helm部署,此处使用helm部署

1) 添加helm依赖

helm repo add nginx-stable https://helm.nginx.com/stable helm repo list helm search repo nginx-ingress

kubernetes ingress 原理、部署kubernetes ingress 原理、部署

2)将依赖拉到本地,修改nodeport

helm pull nginx-stable/nginx-ingress tar xf nginx-ingress-0.8.1.tgz vim ./nginx-inress/values.yaml

kubernetes ingress 原理、部署3) 安装

kubectl create namespace ingress-nginx helm install ingress-nginx ./nginx-ingress -n ingress-nginx [root@k8s01 ingress]# helm install ingress-nginx ./nginx-ingress -n ingress-nginx Error: cannot re-use a name that is still in use [root@k8s01 ingress]# helm uninstall ingress-nginx -n ingress-nginx release "ingress-nginx" uninstalled

kubernetes ingress 原理、部署

kubectl get pods -o wide -n ingress-nginx kubectl get svc -n ingress-nginx

kubernetes ingress 原理、部署

三、结构

ingress入口分组节点用于流量入口,外部必然是负载均衡。现在大部分是云环境,服务暴露大部分通过4层7层SLB,deployment部署通过加载annotation,loadbalance-id 实现对4层或者7层关联。或者直接使用ingress来实现7层负载。不论什么环境考虑不外乎两点,高并发大流量必然带来的是高可用性以及横向扩展能力的需求。

上一篇:统信UOS中普通用户忘记密码处理方法
下一篇:没有了
网友评论
<