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

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