【Kubernetes系列】第5篇 Ingress controller – traefik组件介绍

1. 概述

为了能够让Ingress资源能够工作,在Kubernetes集群中必须至少有一个运行中的ingress controller组件。也就是说如果在kubernetes集群中没有一个ingress controller组件,只是定义了ingress资源,其实并不会实现http、https协议的请求转发、负载均衡等功能。常见的ingress controller组件如下:

  • Nginx
  • Traefik
  • Kong
  • Istio
  • HAProxy

关于上述的组件目前并没有详细的对比,后续我们在对每个组件都有一定的了解和使用的基础之上,可以给出一些详细的对比信息。本篇内容将主要介绍traefik组件的安装部署以及会通过一个具体的应用作演示。

2. traefik组件的安装部署

2.1 通过helm chart部署traefik

helm traefik chart包中包含了部署traefik组件的所需的资源,我们可以通过借助该组件进行快速部署traefik组件,以下是部署命令行信息:

  1. `cmd line
  2. > helm install --name inner-traefik --namespace kube-system \
  3. --set image=registry.docker.hankercloud.com/ingress-controller/traefik \
  4. --set serviceType=NodePort \
  5. stable/traefik`

部署完成后,执行 kubectl get pods -n kube-system命令,可以看到在kube-system的命名空间中已经存在名为 inner-traefik 的Pod。

2.2 RBAC配置

在kubernetes 1.6版本中引入了RBAC(Role Based Access Control)机制来更好的管理资源和API的访问。如果在集群中配置了RBAC,则需要授权Treafik使用Kubernetes的API,有两种方式来进行设置合适的策略:通过特定的命名空间进行角色绑定(RoleBinding)以及全局角色绑定(ClusterRoleBinding)。现在简单起见,我们直接使用ClusterRoleBinding,资源定义如下:

  1. ---
  2. kind: ClusterRole
  3. apiVersion: rbac.authorization.k8s.io/v1beta1
  4. metadata:
  5. name: traefik-ingress-controller
  6. rules:
  7. - apiGroups:
  8. - ""
  9. resources:
  10. - services
  11. - endpoints
  12. - secrets
  13. verbs:
  14. - get
  15. - list
  16. - watch
  17. - apiGroups:
  18. - extensions
  19. resources:
  20. - ingresses
  21. verbs:
  22. - get
  23. - list
  24. - watch
  25. ---
  26. kind: ClusterRoleBinding
  27. apiVersion: rbac.authorization.k8s.io/v1beta1
  28. metadata:
  29. name: traefik-ingress-controller
  30. roleRef:
  31. apiGroup: rbac.authorization.k8s.io
  32. kind: ClusterRole
  33. name: traefik-ingress-controller
  34. subjects:
  35. - kind: ServiceAccount
  36. name: traefik-ingress-controller
  37. namespace: kube-system
  38. ---
  39. apiVersion: v1
  40. kind: ServiceAccount
  41. metadata:
  42. name: traefik-ingress-controller
  43. namespace: kube-system

接下来我们执行如下命令创建资源并修改deployment的资源定义文件。

  1. kubectl apply -f traefik-rbac.yml
  2. kubectl edit deploy inner-traefik -n kube-system

执行完上述的操作之后,我们可以进行校验相关的资源已经正常启动。

  1. kubectl logs $(kubectl get pods -n kube-system |grep traefik | awk '{print $1}') -n kube-system

2.3 负载均衡配置

由于我们使用的是Deployment部署的traefik组件,其Service Type为NodePort,通过 kubectl get svc -n kube-system|grep traefik,可以看到端口映射关系,接下来我们在阿里云申请一个负载均衡的设备,然后进行相应的配置之后就完成了这一步操作。

另外一种替代方式是使用DaemonSet的方式部署traefik组件,设置主机端口和Pod实例端口的映射关系,也可以完成这一任务。

3. 创建ingress资源并进行调试

接下来我们在kubernetes集群中创建一个ingress资源,由于我们之前已经在集群中部署了一个wordpress应用,资源定义文件如下:

  1. apiVersion: extensions/v1beta1
  2. kind: Ingress
  3. metadata:
  4. name: wordpress-ingress
  5. namespace: default
  6. annotations:
  7. nginx.ingress.kubernetes.io/rewrite-target: /
  8. spec:
  9. rules:
  10. - host: blog.hankercloud.com
  11. http:
  12. paths:
  13. - path: /
  14. backend:
  15. serviceName: wordpress-test-wordpress
  16. servicePort: 80

完成上述的操作之后,我们在本地修改 /etc/hosts文件,手动配置 blog.hankercloud.com的域名解析记录,在浏览器地址栏输入 http://blog.hankercloud.com 就可以看到页面了,到此我们完成了traefik组件的安装部署及调试工作。

4. 参考文档:

https://docs.traefik.io/v1.5/user-guide/kubernetes/ 
https://kubernetes.io/docs/concepts/services-networking/ingress/

Image placeholder
yanrui
未设置
  98人点赞

没有讨论,发表一下自己的看法吧

推荐文章
Kubernetes 基础信息:什么是 Kubernetes?

简介 Kubernetes(常简称为K8s,在希腊语意为“舵手”或“驾驶员”)是用于自动部署、扩展和管理容器化(containerized)应用程序的开源系统。 由JoeBeda、BrendanBur

Stylus系列——webpack-spritesmith配合stylus使用示例

一、前言基于Webpack的CSSSprites实现方案,若是直接在html中调用雪碧图图标已经很方便,但是实际开发过程可能遇到需要在伪元素中使用雪碧图,或者需要hover切换另一个图标,这种情况下就

【系列】股份制银行在职员工有多少?其中研发又有多少人?

本篇为系列文章第一篇,下一篇, 2018年,股份制银行在IT方面都花了多少钱,做了哪些事?摘要:虽然做过些与银行相关选题,比如《四大行、股份制银行、城商行都在使用什么数据库?》《银行数据库选型之秘》《

Twitter 宣布抛弃 Mesos,全面转向 Kubernetes

作者|阿里云智能高级技术专家张磊划重点Twitter的基础设施从Mesos全面转向Kubernetes阿里云容器平台团队即将开源 Kubernetes高级作业管理集合美国西部时间5月2日下午7点,Tw

云端的生存之道,第 1 单元:将 Spring Boot 部署到 Kubernetes

初始化Kubernetes集群 第一步是初始化IBMCloud上的Kubernetes集群。IBMCloud可能需要几分钟时间来启动新的Kubernetes集群;因此,通过先执行初始化操作,可以在后台

为什么说谷歌Anthos是kubernetes的翻版?

在本周纽约的一次会议活动中,谷歌谈到了Anthos。那么,Anthos到底是什么?有哪些新功能?本文将逐一解答!什么是Anthos?从官方资料来看,Anthos是谷歌的混合云平台,主要作用是保护客户的

Chaos Mesh —— 让应用跟混沌在 Kubernetes 上共舞

作者:殷成文2019年12月31日,我们在GitHub上正式开源了ChaosMesh。作为一个云原生的混沌测试平台,ChaosMesh提供在Kubernetes平台上进行混沌测试的能力。本篇文章将围绕

我如何将博客迁移到 Kubernetes(上)

最近Kubernetes的发展,以及在我司的大量应用,自己也迫不及待想要尝尝鲜,虽然我的博客是基于Hexo的纯静态站点,但这并不能阻挡我把它迁移上Kubernetes!毕竟...相比于GitHubPa

我如何将博客迁移到 Kubernetes(下)

前面的部分介绍了如何为我的博客打包Docker镜像,接下来就是重头戏——部署到Kubernetes。 GoogleKubernetesEngine 没错,我现在自用的Kubernetes集群就是

使用 Kubernetes 来部署你的 Laravel 程序

说明 Laravel是开发PHP应用程序的优秀框架。无论您是需要构建新想法的原型,开发MVP(最小可行产品)还是发布成熟的企业系统,Laravel都可以促进所有开发任务和工作流程。 如何处理部署应用

当Kubernetes成为云操作系统的标准应用,AWS也亮出了“杀手锏”!

作为云计算领域的排头兵,AWS一直是“老大哥”形象,他的一举一动都牵动着无数人的神经。AWS不仅在云计算领域投入时间早、运行时间长、客户多,在无服务器、容器以及现代化应用工具开发方面,也是当之无愧的引

为什么说Kubernetes的崛起预示着云原生时代到来?

现在,云原生、Kubernetes已经成为企业IT领域的时髦概念,几乎所有的企业都在关注;如果不提这些概念,好像企业就会在云市场竞争中失去绝对话语权。那么,云原生和Kubernetes是怎样一种关系?

美团点评Kubernetes集群管理实践

背景作为国内领先的生活服务平台,美团点评很多业务都具有非常显著、规律的“高峰”和“低谷”特征。尤其遇到节假日或促销活动,流量还会在短时间内出现爆发式的增长。这对集群中心的资源弹性和可用性有非常高的要求

如何应对Kubernetes中的存储管理挑战?

Kubernetes是Google开源的一个容器编排引擎,它支持自动化部署、大规模可伸缩、应用容器化管理。对于那些工作负载多样化、不断变化的企业来说,使用Kubernetes是非常有利的。与容器一样,

Kubernetes监控在小米的落地

本文介绍了高可用、持久存储、可动态调整的Kubernetes监控方案的实现过程。小米的弹性调度平台(Ocean)以及容器平台主要基于开源容器自动化管理平台kubernetes(简称k8s)来提供服务,

K8s有多热?传统银行转型拥抱Kubernetes案例

Kubernetes已经成为标准的基础设施API,像RedHat、Mesosphere(现在的D2IQ)和Pivotal等供应商都无法避免。如果您希望使企业能够合理构建应用程序,那么Kubernete

Spark in action on Kubernetes – 存储篇

作者|阿里云智能事业群技术专家莫源前言在上篇文章中,SparkinactiononKubernetes–SparkOperator的原理解析我们分析了SparkOperator内部的机制,今天我们会讨

如何在生产环境中部署Kubernetes集群?

如果把kubernetes集群应用于生产环境中,需要做哪些准备?我们先要弄清楚一个词,什么是“生产就绪”?生产就绪,是我们经常听到的一个专业术语,大概意思是已经准备好并已处于即将生产的状态。但是,到底

Kubernetes 未来一年会有哪些变化?

试图预测历史上发展最快的开源项目的未来几乎是徒劳的,从谷歌到社区其他成员的“传承”已经发展成为编排的实际标准,从来没有一个项目以这种方式获得了整个企业社区的集体支持。从CNCF成员的长名单就可以看出,

Kubernetes1.14 版发布,增强了云原生平台的Windows节点支持

Kubernetes1.14GA版本,是开源云原生平台Kubernetes在2019年的一次重大更新。自3月25日开始,这一版本正式推出,供开发者全面使用。  Kubernetes,由云原生计算基金会

白话 Kubernetes 基础概念

Kubernetes简介微服务框架的流行,使得服务越来越精细化,服务也变的越来越多,对于发布和管理而言产生了巨大的挑战,而Docker的诞生,给与微服务的资源治理和控制提供了很好的基础。容器化可以解决

理解Kubernetes网络:pods篇

这篇文章将试图揭开在kubernetes集群中运行的网络的多层神秘感。Kubernetes是一个功能强大的平台,其中包含许多智能的设计选择,但讨论交互的方式可能会造成混淆:Pod网络,服务网络,集群I

一小时快速搭建基于阿里云容器服务-Kubernetes的Web应用

本文面向的读者如果您是一个Kubernetes的初学者,本文可以帮助你快速在云上搭建一个可实际使用的集群环境,并发布自己的第一个应用。你无须提前准备任何的硬件资源或者下载任何的软件包。 如果您已经有一

欧盟发布2018全球企业研发费用榜单:华为超苹果跃居第5,BAT排名50开外

大数据文摘出品作者:王嘉仪、魏子敏华为的迅速增长并不是一蹴而就的,至少从近几年的研发投入上看,它比中国任何一家公司都努力。欧盟下属联合研究中心近日公布了2018年度全球企业R&D研发投资排行榜(EUI

流畅的python学习笔记-第5章

第5章函数[toc]函数在python中一切都可以视作为对象,包括函数deffunction_try(): '''itisfuncitontrydoc''' print('function_tryd