当前位置:首页 > Web开发 > 正文

CentOS上安置Kubernetes集群(四)使用Traefi袒露Kubernetes处事

2024-03-31 Web开发

标签:

k8s的集群大大都情况需要对外处事,而处事袒露的方法有很多,这里拔取traefik来讲解,其它就暂时不详细介绍,包孕Istio,代后续更新后再增补上来。一句话,来不及解释,连忙上车。

Traefkik简介

Traefik是开源边沿路由器,类似 nginx、apache 那样的反向代办代理处事器、网关,代表系统接收请求,并找出卖力措置惩罚惩罚这些请求的组件。Traefik自动发明适合您处事的配置,同时热更新撑持多种负载均衡算法断路器,重试供给监控、打点 UI 界面用 go 语言开发,天然的拥抱 k8s

Traefik 2.0 几个值得存眷的成果

使用 CRD 来完成之前 Ingress + 注解的成果

撑持多协议的 TCP 端口路由

引入了 MiddleWare,使用中间件完全自界说路由

金丝雀颁布

部署Traefik 部署规划

本人的k8s环境是一台华为TaiShan2280v2的ARM处事器+多台x86_64处事器,TaiShan2280v2处事器作为master节点,同时运行traefik组为界限路由和负载均衡器(本人的应用需求没有那么高,想丰裕操作这台新近的ARM处事器,高可用方面暂时没有考虑,后续会逐渐跟上),而其它处事器则只作为node节点。Traefik作为界限路由、负载均衡,给与了hostport+特定节点的方法进行部署。

部署CRD资源

对照固定,使用官方文档即可

创建traefik-crd.yaml文件 apiVersion: apiextensions.k8s.io/v1beta1 kind: CustomResourceDefinition metadata: name: ingre***outes.traefik.containo.us spec: group: traefik.containo.us version: v1alpha1 names: kind: Ingre***oute plural: ingre***outes singular: ingre***oute scope: Namespaced --- apiVersion: apiextensions.k8s.io/v1beta1 kind: CustomResourceDefinition metadata: name: ingre***outetcps.traefik.containo.us spec: group: traefik.containo.us version: v1alpha1 names: kind: Ingre***outeTCP plural: ingre***outetcps singular: ingre***outetcp scope: Namespaced --- apiVersion: apiextensions.k8s.io/v1beta1 kind: CustomResourceDefinition metadata: name: middlewares.traefik.containo.us spec: group: traefik.containo.us version: v1alpha1 names: kind: Middleware plural: middlewares singular: middleware scope: Namespaced --- apiVersion: apiextensions.k8s.io/v1beta1 kind: CustomResourceDefinition metadata: name: tlsoptions.traefik.containo.us spec: group: traefik.containo.us version: v1alpha1 names: kind: TLSOption plural: tlsoptions singular: tlsoption scope: Namespaced --- apiVersion: apiextensions.k8s.io/v1beta1 kind: CustomResourceDefinition metadata: name: traefikservices.traefik.containo.us spec: group: traefik.containo.us version: v1alpha1 names: kind: TraefikService plural: traefikservices singular: traefikservice scope: Namespaced 创建CRD(CustomResourceDefinition)资源 $ kubectl apply -f traefik-crd.yaml 创建 RBAC 权限

Kubernetes 在 1.6 版本中引入了基于角色的访谒控制(RBAC)计谋,便利对 Kubernetes 资源和 API 进行细粒度控制。Traefik 需要必然的权限,所以这里提前创建好 Traefik ServiceAccount 并分配必然的权限。

创建 traefik-rbac.yaml 文件 apiVersion: v1 kind: ServiceAccount metadata: namespace: default name: traefik-ingress-controller --- kind: ClusterRole apiVersion: rbac.authorization.k8s.io/v1beta1 metadata: name: traefik-ingress-controller rules: - apiGroups: - "" resources: - services - endpoints - secrets verbs: - get - list - watch - apiGroups: - extensions resources: - ingresses verbs: - get - list - watch - apiGroups: - extensions resources: - ingresses/status verbs: - update - apiGroups: - traefik.containo.us resources: - middlewares verbs: - get - list - watch - apiGroups: - traefik.containo.us resources: - ingre***outes verbs: - get - list - watch - apiGroups: - traefik.containo.us resources: - ingre***outetcps verbs: - get - list - watch - apiGroups: - traefik.containo.us resources: - tlsoptions verbs: - get - list - watch - apiGroups: - traefik.containo.us resources: - traefikservices verbs: - get - list - watch --- kind: ClusterRoleBinding apiVersion: rbac.authorization.k8s.io/v1beta1 metadata: name: traefik-ingress-controller roleRef: apiGroup: rbac.authorization.k8s.io kind: ClusterRole name: traefik-ingress-controller subjects: - kind: ServiceAccount name: traefik-ingress-controller namespace: default 创建RBAC资源 $ kubectl apply -f traefik-rbac.yaml 节点设置(可选) 标签

因为我的集群里面有ARM处事器,想让traefik运行在特定的节点上,该节点也作为负载均衡和路由节点,因此需要设置标签,固然我这里的环境也可以不用设置,因为ARM处事器只有一台),直接操作系统的标签也可以。

设置标签

$ kubectl label node taishan2280v2 IngressProxy=true

检察标签

$ kubectl get nodes --show-lables

通过检察标签命令可以看见默认设置的标签,可以本身加以操作。

设置污点taints和容忍tolerations 检察污点 taint

污点是设置在 Node 节点上,所以我们可以通过检察节点信息来查找该节点是否设置污点以及对污点的信息。检察节点名称如下:

语法:kubectl describe nodes [节点名]

$ kubectl describe node

温馨提示: 本文由Jm博客推荐,转载请保留链接: https://www.jmwww.net/file/web/32714.html