您好,登錄后才能下訂單哦!
為了能夠讓Ingress資源能夠工作,在Kubernetes集群中必須至少有一個運行中的ingress controller組件。也就是說如果在kubernetes集群中沒有一個ingress controller組件,只是定義了ingress資源,其實并不會實現http、https協議的請求轉發、負載均衡等功能。常見的ingress controller組件如下:
關于上述的組件目前并沒有詳細的對比,后續我們在對每個組件都有一定的了解和使用的基礎之上,可以給出一些詳細的對比信息。本篇內容將主要介紹traefik組件的安裝部署以及會通過一個具體的應用作演示。
helm traefik chart包中包含了部署traefik組件的所需的資源,我們可以通過借助該組件進行快速部署traefik組件,以下是部署命令行信息:
cmd line
> helm install --name inner-traefik --namespace kube-system \
--set image=registry.docker.hankercloud.com/ingress-controller/traefik \
--set serviceType=NodePort \
stable/traefik
部署完成后,執行kubectl get pods -n kube-system
命令,可以看到在kube-system的命名空間中已經存在名為 inner-traefik 的Pod。
在kubernetes 1.6版本中引入了RBAC(Role Based Access Control)機制來更好的管理資源和API的訪問。如果在集群中配置了RBAC,則需要授權Treafik使用Kubernetes的API,有兩種方式來進行設置合適的策略:通過特定的命名空間進行角色綁定(RoleBinding)以及全局角色綁定(ClusterRoleBinding)。現在簡單起見,我們直接使用ClusterRoleBinding,資源定義如下:
---
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
---
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: kube-system
---
apiVersion: v1
kind: ServiceAccount
metadata:
name: traefik-ingress-controller
namespace: kube-system
接下來我們執行如下命令創建資源并修改deployment的資源定義文件。
kubectl apply -f traefik-rbac.yml
kubectl edit deploy inner-traefik -n kube-system
執行完上述的操作之后,我們可以進行校驗相關的資源已經正常啟動。
kubectl logs $(kubectl get pods -n kube-system |grep traefik | awk '{print $1}') -n kube-system
由于我們使用的是Deployment部署的traefik組件,其Service Type為NodePort,通過 kubectl get svc -n kube-system|grep traefik
,可以看到端口映射關系,接下來我們在阿里云申請一個負載均衡的設備,然后進行相應的配置之后就完成了這一步操作。
另外一種替代方式是使用DaemonSet的方式部署traefik組件,設置主機端口和Pod實例端口的映射關系,也可以完成這一任務。
接下來我們在kubernetes集群中創建一個ingress資源,由于我們之前已經在集群中部署了一個wordpress應用,資源定義文件如下:
apiVersion: extensions/v1beta1
kind: Ingress
metadata:
name: wordpress-ingress
namespace: default
annotations:
nginx.ingress.kubernetes.io/rewrite-target: /
spec:
rules:
- host: blog.hankercloud.com
http:
paths:
- path: /
backend:
serviceName: wordpress-test-wordpress
servicePort: 80
完成上述的操作之后,我們在本地修改/etc/hosts
文件,手動配置blog.hankercloud.com
的域名解析記錄,在瀏覽器地址欄輸入 http://blog.hankercloud.com 就可以看到頁面了,到此我們完成了traefik組件的安裝部署及調試工作。
https://docs.traefik.io/v1.5/user-guide/kubernetes/
https://kubernetes.io/docs/concepts/services-networking/ingress/
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。