Kubernetes實錄(12) kubernetes使用traefik作爲反向代理(deployment模式)

Kubernetes實錄系列記錄文檔完整目錄參考: Kubernetes實錄-目錄

相關記錄鏈接地址 :

上一篇kubernetes使用traefik作爲反向代理(Deamonset模式)記錄了traefik的Deamonset模式配置方式。本篇文檔記錄deployment模式配置方式。更多介紹可以參考上一篇文檔以及官方網站。

一、使用deployment模式部署traefik(在kubernets worker節點)

1. kubernets環境

主機名稱 ip地址 操作系統 角色 軟件版本 備註
ejucsmaster-shqs-1 10.99.12.201 CentOS 7.5 proxy, master
ejucsmaster-shqs-2 10.99.12.202 CentOS 7.5 proxy, master
ejucsmaster-shqs-3 10.99.12.203 CentOS 7.5 proxy, master
ejucsnode-shqs-1 10.99.12.204 CentOS 7.5 worker
ejucsnode-shqs-2 10.99.12.205 CentOS 7.5 worker
ejucsnode-shqs-2 10.99.12.206 CentOS 7.5 worker

2. 從GitHub下載treafik部署文件

mkdir -p kubernets/traefik
cd kubernets/traefik
wget https://github.com/containous/traefik/archive/v1.7.8.zip
unzip v1.7.8.zip
cd traefik-1.7.8/examples/k8s/
# tree
	.
	├── cheese-default-ingress.yaml
	├── cheese-deployments.yaml
	├── cheese-ingress.yaml
	├── cheese-services.yaml
	├── cheeses-ingress.yaml
	├── traefik-deployment.yaml  # deployment模式文件
	├── traefik-ds.yaml          
	├── traefik-rbac.yaml        # rbac
	└── ui.yaml                  # 使用treafik代理traefik-ui的配置文件

這裏使用的Deployment,只是用traefik-deployment.yaml,traefik-rbac.yaml , ui.yaml 。
由於上一篇文檔已經配置了daemonset模式的traefik,這裏官方deployment模式的文件裏有與daemonset相同的參數或者對象,導致混淆,因此先清理掉daemonset模式的traefik。[不清理同時存在也是可以的,但需要修改yaml文件將衝突的配置修改掉]

kubectl delete -f ui.yaml
kubectl delete -f traefik-ds.yaml 
kubectl delete -f traefik-rbac.yaml

3. 部署traefik

3.1 rbac

kubectl apply -f traefik-rbac.yaml

kubectl get clusterrole
	traefik-ingress-controller                                             7s

3.2 treafik(Deployment)

kubectl apply -f traefik-deployment.yaml
	serviceaccount/traefik-ingress-controller created
	deployment.extensions/traefik-ingress-controller created
	service/traefik-ingress-service created

kubectl get serviceaccount -n kube-system
	traefik-ingress-controller           1         15s

kubectl get deployment -n kube-system
	traefik-ingress-controller   1/1     1            1           58s

kubectl get pods -n kube-system
	traefik-ingress-controller-8c8b85bbc-wd4ms   1/1     Running   0          21s

kubectl get svc -n kube-system
	traefik-ingress-service                                  NodePort    10.109.133.132   <none>        80:31197/TCP,8080:32400/TCP   66s

可以看到這個模式treafik,traefik-ui使用使用的nodePort的方式暴露服務的。
traefik: 31197
traefik-ui: 32400

3.3 訪問測試

以上treafik deployment 方式部署完成,可以通過nodeIP:NodePort訪問traefik-ui,例如10.99.12.201:32400
可以看到目前裏面什麼都沒有,因爲我們只是配置好了traefik,但是還沒有使用。
在這裏插入圖片描述

4. traefik-ui使用traefik進行代理(相當於一個demo實驗)

現在我們使用traefik來代理traefik-ui,我們使用域名traefik-ui.ejuops.com(該域名不存在,使用配置hosts的方式訪問).

4.1 配置traefik代理traefik-ui

# cat ui.yaml
# 具體內容根據實際情況修改,例如port,name,host等。
---
apiVersion: v1
kind: Service
metadata:
  name: traefik-web-ui
  namespace: kube-system
spec:
  selector:
    k8s-app: traefik-ingress-lb
  ports:
  - name: web
    port: 80
    targetPort: 8080
---
apiVersion: extensions/v1beta1
kind: Ingress
metadata:
  name: traefik-web-ui
  namespace: kube-system
spec:
  rules:
  # host根據實際情況進行修改。
  - host: traefik-ui.ejuops.com
    http:
      paths:
      - path: /
        backend:
          serviceName: traefik-web-ui
          servicePort: web
kubectl apply -f ui.yaml

kubectl get svc -n kube-system
	traefik-web-ui                                           ClusterIP   10.99.211.9      <none>        80/TCP                        9s

kubectl get ingress -n kube-system
	NAME             HOSTS                   ADDRESS   PORTS   AGE
	traefik-web-ui   traefik-ui.ejuops.com             80      21s

4.2 在主機上配置hosts文件(瀏覽器主機)

# C:\Windows\System32\drivers\etc\hosts
...
10.99.12.201 traefik-ui.ejuops.com

4.3 通過域名訪問traefik-ui

http://traefik-ui.ejuops.com:31197 [這裏不是80端口,不可以省略]可以看到treafik-ui的代理情況(frontends,backends,Health),目前只有這個使用使用了代理。
在這裏插入圖片描述

默認deployment只設置了一個副本,可以根據需要多配置幾個副本(直接修改deployment.yaml後kubectl apply -f xx.yaml就可以了,代理會自動發現)。以上使用deploment模式配置treafik完成。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章