<ruby id="bdb3f"></ruby>

    <p id="bdb3f"><cite id="bdb3f"></cite></p>

      <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
        <p id="bdb3f"><cite id="bdb3f"></cite></p>

          <pre id="bdb3f"></pre>
          <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

          <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
          <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

          <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                <ruby id="bdb3f"></ruby>

                ThinkChat2.0新版上線,更智能更精彩,支持會話、畫圖、視頻、閱讀、搜索等,送10W Token,即刻開啟你的AI之旅 廣告
                # 安裝traefik ingress ## Ingress簡介 如果你還不了解,ingress是什么,可以先看下我翻譯的Kubernetes官網上ingress的介紹[Kubernetes Ingress解析](https://jimmysong.io/posts/kubernetes-ingress-resource/)。 **理解Ingress** 簡單的說,ingress就是從kubernetes集群外訪問集群的入口,將用戶的URL請求轉發到不同的service上。Ingress相當于nginx、apache等負載均衡方向代理服務器,其中還包括規則定義,即URL的路由信息,路由信息得的刷新由[Ingress controller](https://kubernetes.io/docs/concepts/services-networking/ingress/#ingress-controllers)來提供。 **理解Ingress Controller** Ingress Controller 實質上可以理解為是個監視器,Ingress Controller 通過不斷地跟 kubernetes API 打交道,實時的感知后端 service、pod 等變化,比如新增和減少 pod,service 增加與減少等;當得到這些變化信息后,Ingress Controller 再結合下文的 Ingress 生成配置,然后更新反向代理負載均衡器,并刷新其配置,達到服務發現的作用。 ## 部署Traefik **介紹traefik** [Traefik](https://traefik.io/)是一款開源的反向代理與負載均衡工具。它最大的優點是能夠與常見的微服務系統直接整合,可以實現自動化動態配置。目前支持Docker, Swarm, Mesos/Marathon, Mesos, Kubernetes, Consul, Etcd, Zookeeper, BoltDB, Rest API等等后端模型。 以下配置文件可以在[kubernetes-handbook](https://github.com/rootsongjc/kubernetes-handbook)GitHub倉庫中的[../manifests/traefik-ingress/](https://github.com/rootsongjc/kubernetes-handbook/blob/master/manifests/traefik-ingress/)目錄下找到。 **創建ingress-rbac.yaml** 將用于service account驗證。 ```yaml 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 ``` **創建名為`traefik-ingress`的ingress**,文件名ingress.yaml ```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 ``` 這其中的`backend`中要配置default namespace中啟動的service名字,如果你沒有配置namespace名字,默認使用default namespace,如果你在其他namespace中創建服務想要暴露到kubernetes集群外部,可以創建新的ingress.yaml文件,同時在文件中指定該`namespace`,其他配置與上面的文件格式相同。。`path`就是URL地址后的路徑,如traefik.frontend.io/path,service將會接受path這個路徑,host最好使用service-name.filed1.filed2.domain-name這種類似主機名稱的命名方式,方便區分服務。 根據你自己環境中部署的service的名字和端口自行修改,有新service增加時,修改該文件后可以使用`kubectl replace -f ingress.yaml`來更新。 我們現在集群中已經有兩個service了,一個是nginx,另一個是官方的`guestbook`例子。 **創建DaemonSet** 我們使用DaemonSet類型來部署Traefik,并使用`nodeSelector`來限定Traefik所部署的主機。 ```yaml 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" ``` **注意**:我們使用了`nodeSelector`選擇邊緣節點來調度traefik-ingress-lb運行在它上面,所有你需要使用: ```ini kubectl label nodes 172.20.0.113 edgenode=true kubectl label nodes 172.20.0.114 edgenode=true kubectl label nodes 172.20.0.115 edgenode=true ``` 給三個node打標簽,這樣traefik的pod才會調度到這幾臺主機上,否則會一直處于`pending`狀態。 關于使用Traefik作為邊緣節點請參考[邊緣節點配置](../practice/edge-node-configuration.md)。 **Traefik UI** 使用下面的yaml配置來創建Traefik的Web UI。 ```yaml 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 ``` 配置完成后就可以啟動treafik ingress了。 ``` kubectl create -f . ``` 我查看到traefik的pod在`172.20.0.115`這臺節點上啟動了。 訪問該地址`http://172.20.0.115:8580/`將可以看到dashboard。 ![kubernetes-dashboard](https://box.kancloud.cn/96d13e364397bb1def1e3467cb93f7c8_2282x1858.jpg) 左側黃色部分部分列出的是所有的rule,右側綠色部分是所有的backend。 ## 測試 在集群的任意一個節點上執行。假如現在我要訪問nginx的"/"路徑。 ```bash $ curl -H Host:traefik.nginx.io http://172.20.0.115/ <!DOCTYPE html> <html> <head> <title>Welcome to nginx!</title> <style> body { width: 35em; margin: 0 auto; font-family: Tahoma, Verdana, Arial, sans-serif; } </style> </head> <body> <h1>Welcome to nginx!</h1> <p>If you see this page, the nginx web server is successfully installed and working. Further configuration is required.</p> <p>For online documentation and support please refer to <a href="http://nginx.org/">nginx.org</a>.<br/> Commercial support is available at <a href="http://nginx.com/">nginx.com</a>.</p> <p><em>Thank you for using nginx.</em></p> </body> </html> ``` 如果你需要在kubernetes集群以外訪問就需要設置DNS,或者修改本機的hosts文件。 在其中加入: ``` 172.20.0.115 traefik.nginx.io 172.20.0.115 traefik.frontend.io ``` 所有訪問這些地址的流量都會發送給172.20.0.115這臺主機,就是我們啟動traefik的主機。 Traefik會解析http請求header里的Host參數將流量轉發給Ingress配置里的相應service。 修改hosts后就就可以在kubernetes集群外訪問以上兩個service,如下圖: ![traefik-nginx](https://box.kancloud.cn/080910cfb75e27de60b5f5f7de5fbf21_1812x852.jpg) ![traefik-guestbook](https://box.kancloud.cn/6b433e59e0e6c9da13921c6a8565a706_1710x704.jpg) ## 參考 - [Traefik簡介](http://www.tuicool.com/articles/ZnuEfay)
                  <ruby id="bdb3f"></ruby>

                  <p id="bdb3f"><cite id="bdb3f"></cite></p>

                    <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
                      <p id="bdb3f"><cite id="bdb3f"></cite></p>

                        <pre id="bdb3f"></pre>
                        <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

                        <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
                        <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

                        <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                              <ruby id="bdb3f"></ruby>

                              哎呀哎呀视频在线观看