目录

1.部署traefik

2.准备资源配置清单

3.应用资源配置清单

4.检查创建资源

5.解析域名

6.配置反向代理

7.浏览器访问

部署traefik

在HDSS7-200.host.com上

  1. [root@hdss7- k8s-yaml]# docker pull traefik:v1.7.2-alpine
  2. [root@hdss7- k8s-yaml]# docker images |grep traefik
  3. [root@hdss7- k8s-yaml]# docker tag add5fac61ae5 harbor.fx.com/public/traefik:v1.7.2
  4. [root@hdss7- k8s-yaml]# docker push harbor.fx.com/public/traefik:v1.7.2

准备资源配置清单

在HDSS7-200.host.com上

  1. [root@hdss7- traefik]# mkdir -p /data/k8s-yaml/traefik && cd /data/k8s-yaml/traefik

rbac.yaml

  1. [root@hdss7- traefik]# vim rbac.yaml
  2. apiVersion: v1
  3. kind: ServiceAccount
  4. metadata:
  5. name: traefik-ingress-controller
  6. namespace: kube-system
  7. ---
  8. apiVersion: rbac.authorization.k8s.io/v1beta1
  9. kind: ClusterRole
  10. metadata:
  11. name: traefik-ingress-controller
  12. rules:
  13. - apiGroups:
  14. - ""
  15. resources:
  16. - services
  17. - endpoints
  18. - secrets
  19. verbs:
  20. - get
  21. - list
  22. - watch
  23. - apiGroups:
  24. - extensions
  25. resources:
  26. - ingresses
  27. verbs:
  28. - get
  29. - list
  30. - watch
  31. ---
  32. kind: ClusterRoleBinding
  33. apiVersion: rbac.authorization.k8s.io/v1beta1
  34. metadata:
  35. name: traefik-ingress-controller
  36. roleRef:
  37. apiGroup: rbac.authorization.k8s.io
  38. kind: ClusterRole
  39. name: traefik-ingress-controller
  40. subjects:
  41. - kind: ServiceAccount
  42. name: traefik-ingress-controller
  43. namespace: kube-system

ds.yaml

  1. [root@hdss7- traefik]# vim ds.yaml
  2. apiVersion: extensions/v1beta1
  3. kind: DaemonSet
  4. metadata:
  5. name: traefik-ingress
  6. namespace: kube-system
  7. labels:
  8. k8s-app: traefik-ingress
  9. spec:
  10. template:
  11. metadata:
  12. labels:
  13. k8s-app: traefik-ingress
  14. name: traefik-ingress
  15. spec:
  16. serviceAccountName: traefik-ingress-controller
  17. terminationGracePeriodSeconds:
  18. containers:
  19. - image: harbor.fx.com/public/traefik:v1.7.2
  20. name: traefik-ingress
  21. ports:
  22. - name: controller
  23. containerPort:
  24. hostPort:
  25. - name: admin-web
  26. containerPort:
  27. securityContext:
  28. capabilities:
  29. drop:
  30. - ALL
  31. add:
  32. - NET_BIND_SERVICE
  33. args:
  34. - --api
  35. - --kubernetes
  36. - --logLevel=INFO
  37. - --insecureskipverify=true
  38. - --kubernetes.endpoint=https://10.4.7.10:7443
  39. - --accesslog
  40. - --accesslog.filepath=/var/log/traefik_access.log
  41. - --traefiklog
  42. - --traefiklog.filepath=/var/log/traefik.log
  43. - --metrics.prometheus

svc.yaml

  1. [root@hdss7- traefik]# vim svc.yaml
  2. kind: Service
  3. apiVersion: v1
  4. metadata:
  5. name: traefik-ingress-service
  6. namespace: kube-system
  7. spec:
  8. selector:
  9. k8s-app: traefik-ingress
  10. ports:
  11. - protocol: TCP
  12. port:
  13. name: controller
  14. - protocol: TCP
  15. port:
  16. name: admin-web

ingress.yaml

  1. [root@hdss7- traefik]# vim ingress.yaml
  2. apiVersion: extensions/v1beta1
  3. kind: Ingress
  4. metadata:
  5. name: traefik-web-ui
  6. namespace: kube-system
  7. annotations:
  8. kubernetes.io/ingress.class: traefik
  9. spec:
  10. rules:
  11. - host: traefik.fx.com
  12. http:
  13. paths:
  14. - path: /
  15. backend:
  16. serviceName: traefik-ingress-service
  17. servicePort:

应用资源配置清单

  1. [root@hdss7- ~]# kubectl apply -f http://k8s-yaml.fx.com/traefik/rbac.yaml
  2. [root@hdss7- ~]# kubectl apply -f http://k8s-yaml.fx.com/traefik/ds.yaml
  3. [root@hdss7- ~]# kubectl apply -f http://k8s-yaml.fx.com/traefik/svc.yaml
  4. [root@hdss7- ~]# kubectl apply -f http://k8s-yaml.fx.com/traefik/ingress.yaml

检查创建资源

  1. [root@hdss7- ~]# kubectl get pods -n kube-system
  2. NAME READY STATUS RESTARTS AGE
  3. coredns-65cb567d6f-4x5tn / Running 15h
  4. traefik-ingress-7p7z4 / Running 19m
  5. traefik-ingress-f6kpc / Running 19m

解析域名

  1. [root@hdss7- ~]# vim /var/named/fx.com.zone
  2. $ORIGIN fx.com.
  3. $TTL ; minutes
  4. @ IN SOA dns.fx.com. dnsadmin.fx.com. (
  5. ; serial
  6. ; refresh ( hours)
  7. ; retry ( minutes)
  8. ; expire ( week)
  9. ; minimum ( day)
  10. )
  11. NS dns.fx.com.
  12. $TTL ; minute
  13. dns A 10.4.7.11
  14. harbor A 10.4.7.200
  15. k8s-yaml A 10.4.7.200
  16. traefik A 10.4.7.10
  17. [root@hdss7- ~]# systemctl restart named

配置反向代理

  1. [root@hdss7- ~]# vim /etc/nginx/conf.d/fx.com.conf
  2. upstream default_backend_traefik {
  3. server 10.4.7.21: max_fails= fail_timeout=10s;
  4. server 10.4.7.22: max_fails= fail_timeout=10s;
  5. }
  6. server {
  7. server_name *.fx.com;
  8.  
  9. location / {
  10. proxy_pass http://default_backend_traefik;
  11. proxy_set_header Host $http_host;
  12. proxy_set_header x-forwarded-for $proxy_add_x_forwarded_for;
  13. }
  14. }
  15. [root@hdss7- ~]# nginx -t
  16. [root@hdss7- ~]# nginx -s reload

注:HDSS7-12.host.com也需要配置nginx

浏览器访问

  1. http://traefik.fx.com/

5.kubernetes的服务暴露插件-Traefik的更多相关文章

  1. 第十二章 Kubernetes的服务暴露插件--traefik

    1.前言 之前部署的coredns实现了k8s的服务在集群内可以被自动发现,那么如何使得服务在k8s集群外被使用和访问呢? 使用nodeport星的Service:此方法只能使用iptables模型, ...

  2. K8S(05)核心插件-ingress(服务暴露)控制器-traefik

    K8S核心插件-ingress(服务暴露)控制器-traefik 1 K8S两种服务暴露方法 前面通过coredns在k8s集群内部做了serviceNAME和serviceIP之间的自动映射,使得不 ...

  3. 十一章 Kubernetes的服务发现插件--coredns

    1.前言 简单来说,服务发现就是服务(应用)之间相互定位的过程: 服务发现并非云计算时代独有的,传统的单体架构时代也会用到,以下应用场景更加需要服务发现: 服务(应用)的动态性强: 服务(应用)更新发 ...

  4. 4.kubernetes的服务发现插件-CoreDNS

    1.1.部署K8S内网资源清单http服务 1.2.部署coredns 部署K8S内网资源清单http服务 在运维主机HDSS7-200.host.com上,配置一个nginx虚拟主机,用以提高k8s ...

  5. kubernetes进阶(四)服务暴露-ingress控制器之traefik

    上一章我们测试了在集群内部解析service名称, 下面我们测试在集群外部解析: 根本解析不到,因为我们外部用的dns是10.4.7.11,也就是我们的自建bind dns,这个DNS服务器上也没有响 ...

  6. Kubernetes 服务入口管理 Traefik Ingress Controller

    前面部署了 kubernetes/ingress-nginx 作为 Ingress Controller,使用 Nginx 反向代理与负载,通过 Ingress Controller 不断的跟 Kub ...

  7. 容器云平台No.4~kubernetes 服务暴露之Ingress

    这是容器云平台第四篇,接上一篇继续, 首先kubernetes服务暴露有如下几种方式: NodePort Loadbalance ClusterIP Ingress 本文紧贴第一篇架构图,只介绍Ing ...

  8. 初试 Kubernetes 集群中使用 Traefik 反向代理

    初试 Kubernetes 集群中使用 Traefik 反向代理 2017年11月17日 09:47:20 哎_小羊_168 阅读数:12308    版权声明:本文为博主原创文章,未经博主允许不得转 ...

  9. Dubbo 服务暴露注册流程

    Dubbo的应用会在启动时完成服务注册或订阅(不论是生产者,还是消费者)如下图所示. 图中小方块Protocol, Cluster, Proxy, Service, Container, Regist ...

随机推荐

  1. JavaSE案例-Bank

    项目介绍 完成基本的银行业务功能 存款 取款 转账 查询余额 修改密码 修改预留手机号 注销账号 退出 任务分解: 定义三个基本类: BankTest():银行业务主程序 Bank(): 银行类,包含 ...

  2. GC总结

    概述 GC(Garbage Collection),需要完成的3件事 哪些内存需要回收? 什么时候回收? 如何回收? 为什么需要了解GC和内存分配?更好的监控和调节 排查各种内存溢出,内存泄漏 避免G ...

  3. [Unity2d系列教程] 006.Unity如何根据图片自动生成Animator

    Unity制作2D产品的时候,我们在制作动画的时候,要不断的生成Animation,Animator等等资源,如果动画一多的话,就变得麻烦.由于Unity是支持插件开发的,我们可以添加一个Editor ...

  4. JavaScript ——内部函数和匿名函数

    在JS中,函数是一种数据类型,可以将它赋值给变量,因此函数可以这样创建: var func=function(){ alert("func"); } func(); 既然函数是一种 ...

  5. 2020年,为什么我们应该使用abapGit代替SAPLink

    SAPLink是一个帮助人们分享开发内容的工具.通过它,人们可以将ABAP开发对象从一个系统打包下载.再上传到另一个系统中.对于各种类型的开发者,它都可以起到作用: 有的开发者喜欢在不同的项目中复制相 ...

  6. C#线程 线程进阶

    第四部分:高级线程 非阻塞同步 前面我们说过,即使在分配或增加字段的简单情况下,也需要同步.尽管锁定始终可以满足此需求,但是竞争性锁定意味着线程必须阻塞,从而遭受上下文切换的开销和调度的延迟,这在高度 ...

  7. Vue 全选/取消全选,反选/取消反选

    这是一个组件: <template> <div> <div> <input type="checkbox" v-model="i ...

  8. css 图片宽度、居中、倒影

    <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8&quo ...

  9. Chisel3 - bind - Binding

    https://mp.weixin.qq.com/s/2318e6VJ4wFGpWwBOmTikA   Chisel数据类型(Data)与Module的绑定关系,根据Data的使用方式不同,而有多种绑 ...

  10. 点击label时text输入框被选中

    当点击label标签时,能够选中与其对应的输入框,有2种方式,采用第一种时会产生太多的id,推荐第二种. <form action="03.php"> <labe ...