天天看点

kubernetes1.13.4部署traefik

基础环境

拥有一个完美运行的kubernetes1.13.4集群并已经部署过dashboard,可参考我的部署文章创建自己的集群。

部署步骤

  1. 编写部署需要的yaml文件
    • traefik-rbac.yaml
      ---
      kind: ClusterRole
      apiVersion: rbac.authorization.k8s.io/v1beta1
      metadata:
        name: traefik-ingress-controller
      rules:
        - apiGroups:
            - ""
          resources:
            - services
            - endpoints
            - secrets
          verbs:
            - get
            - list
            - watch
        - apiGroups:
            - extensions
          resources:
            - ingresses
          verbs:
            - get
            - list
            - watch
        - apiGroups:
          - extensions
          resources:
          - ingresses/status
          verbs:
          - update
      ---
      kind: ClusterRoleBinding
      apiVersion: rbac.authorization.k8s.io/v1beta1
      metadata:
        name: traefik-ingress-controller
      roleRef:
        apiGroup: rbac.authorization.k8s.io
        kind: ClusterRole
        name: traefik-ingress-controller
      subjects:
      - kind: ServiceAccount
        name: traefik-ingress-controller
        namespace: kube-system
      
                 
    • traefik-deployment.yaml
      ---
      apiVersion: v1
      kind: ServiceAccount
      metadata:
        name: traefik-ingress-controller
        namespace: kube-system
      ---
      kind: Deployment
      apiVersion: extensions/v1beta1
      metadata:
        name: traefik-ingress-controller
        namespace: kube-system
        labels:
          k8s-app: traefik-ingress-lb
      spec:
        replicas: 1
        selector:
          matchLabels:
            k8s-app: traefik-ingress-lb
        template:
          metadata:
            labels:
              k8s-app: traefik-ingress-lb
              name: traefik-ingress-lb
          spec:
            serviceAccountName: traefik-ingress-controller
            terminationGracePeriodSeconds: 60
            containers:
            - image: traefik
              name: traefik-ingress-lb
              ports:
              - name: http
                containerPort: 80
              - name: admin
                containerPort: 8080
              args:
              - --api
              - --kubernetes
              - --logLevel=INFO
      ---
      kind: Service
      apiVersion: v1
      metadata:
        name: traefik-ingress-service
        namespace: kube-system
      spec:
        selector:
          k8s-app: traefik-ingress-lb
        ports:
          - protocol: TCP
            port: 80
            name: web
          - protocol: TCP
            port: 8080
            name: admin
        type: NodePort
                 
    • 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: 8080
      ---
      apiVersion: extensions/v1beta1
      kind: Ingress
      metadata:
        name: traefik-web-ui
        namespace: kube-system
      spec:
        rules:
        - host: traefik-ui.minikube
          http:
            paths:
            - path: /
              backend:
                serviceName: traefik-web-ui
                servicePort: web
                 
  2. 执行命令完成相关部署
    $ kubectl create -f traefik-rbac.yaml
    
    $ kubectl create -f traefik-deployment.yaml
    
    $ kubectl create -f ui.yaml
               
  3. 验证部署结果
    $ kubectl get pod,svc --all-namespaces | grep traefik
    
    kube-system     pod/traefik-ingress-controller-8c8b85bbc-6bpb4   1/1     Running   0          66m
    kube-system     service/traefik-ingress-service   NodePort       10.110.48.244    <none>        80:32575/TCP,8080:31639/TCP   66m
    kube-system     service/traefik-web-ui            ClusterIP      10.103.88.103    <none>        80/TCP                        57m
    
               
  4. 访问traefik的UI界面

    访问

    http://<node_ip>:<node_port>/dashboard/#/

    UI界面的端口是8080

继续阅读