k8s中部署traefik作为ingress

Ingress 工作原理

ingress controller通过和kubernetes api交互,动态的去感知集群中ingress规则变化,2.然后读取它,按照自定义的规则,规则就是写明了哪个域名对应哪个service,生成一段nginx配置,3.再写到nginx-ingress-control的pod里,这个Ingress controller的pod里运行着一个Nginx服务,控制器会把生成的nginx配置写入/etc/nginx.conf文件中,4.然后reload一下使配置生效。以此达到域名分配置和动态更新的问题。

Ingress 这个东西是 1.2 后才出现的,通过 Ingress 用户可以实现使用 nginx 等开源的反向代理负载均衡器实现对外暴露服务,以下详细说一下 Ingress,毕竟 traefik 用的就是 Ingress

1.使用 Ingress 时一般会有三个组件:

反向代理负载均衡器

Ingress Controller

Ingress

1.1、反向代理负载均衡器(安装traefik服务)

反向代理负载均衡器很简单,说白了就是 nginx、apache 、traefik什么的;在集群中反向代理负载均衡器可以自由部署,可以使用 Replication Controller、Deployment、DaemonSet 等等,不过个人喜欢以 DaemonSet 的方式部署,感觉比较方便

1.2、Ingress Controller

Ingress Controller 实质上可以理解为是个监视器,Ingress Controller 通过不断地跟 kubernetes API 打交道,实时的感知后端 service、pod 等变化,比如新增和减少 pod,service 增加与减少等;当得到这些变化信息后,Ingress Controller 再结合下文的 Ingress 生成配置,然后更新反向代理负载均衡器,并刷新其配置,达到服务发现的作用

1.3、Ingress

Ingress 简单理解就是个规则定义;比如说某个域名对应某个 service,即当某个域名的请求进来时转发给某个 service;这个规则将与 Ingress Controller 结合,然后 Ingress Controller 将其动态写入到负载均衡器配置中,从而实现整体的服务发现和负载均衡

2.安装traefik

$ gitclonehttps://github.com/containous/traefik.git

$ git checkout v1.7  #切换到v1.7分支

$ cd traefik/examples/k8s

traefik/examples/k8s/这个目录下就是示例 Traefik 启动所需要的 yaml 文件,Traefik 提供了适配各个类型服务编排的部署方式,kubernetes 启动方式支持 Deployment 和 DaemonSet(会在每个节点都部署服务https://www.kubernetes.org.cn/daemonset),二选一都可以。

$ kubectl  create  -f  traefik/examples/k8s/traefik-rbac.yaml

clusterrole  "traefik-ingress-controller"  created

clusterrolebinding  "traefik-ingress-controller"  created

$ kubectl  create  -f  traefik/examples/k8s/traefik-deployment.yaml

serviceaccount  "traefik-ingress-controller"  created

deployment  "traefik-ingress-controller"  created

service  "traefik-ingress-service"  created

$ kubectl  get  pods  --all  -namespaces  -o  wide

NAMESPACE      NAME                                         READY            STATUS  RESTARTS    AGE             IP                      NODE

kube-system   traefik-ingress-controller-46b75   1/1     Running     2          101d   172.20.166.107   172.16.5.205   <none>

好了,此时 Traefik 已经启动成功了,它同时启动了 80 和 8080 端口,80 对应的服务端口,8080 对应的 UI 端口,我们可以通过查看服务暴漏端口号浏览器访问下了提供的 UI 界面。

root@blk:~# kubectl get service -n kube-system

NAME                      TYPE        CLUSTER-IP      EXTERNAL-IP  PORT(S)                      AGE

kube-dns                  ClusterIP  10.68.0.2      <none>        53/UDP,53/TCP                22d

metrics-server            NodePort    10.68.2.105    <none>        443:30443/TCP                20d

traefik-ingress-service  NodePort    10.68.60.37    <none>        80:36774/TCP,8080:35935/TCP  64m

traefik-web-ui            ClusterIP  10.68.139.169  <none>        80/TCP                        57m
image

当你真正要访问该traefik-ui.com时,你还需要将这个域名绑定到它对应的IP地址,也就是

hostPort所在的主机的IP。配置好hosts文件后,访问traefik-ui.com。OK 1. 可以看到Ingress中,当访问traefik-ui.com这个域名时,对应会访问到名为traefik-web-ui的 Service的80端口中。而Service的80端口对应后端的traefik web UI的8080端口。到此为止,一个

完整的Ingress就部署完成了,它的访问流程是这样的:

  集群外部访问traefik-ui.com-->请求会到达traefik所在的主机的IP:hostPort上,也就是IP:80--> 

由于Ingress规则此时被转换成traefik中的反向代理配置,根据Ingress规则会被转发往traefik-web-ui

这个Service:80上-->Service转发到后端标签为 traefik-ingress-lb的pod的8080端口中,实际上又

回到了traefik,不过是8080端口。

  简单来说:请求域名---->traefik:80---->Ingress(只是Ingerss规则,实际还是由traefik完成)  ---->后端Service:80---->traefik:8080      2\. 部署其他后端服务时也是一样,把上面的后端Service和应用换成相应的就行了。比如部署一个  tomcat,那么需要再部署3个K8s资源,分别是tomcat-deployment.yaml、tomcat-service.yaml、  tomcat-Ingress.yaml,你请求的域名为Ingress中的host配置的域名,你请求流程为:

请求域名---->traefik:80---->Ingress(只是Ingerss规则,实际还是由traefik完成)----> tomcat-Service---->tomcat-deployment中的Pod。

3. 上面是通过hostPort暴露traefik,可以直接访问80端口,如果需要在多台node上部署,可以通

过给相应的node 设置lable,然后部署时指定nodeSelector。

  我们同样可以通过Service的NodePort暴露traefik,需要在traefik前再加一个Service,默认  NodePort端口范围为30000-32767,如果想直接暴露80端口,需要修改apiserver的启动参数配置,  tomcat采用该方式的请求流程为:

  请求---->traefik-service的Nodeport---->traefik---->Ingress(只是Ingerss规则,实际还是由  traefik  完成)---->tomcat-Service---->tomcat-deployment中的Pod。

注意:只要能正常访问到 ingress服务会根据配置的serviceName/servicePort访问到对应服务

4.部署自定义 Ingress(官方示例,实际情况需要自己改)

kubectl apply -f cheese-deployments.yaml

kubectl apply -f cheese-services.yaml

kubectl apply -f cheese-ingress.yaml

5.访问方式

在liunx 下用curl命令

curl -H "Host:peer0.org1.example.com" 172.16.5.205:37692/v1/consortium-chain/aaa (37692为traefik-ingress-service第一个port)

或者

curl peer0.org1.example.com:37692/v1/consortium-chain/aaa(需要设置一下peer0.org1.example.com的hosts,为代理服务所在node ip)

注意:域名是设置在 发送请求所在的node,若我们服务(此服务去请求设置的域名)跑在200节点,即在200节点hosts设置,

例如:172.16.5.205 peer0.org1,其中172.16.5.205为traefik服务所在节点(traefik以deployment启动,若以daemonset启动就任意node ip)

参考:

https://blog.51cto.com/13645243/2118455

https://blog.csdn.net/java_zyq/article/details/82496842

https://blog.csdn.net/hxpjava1/article/details/79459489

https://blog.csdn.net/hxpjava1/article/details/79375452

https://www.kubernetes.org.cn/4408.html

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 194,670评论 5 460
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 81,928评论 2 371
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 141,926评论 0 320
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 52,238评论 1 263
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 61,112评论 4 356
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 46,138评论 1 272
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 36,545评论 3 381
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 35,232评论 0 253
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 39,496评论 1 290
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 34,596评论 2 310
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 36,369评论 1 326
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 32,226评论 3 313
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 37,600评论 3 299
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 28,906评论 0 17
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 30,185评论 1 250
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 41,516评论 2 341
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 40,721评论 2 335

推荐阅读更多精彩内容