zoukankan      html  css  js  c++  java
  • traefik-Ingress边缘路由器落地到微服务

    1.理解Ingress

    简单的说,ingress就是从kubernetes集群外访问集群的入口,将用户的URL请求转发到不同的service上。Ingress相当于nginx、apache等负载均衡方向代理服务器.

    它最大的优点是能够与常见的微服务系统直接整合,可以实现自动化动态配置。

    2.以下配置文件可以在kubernetes-handbookGitHub仓库中的../manifests/traefik-ingress/目录下找到。

    2.1创建ingress-rbac.yaml

    将用于service account验证。

    apiVersion: v1
    kind: ServiceAccount
    metadata:
    name: ingress
    namespace: kube-system

    ---

    kind: ClusterRoleBinding
    apiVersion: rbac.authorization.k8s.io/v1beta1
    metadata:
    name: ingress
    subjects:
    - kind: ServiceAccount
    name: ingress
    namespace: kube-system
    roleRef:
    kind: ClusterRole
    name: cluster-admin
    apiGroup: rbac.authorization.k8s.io

    2.2 创建名为traefik-ingress的ingress,文件名ingress.yaml

    apiVersion: extensions/v1beta1
    kind: Ingress
    metadata:
    name: traefik-ingress
    namespace: default
    spec:
    rules:
    - host: traefik.nginx.io
    http:
    paths:
    - path: /
    backend:
    serviceName: my-nginx
    servicePort: 80
    - host: traefik.frontend.io
    http:
    paths:
    - path: /
    backend:
    serviceName: frontend
    servicePort: 80

    path就是URL地址后的路径,如traefik.frontend.io/path,service将会接受path这个路径,host最好使用service-name.filed1.filed2.domain-name这种类似主机名称的命名方式,方便区分服务。

    根据你自己环境中部署的service的名字和端口自行修改,有新service增加时,修改该文件后可以使用kubectl replace -f ingress.yaml来更新。

    2.3创建DaemonSet

    我们使用DaemonSet类型来部署Traefik,并使用nodeSelector来限定Traefik所部署的主机。

    apiVersion: extensions/v1beta1
    kind: DaemonSet
    metadata:
    name: traefik-ingress-lb
    namespace: kube-system
    labels:
    k8s-app: traefik-ingress-lb
    spec:
    template:
    metadata:
    labels:
    k8s-app: traefik-ingress-lb
    name: traefik-ingress-lb
    spec:
    terminationGracePeriodSeconds: 60
    hostNetwork: true
    restartPolicy: Always
    serviceAccountName: ingress
    containers:
    - image: traefik
    name: traefik-ingress-lb
    resources:
    limits:
    cpu: 200m
    memory: 30Mi
    requests:
    cpu: 100m
    memory: 20Mi
    ports:
    - name: http
    containerPort: 80
    hostPort: 80
    - name: admin
    containerPort: 8580
    hostPort: 8580
    args:
    - --web
    - --web.address=:8580
    - --kubernetes
    nodeSelector:
    edgenode: "true"

    给nodes打标签

    kubectl label nodes node1 edgenode=true
    kubectl label nodes node2 edgenode=true

    2.4 Traefik UI

    使用下面的yaml配置来创建Traefik的Web UI。

    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: 8580
    ---
    apiVersion: extensions/v1beta1
    kind: Ingress
    metadata:
    name: traefik-web-ui
    namespace: kube-system
    spec:
    rules:
    - host: traefik-ui.local
    http:
    paths:
    - path: /
    backend:
    serviceName: traefik-web-ui
    servicePort: web

    访问该地址http://node1:8580/将可以看到dashboard。

    2.6在客户端修改hosts 后直接访问

    10.2.1.226 traefik.nginx.io
    10.2.1.226 traefik.frontend.io

  • 相关阅读:
    Linux从程序到进程
    Linux用户与“最小权限”原则
    Linux进程关系
    Linux信号基础
    Linux进程基础
    Sublime Text 报“Pylinter could not automatically determined the path to lint.py
    Linux文本流
    Linux文件管理相关命令
    Linux命令行与命令
    Linux架构
  • 原文地址:https://www.cnblogs.com/hixiaowei/p/9494595.html
Copyright © 2011-2022 走看看