Kubernetes实录系列记录文档完整目录参考: Kubernetes实录-目录
相关记录链接地址 :
建议:
traefik已经更到了2.x版本,采用kubernetes CRD方式配置,功能比traefik 1.x 强大很多,可以直接配置traefik 2.x版本`
一、使用DaemonSet模式部署traefik 1.x(在kubernetes master节点)
1. kubernetes环境
主机名称 | ip地址 | 操作系统 | 角色 | 软件版本 | 备注 |
---|---|---|---|---|---|
ejucsmaster-shqs-1 | 10.99.12.201 | CentOS 7.5 | proxy, master,traefik | DaemonSet | |
ejucsmaster-shqs-2 | 10.99.12.202 | CentOS 7.5 | proxy, master,traefik | DaemonSet | |
ejucsmaster-shqs-3 | 10.99.12.203 | CentOS 7.5 | proxy, master,traefik | DaemonSet | |
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 kubernetes/traefik
cd kubernetes/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
├── traefik-ds.yaml # DaemonSet模式文件
├── traefik-rbac.yaml # rbac
└── ui.yaml # 使用treafik代理traefik-ui的配置文件
这里使用的DaemonSet,只是用traefik-ds.yaml ,traefik-rbac.yaml , ui.yaml
3. 部署traefik
3.1 rbac
kubectl apply -f traefik-rbac.yaml
kubectl get clusterrole
traefik-ingress-controller 3h29m
3.2 treafik
github上下载的部署文件traefik-ds.yaml,会在所有节点部署traefik,而我们只需要在3个master节点部署,因此需要添加nodeSelector过滤。
# cat traefik-ds.yaml
# ...
kind: DaemonSet
apiVersion: extensions/v1beta1
# ...
spec:
template:
# ...
spec:
serviceAccountName: traefik-ingress-controller
terminationGracePeriodSeconds: 60
#=================添加nodeSelector信息:只在master节点创建===================
tolerations:
- key: node-role.kubernetes.io/master
operator: "Equal"
value: ""
effect: NoSchedule
nodeSelector:
node-role.kubernetes.io/master: ""
#=========================================================================
containers:
- image: traefik
name: traefik-ingress-lb
# ...
kubectl apply -f traefik-ds.yaml
kubectl get svc -n kube-system
traefik-ingress-service ClusterIP 10.107.214.109 <none> 80/TCP,8080/TCP 4h37m
kubectl get pods -n kube-system -o wide
traefik-ingress-controller-4dcwd 1/1 Running 0 4h38m 192.168.2.4 ejucsmaster-shqs-3 <none> <none>
traefik-ingress-controller-dc5s4 1/1 Running 0 4h38m 192.168.1.3 ejucsmaster-shqs-2 <none> <none>
traefik-ingress-controller-dmn5w 1/1 Running 0 4h38m 192.168.0.4 ejucsmaster-shqs-1 <none> <none>
3.3 访问测试
以上treafik daemonset方式部署完成,可以通过master_ip:8080访问traefik-ui,例如10.99.12.201:8080
可以看到目前里面什么都没有,因为我们只是配置好了traefik,但是还没有使用。
4. traefik-ui使用traefik进行代理(相当于一个demo实验)
上面3.3节使用的是master_ip:8080(traefik_ui服务端口,可以修改),现在我们使用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.107.53.86 <none> 80/TCP 2s
kubectl get ingress -n kube-system
NAME HOSTS ADDRESS PORTS AGE
traefik-web-ui traefik-ui.ejuops.com 80 29s
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 可以看到treafik-ui的代理情况(frontends,backends,Health),目前只有这个使用使用了代理。
以上使用daemonset配置treafik完成。