kubernetes 部署 traefik 以及kubernetes dashborad

摘要:
然而,这并不意味着特拉菲克一无是处。相反,traifik很受用户欢迎,因为它可以在kubernetes中动态更新Podservice。参考链接:http://docs.traefik.cn/basicshttps://rootsongjc.gitbooks.io/kubernetes-Handbook/content/practice/traifik-ingress-installation.html 1.2部署Trfk,因为我在这里是kubernetes服务的公开版,所以您需要一个kubernets集群。如果没有,可以通过kubeadm/kops和其他方法快速部署kubernetes集群。安装kubernetes集群的具体方式完全取决于您的爱好。

前言

本来打算通过 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 1 -B 3 "nodeSelector" traefik-ds.yaml 
    spec:
      serviceAccountName: traefik-ingress-controller
      terminationGracePeriodSeconds: 60
      nodeSelector:
        edgenode: traefik-proxy

提示:红色部分的功能是实现将 Traefik 部署到标签为 "edgenode: traefik-proxy" 主机上;

$ grep -A 6 -B 2 "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   1/1       Running   0          2d        172.17.80.30      k8sn02
calico-node-bd6dp                          2/2       Running   0          2d        172.17.80.26      k8sm01
calico-node-bmr66                          2/2       Running   0          2d        172.17.80.29      k8sn01
calico-node-fn6cc                          2/2       Running   0          2d        172.17.80.30      k8sn02
calico-node-pp5fg                          2/2       Running   0          2d        172.17.80.28      k8sm03
calico-node-swj8h                          2/2       Running   0          2d        172.17.80.31      k8sn03
calico-node-tkbgj                          2/2       Running   0          2d        172.17.80.27      k8sm02
coredns-6969b598c-kbt4r                    1/1       Running   0          2d        192.168.10.130    k8sm02
coredns-6969b598c-kc874                    1/1       Running   0          2d        192.168.71.1      k8sn03
heapster-5949d7bb8f-jlgtm                  1/1       Running   0          1h        192.168.63.3      k8sm01
kubernetes-dashboard-74f855c8c6-js6zz      1/1       Running   0          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 部署 traefik 以及kubernetes dashborad第1张

 二、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 32
-rw-rw-r-- 1 root root  264 Mar 21 03:21 dashboard-configmap.yaml
-rw-rw-r-- 1 root root 1710 Mar 21 03:21 dashboard-controller.yaml
-rw-rw-r-- 1 root root 1353 Mar 21 03:21 dashboard-rbac.yaml
-rw-rw-r-- 1 root root  551 Mar 21 03:21 dashboard-secret.yaml
-rw-rw-r-- 1 root root  322 Mar 21 03:21 dashboard-service.yaml
-rw-rw-r-- 1 root root  242 Mar 21 03:21 MAINTAINERS.md
-rw-rw-r-- 1 root root   72 Mar 21 03:21 OWNERS
-rw-rw-r-- 1 root root  400 Mar 21 03:21 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: 443
    targetPort: 8443
    nodePort: 30000
    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   1         1         1            1           5h
$ kubectl --namespace kube-system get pods -o wide
NAME                                       READY     STATUS    RESTARTS   AGE       IP                NODE
kubernetes-dashboard-74f855c8c6-js6zz      1/1       Running   0          5h        192.168.63.2      k8sm01.ops.bj2.yongche.com
traefik-ingress-controller-28mnz           1/1       Running   0          2d        192.168.17.129    k8sn02.ops.bj2.yongche.com
traefik-ingress-controller-nhsrk           1/1       Running   0          2d        192.168.163.129   k8sn01.ops.bj2.yongche.com
traefik-ingress-controller-qbp7s           1/1       Running   0          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>        443:30000/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》仅用于学习参考。如对内容有疑问,请及时联系本站处理。

上篇图像检索(image retrieval)djangomysql的连接池下篇

宿迁高防,2C2G15M,22元/月;香港BGP,2C5G5M,25元/月 雨云优惠码:MjYwNzM=

相关文章

2-k8s笔记-Kubernetes安装配置指南

第2章 Kubernetes安装配置指南2.1 系统要求2.2 使用kubeadm工具快速安装Kubernetes集群2.2.1 安装kubeadm和相关工具2.2.2 kubeadm config2.2.3 下载Kubernetes的相关镜像2.2.4 运行kubeadm init命令安装Master2.2.5 安装Node,加入集群2.2.6 安装网络...

深入k8s:Pod对象中重要概念及用法

Pod对象基本概念 Pod,实际上是在扮演传统基础设施里“虚拟机”的角色;而容器,则是这个虚拟机里运行的用户程序。 Kubernetes 集群中的 Pod 可被用于以下两个主要用途: 运行单个容器的 Pod。"每个 Pod 一个容器"模型是最常见的 Kubernetes 用例;在这种情况下,可以将 Pod 看作单个容器的包装器,并且 Kubernet...

推荐K8s的一键安装和一键升级

centos7 deploy_Kubernetes-v1.15.1 后续脚本更新统一由kkitDeploy项目持续更新相应脚本 请移步至kkitDeploy项目 https://github.com/luckman666/kkitdeploy_server ##################################################...

K8S部署之kubeadm

K8S部署笔记 一、集群环境说明 主机名 IP地址 说明 k8s-master01 192.168.1.107 master节点 k8s-master02 192.168.1.108 master节点 k8s-master03 192.168.1.109 master节点 k8s-master-lb(在master节点) 192.16...

Rancher的部署安装(编排选用K8S)

为什么要使用Rancher Rancher是一个开源的企业级容器管理平台。通过Rancher,企业再也不必自己使用一系列的开源软件去从头搭建容器服务平台。Rancher提供了在生产环境中使用的管理Docker和Kubernetes的全栈化容器部署与管理平台。 Rancher的官方文档:https://rancher.com/docs/rancher/l...

容器安全产品Aqua调研

前言 近年来,随着云计算的发展,企业数字化的进程不断加快,业务纷纷开始上云,云原生的概念最近两年也是十分火热,在新业务场景下也随之产生了新的安全问题,如k8s安全、devsecops、微服务安全、Service Mesh安全、容器安全等等,本文主要是对于容器安全产品——Aqua 的调研。 容器安全是近几年比较热门非细分领域,Gatner 在2020年把容器...