zoukankan      html  css  js  c++  java
  • kuberneets 1.17 安装 dashboard nginx-ingress

    一、首先安装dashboard 

    https://github.com/kubernetes/dashboard

    需要下载的yaml文件 https://raw.githubusercontent.com/kubernetes/dashboard/v2.0.0-beta8/aio/deploy/recommended.yaml
    可以进行一些修改
    首先是HTTPS的修改部分
    containers:
            - name: kubernetes-dashboard
              image: kubernetesui/dashboard:v2.0.0-beta8
              imagePullPolicy: Always
              ports:
                - containerPort: 8443
                  protocol: TCP
              args:
                - --auto-generate-certificates
                - --namespace=kubernetes-dashboard
                - --metrics-provider=none
                - --api-log-level=DEBUG
                - --v=10
    

      

    HTTP的修改部分

    kind: Service
    apiVersion: v1
    metadata:
      labels:
        k8s-app: kubernetes-dashboard
      name: kubernetes-dashboard
      namespace: kubernetes-dashboard
    spec:
      ports:
        - port: 80
          targetPort: 8443
      selector:
        k8s-app: kubernetes-dashboard
    

      




    containers: - name: kubernetes-dashboard image: kubernetesui/dashboard:v2.0.0-beta8 imagePullPolicy: Always ports: - containerPort: 8443 protocol: TCP args: #- --auto-generate-certificates #- --namespace=kubernetes-dashboard - --enable-insecure-login=true - --insecure-port=8443 - --metrics-provider=none - --namespace=kubernetes-dashboard - --enable-skip-login=true

    用kubectl apply -f 提交修改后的文件

    查看相关内容是否都已经启动成功

    kubectl get all -n kubernetes-dashboard

    二、下边开始安装ingress

    首先参考 

    https://kubernetes.github.io/ingress-nginx/deploy/#prerequisite-generic-deployment-command

    主要使用的文件就是 

    https://raw.githubusercontent.com/kubernetes/ingress-nginx/nginx-0.26.2/deploy/static/mandatory.yaml

    由于不想使用 nodeport 的service暴露服务,选择在ingress-controller的机器上暴露端口

     spec:
          # wait up to five minutes for the drain of connections
          terminationGracePeriodSeconds: 300
          serviceAccountName: nginx-ingress-serviceaccount
          nodeSelector:
            kubernetes.io/os: linux
            kubernetes.io/hostname: xxx.xxx.xxx.xxx #nginx启动所在的机器
          hostNetwork: true
          dnsPolicy: ClusterFirstWithHostNet
          containers:
            - name: nginx-ingress-controller
    

     

    配置service文件 由于我是bare-metal的 所以参考地址 https://kubernetes.github.io/ingress-nginx/deploy/#bare-metal

    https://raw.githubusercontent.com/kubernetes/ingress-nginx/nginx-0.26.2/deploy/static/provider/baremetal/service-nodeport.yaml 
    进行了一些修改

    kind: Service
    metadata:
      name: ingress-nginx
      namespace: ingress-nginx
      labels:
        app.kubernetes.io/name: ingress-nginx
        app.kubernetes.io/part-of: ingress-nginx
    spec:
      #type: NodePort
      ports:
        - name: http
          port: 80
          targetPort: 80
          protocol: TCP
        - name: https
          port: 443
          targetPort: 443
          protocol: TCP
      selector:
        app.kubernetes.io/name: ingress-nginx
        app.kubernetes.io/part-of: ingress-nginx
    

     

    上边说过不用Nodeport方式,所以改了一下

    用kubectl apply -f 提交这两个文件 

    查看启动情况

    kubectl get all -n ingress-nginx

    三、 开始为dashboard配置ingress的rule

    首先是HTTPS的配置

    apiVersion: networking.k8s.io/v1beta1
    kind: Ingress
    metadata:
      name: k8s-dashboard
      namespace: kubernetes-dashboard
      annotations:
        nginx.ingress.kubernetes.io/ssl-redirect: "true"
        #nginx.ingress.kubernetes.io/rewrite-target: /
        nginx.ingress.kubernetes.io/rewrite-target: /$1
        nginx.ingress.kubernetes.io/backend-protocol: "HTTPS"
    spec:
      #tls:
      #- secretName: kubernetes-dashboard-certs
      rules:
      - http:
          paths:
          #- path: /dashboard(/|$)(.*)
          - path: /dashboard/(.*)
            backend:
              serviceName: kubernetes-dashboard
              servicePort: 443
    

      注意上边的 annotations 

    其次是 HTTP的

    apiVersion: networking.k8s.io/v1beta1
    kind: Ingress
    metadata:
      name: k8s-dashboard
      namespace: kubernetes-dashboard
    spec:
      rules:
      - http:
          paths:
          - path: /
            backend:
              serviceName: kubernetes-dashboard
              servicePort: 80
    

      

    HTTP的方式我直接使用 / 作为路径, HTTPS使用/dashboard/ 作为路径

    访问时使用在 ingress那绑定的机器 使用80或者443端口来访问 记得后边一定要有 / , 比如 (HTTP的配置) http://xxx.xxx.xxx.xxx/  , 

     (HTTPS的配置) https://xxx.xxx.xxx.xxx/dashboard/

    四、为dashboard创建用户

    可以参考 https://github.com/kubernetes/dashboard#create-an-authentication-token-rbac 

    可以参考 https://my.oschina.net/u/2306127/blog/1930169?from=timeline

    apiVersion: v1
    kind: ServiceAccount
    metadata:
      name: dashboard
      namespace: kube-system
    
    ---
    
    kind: ClusterRoleBinding
    apiVersion: rbac.authorization.k8s.io/v1
    metadata:
      name: dashboard
    subjects:
      - kind: ServiceAccount
        name: dashboard
        namespace: kube-system
    roleRef:
      kind: ClusterRole
      name: cluster-admin
      apiGroup: rbac.authorization.k8s.io
    
    然后执行安装(所建立的账号为dashboard):
    
    kubectl create -f dashboard-rbac.yaml
    

      

    kubectl -n kube-system describe secret $(kubectl -n kube-system get secret | grep dashboard-token | awk '{print $1}')

    注意:如果使用cert-manager, 那ingress是https的,deployment就使用http的 

    参考地址

    https://www.servicemesher.com/blog/general-kubernetes-dashboard/

  • 相关阅读:
    hive与hbase整合
    待重写
    hive DML
    【知识强化】第六章 总线 6.1 总线概述
    【知识强化】第五章 中央处理器 5.1 CPU的功能和基本结构
    【知识强化】第四章 指令系统 4.3 CISC和RISC的基本概念
    【知识强化】第四章 指令系统 4.2 指令寻址方式
    【知识强化】第四章 指令系统 4.1 指令格式
    【知识强化】第三章 存储系统 3.6 高速缓冲存储器
    【知识强化】第三章 存储系统 3.5 双口RAM和多模块存储器
  • 原文地址:https://www.cnblogs.com/xuchenCN/p/12169784.html
Copyright © 2011-2022 走看看