kubernetes 部署 traefik 以及kubernetes dashborad
前言
本来打算通过 traefik 来实现 kubernetes dashborad 的服务访问,可是在配置过程中始终报错。最后无奈只能通过nodeport来实现kubernetes dashborad的服务暴露。但是这并不代表着traefik没有用,相反由于traefik能够动态的更新kubernetes中的Pod service(我们可以理解为自动发现这些后端服务的配置变更,并重新加载服务的配置)而深受用户欢迎。
一、traefik 简介
1.1 简单认识 traefik代理
Træfɪk 是一个为了让部署微服务更加便捷而诞生的现代HTTP反向代理、负载均衡工具。 它支持多种后台 (Docker, Swarm, Kubernetes, Marathon, Mesos, Consul, Etcd, Zookeeper, BoltDB, Rest API, file…) 来自动化、动态的应用它的配置文件设置。ingress方案需要使用下列的组件:
1、反向代理负载均衡器
负责加载 ingress control 、ingress生成的配置,并实现reload功能。
2、ingress control
ingress Controller 实质上是个监视器,Ingress Controller 通过不断地跟 kubernetes API 打交道,实时的获取后端 service、pod 的变化,比如新增和减少 pod,service 增加与减少等;当得到这些变化信息后,Ingress Controller 再结合下文的 Ingress 生成配置,然后更新反向代理负载均衡器,并刷新其配置,达到服务发现的作用。
3、ingress
ingress,就类似于互联网应用的负载均衡器(比如Apache/nginx之类的),是kubernetes集群外访问集群的入口,将用户的URL请求转发到不同的service上。其中还包括规则定义,即URL的路由信息,路由信息得的刷新由Ingress controller来提供。
参考链接:
http://docs.traefik.cn/basics
https://rootsongjc.gitbooks.io/kubernetes-handbook/content/practice/traefik-ingress-installation.html
1.2 部署 Træfɪk
因为我这里是作为kubernetes服务的暴露,因此你得有一个kubernetes集群。如果你没有,可以通过kubeadm/kops等方式快速部署一个kubernetes集群,具体使用那一种方式安装你的kubernetes集群,完全取决于你的爱好。
通过打标签的方式来实现 traefik 到固定主机运行;
$ kubectl label nodes k8sn01 edgenode=traefik-proxy
$ kubectl label nodes k8sn02 edgenode=traefik-proxy
$ kubectl label nodes k8sn03 edgenode=traefik-proxy
下载部署 Traefik 需要的文件
$ wget https://raw.githubusercontent.com/containous/traefik/master/examples/k8s/traefik-ds.yaml
$ wget https://raw.githubusercontent.com/containous/traefik/master/examples/k8s/traefik-rbac.yaml
$ wget https://raw.githubusercontent.com/containous/traefik/master/examples/k8s/ui.yaml
对相关文件内容进行更改
$ grep -A -B "nodeSelector" traefik-ds.yaml
spec:
serviceAccountName: traefik-ingress-controller
terminationGracePeriodSeconds:
nodeSelector:
edgenode: traefik-proxy
提示:红色部分的功能是实现将 Traefik 部署到标签为 "edgenode: traefik-proxy" 主机上;
$ grep -A -B "host" ui.yaml
spec:
rules:
- host: traefik-ui.test01.com
http:
paths:
- path: /
backend:
serviceName: traefik-web-ui
servicePort: web
提示:根据自己环境的实际情况,将 "host" 字段改为自己的;
$ kubectl apply -f .
查看pod运行情况
$ kubectl get pod -n kube-system -o wide
NAME READY STATUS RESTARTS AGE IP NODE
calico-kube-controllers-6696b647f7-4r5rr / Running 2d 172.17.80.30 k8sn02
calico-node-bd6dp / Running 2d 172.17.80.26 k8sm01
calico-node-bmr66 / Running 2d 172.17.80.29 k8sn01
calico-node-fn6cc / Running 2d 172.17.80.30 k8sn02
calico-node-pp5fg / Running 2d 172.17.80.28 k8sm03
calico-node-swj8h / Running 2d 172.17.80.31 k8sn03
calico-node-tkbgj / Running 2d 172.17.80.27 k8sm02
coredns-6969b598c-kbt4r / Running 2d 192.168.10.130 k8sm02
coredns-6969b598c-kc874 / Running 2d 192.168.71.1 k8sn03
heapster-5949d7bb8f-jlgtm / Running 1h 192.168.63.3 k8sm01
kubernetes-dashboard-74f855c8c6-js6zz / Running 5h 192.168.63.2 k8sm01
traefik-ingress-controller-28mnz 1/1 Running 0 2d 192.168.17.129 k8sn02
traefik-ingress-controller-nhsrk 1/1 Running 0 2d 192.168.163.129 k8sn01
traefik-ingress-controller-qbp7s 1/1 Running 0 2d 192.168.71.2 k8sn03
Traefik 部署就完成了,我们可以通过访问k8sn01/k8sn02/k8sn03任意一台主机,加8080端口就可以访问到Traefik的管理界面,可以通过刚刚在ui.yaml文件中的主机名进行访问。但是需要将这个域名解析到对应的IP或者写入到hosts文件,效果如下所示;
二、kubernetes dashborad 部署
将下载的 kubernetes-server-linux-amd64.tar.gz 解压后,再解压其中的 kubernetes-src.tar.gz 文件。dashboard 对应的目录是:cluster/addons/dashboard。
$ cd /usr/src/kubernetes/cluster/addons/dashboard/
$ ll
total
-rw-rw-r-- root root Mar : dashboard-configmap.yaml
-rw-rw-r-- root root Mar : dashboard-controller.yaml
-rw-rw-r-- root root Mar : dashboard-rbac.yaml
-rw-rw-r-- root root Mar : dashboard-secret.yaml
-rw-rw-r-- root root Mar : dashboard-service.yaml
-rw-rw-r-- root root Mar : MAINTAINERS.md
-rw-rw-r-- root root Mar : OWNERS
-rw-rw-r-- root root Mar : README.md
这里需要将 dashboard-service.yaml 更改为如下内容:
$ cat dashboard-service.yaml
apiVersion: v1
kind: Service
metadata:
name: kubernetes-dashboard
namespace: kube-system
labels:
k8s-app: kubernetes-dashboard
kubernetes.io/cluster-service: "true"
addonmanager.kubernetes.io/mode: Reconcile
spec:
type: NodePort
selector:
k8s-app: kubernetes-dashboard
ports:
- port:
targetPort:
nodePort:
protocol: TCP
执行下面的命令,进行 Pod 部署
$ kubectl apply -f .
查看分配的NodePort
$ kubectl get deployment kubernetes-dashboard -n kube-system
NAME DESIRED CURRENT UP-TO-DATE AVAILABLE AGE
kubernetes-dashboard 5h
$ kubectl --namespace kube-system get pods -o wide
NAME READY STATUS RESTARTS AGE IP NODE
kubernetes-dashboard-74f855c8c6-js6zz / Running 5h 192.168.63.2 k8sm01.ops.bj2.yongche.com
traefik-ingress-controller-28mnz / Running 2d 192.168.17.129 k8sn02.ops.bj2.yongche.com
traefik-ingress-controller-nhsrk / Running 2d 192.168.163.129 k8sn01.ops.bj2.yongche.com
traefik-ingress-controller-qbp7s / Running 2d 192.168.71.2 k8sn03.ops.bj2.yongche.com
$ kubectl get services kubernetes-dashboard -n kube-system
NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE
kubernetes-dashboard NodePort 10.254.128.86 <none> :/TCP 5h
2.2 创建登录 Dashboard 的 token 和 kubeconfig 配置文件
为了集群安全,从 1.7 开始,dashboard 只允许通过 https 访问,如果使用 kube proxy 则必须监听 localhost 或 127.0.0.1,对于 NodePort 没有这个限制,但是仅建议在开发环境中使用。
默认情况下部署成功后可以直接访问 https://NODE_IP:30000 访问,但是想要登录进去查看的话需要使用 kubeconfig 或者 access token 的方式。下面就已这两种访问进行访问:
创建 access token
kubectl create sa dashboard-admin -n kube-system
kubectl create clusterrolebinding dashboard-admin --clusterrole=cluster-admin --serviceaccount=kube-system:dashboard-admin
ADMIN_SECRET=$(kubectl get secrets -n kube-system | grep dashboard-admin | awk '{print $1}')
DASHBOARD_LOGIN_TOKEN=$(kubectl describe secret -n kube-system ${ADMIN_SECRET} | grep -E '^token' | awk '{print $2}')
echo ${DASHBOARD_LOGIN_TOKEN}
使用输出的 token 进行登录 dashboard 即可访问;
创建 kubeconfig 配置文件
...以后再说...
kubernetes 部署 traefik 以及kubernetes dashborad的更多相关文章
- Kubernetes部署通用手册 (支持版本1.19,1.18,1.17,1.16)
Kubernetes平台环境规划 操作环境 rbac 划分(HA高可用双master部署实例) 本文穿插了ha 高可用部署的实例,当前章节设计的是ha部署双master 部署 内网ip 角色 安装软件 ...
- 实操教程丨如何在K8S集群中部署Traefik Ingress Controller
注:本文使用的Traefik为1.x的版本 在生产环境中,我们常常需要控制来自互联网的外部进入集群中,而这恰巧是Ingress的职责. Ingress的主要目的是将HTTP和HTTPS从集群外部暴露给 ...
- Kubernetes环境Traefik部署与应用
本作品由Galen Suen采用知识共享署名-非商业性使用-禁止演绎 4.0 国际许可协议进行许可.由原作者转载自个人站点. 概述 本文用于整理基于Kubernetes环境的Traefik部署与应用, ...
- Traefik实现Kubernetes集群服务外部https访问
转载请注明出处:http://www.cnblogs.com/wayneiscoming/p/7707942.html traefik 是一个前端http反向代理服务器以及负载均衡器,支持多种微服务后 ...
- 使用traefik作为kubernetes的ingress
目录 说明 部署 创建一个独立的命名空间 配置rbac授权 配置secret 创建一个configmap用于存放traefik的配置文件 配置traefik的deployment文件 配置服务 通过p ...
- Kubernetes 系列(三):Kubernetes使用Traefik Ingress暴露服务
一.Kubernetes 服务暴露介绍 从 kubernetes 1.2 版本开始,kubernetes提供了 Ingress 对象来实现对外暴露服务:到目前为止 kubernetes 总共有三种暴露 ...
- Just 5分钟!使用k3s部署轻量Kubernetes集群快速教程
大小仅有40MB的k3s为想要节省开销进行开发和测试的企业提供了一个很好的选择.本文将用一种极为简洁的方式,教你在5分钟之内使用k3s部署轻量Kubernetes集群. Kubernetes已经改变了 ...
- Kubernetes 部署策略详解-转载学习
Kubernetes 部署策略详解 参考:https://www.qikqiak.com/post/k8s-deployment-strategies/ 在Kubernetes中有几种不同的方式发布应 ...
- [系统集成] 基于Kubernetes 部署 jenkins 并动态分配资源
基于kubernetes 部署 jenkins master 比较简单,难点是为 jenkins 动态分配资源.基于kubernetes 为 jenkins 动态分配资源需要实现下述功能: 资源分配: ...
随机推荐
- baiduTemplate.js 百度JS模板引擎
baiduTemplate希望创造一个用户觉得“简单好用”的JS模板引擎 先展示两个例子,然后说说对baidutemplate.js的理解,从而将这一工具加到个人百宝箱里. <script id ...
- mac系统如何在桌面新建文件(夹)
方法一:(终端方式,推荐) 1.在电脑上找到终端 2.指定你想要保存文件的路径,然后回车.例如桌面就是: cd desktop #或是 cd /Users/username/Desktop 有人问:假 ...
- Tomcat 配置目录
TOMCAT 1.主目录下有bin,conf,lib,logs,temp,webapps,work 1.bin目录主要是用来存放tomcat的命令 2.conf目录主要是用来存放tomcat的一些配置 ...
- Linux 文件日志筛选操作
统计查看文件以及筛选日志 1.*.log 日志文件中 统计独立ip的个数: awk '{print $1}' test.log | sort | uniq | wc -l 2.#查询访问最多的前10个 ...
- 2018秋寒假作业4- -PTA编程总结1
PTA1打印沙漏.打印沙漏中的“沙漏形状”,就是每行输出的奇数符号与各行符号中心对齐:相邻两行符号数相差2:符号数从大到小递减到1,再从小到大递增.在做的时候出了几次错,编译发先是几个小地方出错了.以 ...
- Netty入门(2) - 核心概念
Netty Crash Course 一个Netty程序一般开始于Bootstrap类,通过设置程序后,使用Handlers来处理特定的event和设置Netty中的事件,从而处理多个协议数据,比如实 ...
- 第18月第21日 vue cnpm
1. 首先我们需要下载npm,因为我已经提前安装了node.js,安装包里面集成了npm,然后我们就可以利用npm命令从获取淘宝镜像的cnpm了. 1.打开命令行窗口,输入 npm install - ...
- 推荐系统之矩阵分解及C++实现
1.引言 矩阵分解(Matrix Factorization, MF)是传统推荐系统最为经典的算法,思想来源于数学中的奇异值分解(SVD), 但是与SVD 还是有些不同,形式就可以看出SVD将原始的评 ...
- 【逆向工具】IDA使用6-签名文件制作
0x1 签名文件制作的方法: 找到静态编译的程序库 使用IDA中的fair工具包,对静态库操作,生成特征库(IDA6.8 是flair68.zip) 0x2 步骤 第一步:使用pcf生成对应静态库的p ...
- Pytorch之可视化
先解决下keras可视化安装graphviz的问题: 注意安装顺序: sudo pip3 install graphviz # python包 sudo apt-get install graphvi ...