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完成。