1。概述
为了能够让进入资源能够工作,在Kubernetes集群中必须至少有一个运行中的入口控制器组件。也就是说如果在Kubernetes集群中没有一个入口控制器组件,只是定义了进入资源,其实并不会实现http、https协议的请求转发,负载均衡等功能。常见的入口控制器组件如下:
-
<李> Nginx李>
<李> Traefik李>
<李>香港李>
<李> Istio李>
<李> HAProxy李>
关于上述的组件目前并没有详细的对比,后续我们在对每个组件都有一定的了解和使用的基础之上,可以给出一些详细的对比信息。本篇内容将主要介绍traefik组件的安装部署以及会通过一个具体的应用作演示。
2。traefik组件的安装部署
2.1通过舵图部署traefik h5>
执掌traefik图包中包含了部署traefik组件的所需的资源,我们可以通过借助该组件进行快速部署traefik组件,以下是部署命令行信息:
<代码> cmd 比;执掌kube-system \安装——名字inner-traefik名称空间 ——设置=registry.docker.hankercloud.com/ingress-controller/traefik \形象 ——设置serviceType=NodePort \ 稳定/traefik 代码>
部署完成后,执行<代码> kubectl得到豆荚- n kube-system 代码>命令,可以看到在kube-system的命名空间中已经存在名为inner-traefik的豆荚。
2.2 RBAC配置h5>
在kubernetes 1.6版本中引入了RBAC(基于角色的访问控制)机制来更好的管理资源和API的访问。如果在集群中配置了RBAC,则需要授权Treafik使用kubernetes的API,有两种方式来进行设置合适的策略:通过特定的命名空间进行角色绑定(RoleBinding)以及全局角色绑定(ClusterRoleBinding)。现在简单起见,我们直接使用ClusterRoleBinding,资源定义如下:
<代码> - - - - - - :ClusterRole apiVersion: rbac.authorization.k8s.io/v1beta1 元数据: 名称:traefik-ingress-controller 规则: - apiGroups: ——“” 资源: ——服务 ——端点 ——秘密 动词: ——得到 ——列表 - - - - - -看 - apiGroups: ——扩展 资源: - - - - - -进入 动词: ——得到 ——列表 - - - - - -看 --- :ClusterRoleBinding apiVersion: rbac.authorization.k8s.io/v1beta1 元数据: 名称:traefik-ingress-controller roleRef: apiGroup: rbac.authorization.k8s.io :ClusterRole 名称:traefik-ingress-controller 主题: 类型:ServiceAccount 名称:traefik-ingress-controller 名称空间:kube-system --- apiVersion: v1 :ServiceAccount 元数据: 名称:traefik-ingress-controller 名称空间:kube-system 代码>
接下来我们执行如下命令创建资源并修改部署的资源定义文件。
<代码> - f traefik-rbac.yml kubectl适用 kubectl编辑部署inner-traefik - n kube-system 代码>
执行完上述的操作之后,我们可以进行校验相关的资源已经正常启动。
<代码> kubectl日志美元(kubectl豆荚- n kube-system | grep traefik | awk{打印1美元})- n kube-system 代码>
2.3负载均衡配置h5>
由于我们使用的是部署部署的traefik组件,其服务类型为NodePort,通过<代码> kubectl得到svc - n kube-system | grep traefik> 代码,可以看到端口映射关系,接下来我们在阿里云申请一个负载均衡的设备,然后进行相应的配置之后就完成了这一步操作。
另外一种替代方式是使用DaemonSet的方式部署traefik组件,设置主机端口和Pod实例端口的映射关系,也可以完成这一任务。
3。创建进入资源并进行调试
接下来我们在kubernetes集群中创建一个入口资源,由于我们之前已经在集群中部署了一个wordpress应用,资源定义文件如下:
<代码> apiVersion:扩展/v1beta1 :入口 元数据: 名称:wordpress-ingress 名称空间:默认 注释: nginx.ingress.kubernetes。io/rewrite-target:/规范: 规则: (主持人:blog.hankercloud.com http: 道路: -路径:/后端: 名:wordpress-test-wordpress servicePort: 80 代码>
完成上述的操作之后,我们在本地修改<代码>/etc/主机代码>文件,手动配置blog.hankercloud.com <代码> 代码>的域名解析记录,在浏览器地址栏输入http://blog.hankercloud.com就可以看到页面了,到此我们完成了traefik组件的安装部署及调试工作。