Tres tipos de implementación de interfaz web-UI para el clúster k8s

1. Implementar la interfaz de interfaz de usuario web del panel

1. Descarga el archivo yaml

// panel de búsqueda de github para encontrar el proyecto

//下载yaml文件
[root@docker-k8s01 ~]# wget https://raw.githubusercontent.com/kubernetes/dashboard/v2.0.0/aio/deploy/recommended.yaml
//编辑yaml文件
[root@docker-k8s01 ~]# vim recommended.yaml 
//跳转到40行左右,修改其对应的service,类型配置为Nodeport
kind: Service
apiVersion: v1
metadata:
  labels:
    k8s-app: kubernetes-dashboard
  name: kubernetes-dashboard
  namespace: kubernetes-dashboard
spec:
  type: NodePort    //添加类型为NodePort
  ports:
    - port: 443
      targetPort: 8443
      nodePort: 31010      //映射到宿主机的端口为31010
  selector:
    k8s-app: kubernetes-dashboard
//执行yaml文件
[root@docker-k8s01 ~]# kubectl apply -f recommended.yaml 
//查看Pod是否运行
[root@docker-k8s01 ~]# kubectl get pod -n kubernetes-dashboard 
//查看其详细信息
[root@docker-k8s01 ~]# kubectl describe pod -n kubernetes-dashboard dashboard-metrics-scraper-76679bc5b9-sbcvw 
//确保该yaml文件提供的pod都正常运行
[root@docker-k8s01 ~]# kubectl get svc -n kubernetes-dashboard 
NAME                        TYPE        CLUSTER-IP      EXTERNAL-IP   PORT(S)         AGE
dashboard-metrics-scraper   ClusterIP   10.103.65.117   <none>        8000/TCP        3m3s
kubernetes-dashboard        NodePort    10.110.154.42   <none>        443:31010/TCP   3m3s

2. Prueba de visita

// La versión del panel utilizada aquí es superior. En comparación con la versión anterior, debe utilizar el navegador Firefox para acceder a él, que no es necesario aquí.

Visite https://192.168.171.151:31010 (puede acceder a cualquier IP de nodo en el clúster)
Tres tipos de implementación de interfaz web-UI para el clúster k8s

Tres tipos de implementación de interfaz web-UI para el clúster k8s

//创建dashboard的管理用户
[root@docker-k8s01 ~]# kubectl create serviceaccount dashboard-admin -n kube-system
//绑定用户为集群的管理员
[root@docker-k8s01 ~]# kubectl create clusterrolebinding dashboard-cluster-admin --clusterrole=cluster-admin --serviceaccount=kube-system:dashboard-admin
//获取刚刚创建的用户Token
[root@docker-k8s01 ~]# kubectl get secrets -n kube-system | grep dashboard-admin
dashboard-admin-token-zbdqm                      kubernetes.io/service-account-token   3      63s
[root@docker-k8s01 ~]# kubectl describe secrets -n kube-system dashboard-admin-token-zbdqm 
//注意:上面的最后一段取决于上面查看到的用户的secrets名字。
Name:         dashboard-admin-token-zbdqm
Namespace:    kube-system
Labels:       <none>
Annotations:  kubernetes.io/service-account.name: dashboard-admin
              kubernetes.io/service-account.uid: e9716e34-581a-4c30-b601-0a2a254d4a26

Type:  kubernetes.io/service-account-token

Data
====
namespace:  11 bytes
token:        //将token字段后面的值复制下来,如下图      

Tres tipos de implementación de interfaz web-UI para el clúster k8s

Pegue el valor del Token debajo
Tres tipos de implementación de interfaz web-UI para el clúster k8s
// Hasta ahora, puede monitorear la información de los nodos del clúster en la interfaz web y crear objetos de recursos

Nota: Generalmente, los objetos de recursos no se crearán en este

Tres tipos de implementación de interfaz web-UI para el clúster k8s
Método dos

//查看刚才创建的token
[root@master ~]# kubectl get secrets -n kube-system | grep dashboard
dashboard-admin-token-22n2v                      kubernetes.io/service-account-token   3      11m
//查看token的详细信息,会获取token
[root@master ~]# kubectl describe secrets -n kube-system dashboard-admin-token-22n2v
//将token的信息生成一个变量
[root@master ~]#  DASH_TOKEN=$(kubectl get secrets -n kube-system dashboard-admin-token-22n2v -o jsonpath={.data.token} | base64 -d)
//将k8s集群的配置信息写入到一个文件中,文件可自定义
[root@master ~]# kubectl config set-cluster kubernets --server=192.168.10.52:6443 --kubeconfig=/root/.dashboard-admin.conf
Cluster "kubernets" set.
//将token的信息也写入到文件中(同一个文件)
[root@master ~]#  kubectl config set-credentials dashboard-admin --token=${DASH_TOKEN} --kubeconfig=/root/.dashboard-admin.conf
User "dashboard-admin" set.
//用户信息也写入文件中(同一个文件)
[root@master ~]#  kubectl config set-context dashboard-admin@kubernetes --cluster=kubernetes --user=dashboard-admin --kubeconfig=/root/.dashboard-admin.conf
Context "dashboard-admin@kubernetes" created.
//将上下文的配置信息也写入文件中(同一个文件)
[root@master ~]# kubectl config use-context dashboard-admin@kubernetes --kubeconfig=/root/.dashboard-admin.conf
Switched to context "dashboard-admin@kubernetes".
//最后将配置信息导入到客户端本地
[root@master ~]# sz /root/.dashboard-admin.conf

// Después de exportar el archivo, inicie sesión en la interfaz donde acaba de ingresar el token, seleccione kubeconfig y luego cargue el archivo que acaba de exportar aquí y haga clic en iniciar sesión.

Soy vago, no tengo foto aquí, perdóname.

Dos, implemente weave-scope para monitorear el clúster k8s

1. Descarga el archivo yaml

// Buscar "alcance" en github

Tres tipos de implementación de interfaz web-UI para el clúster k8s
// Despliega la página, haz clic en kubernetes

Tres tipos de implementación de interfaz web-UI para el clúster k8s

// Tire hacia abajo nuevamente después de ingresar a la nueva página

Tres tipos de implementación de interfaz web-UI para el clúster k8s

//将获得的链接下载
[root@docker-k8s01 ~]# wget https://cloud.weave.works/k8s/scope.yaml
//修改yaml文件
[root@docker-k8s01 ~]# vim scope.yaml 
//跳转到大概197行左右,修改其service的端口类型
spec:
      type: NodePort    //类型为NodePort
      ports:
        - name: app
          port: 80
          protocol: TCP
          targetPort: 4040
          nodePort: 30123    //配置映射到宿主机的端口
[root@docker-k8s01 ~]# kubectl apply -f scope.yaml 
//查看容器的运行情况
[root@docker-k8s01 ~]# kubectl get pod -o wide -n weave 
NAME                                        READY   STATUS    RESTARTS   AGE    IP                NODE           NOMINATED NODE   READINESS GATES
weave-scope-agent-9vj2w                     1/1     Running   0          119s   192.168.171.151   docker-k8s01   <none>           <none>
weave-scope-agent-h4gt6                     1/1     Running   0          119s   192.168.171.152   docker-k8s03   <none>           <none>
weave-scope-agent-lqzbq                     1/1     Running   0          119s   192.168.171.150   docker-k8s02   <none>           <none>
weave-scope-app-b965dccb7-ph6zg             1/1     Running   0          119s   10.244.1.3        docker-k8s02   <none>           <none>
weave-scope-cluster-agent-6598584d8-h8b9q   1/1     Running   0          119s   10.244.2.3        docker-k8s03   <none>           <none>
//DaemonSet资源对象:weave-scope-agent(代理):负责收集节点的信息;
//deployment资源对象:weave-scope-app(应用):从agent获取数据,通过web UI展示并与用户交互;
//DaemonSet资源对象的特性和deployment相比,就是DaemonSet资源对象会在每个节点上都运行且只能运行一个pod。
//由于每个节点都需要监控,所以用到了DaemonSet这种资源对象

2. Prueba de visita

// Acceda al puerto mapeado 30123 del clúster

Tres tipos de implementación de interfaz web-UI para el clúster k8s

// En la interfaz web de scope, puede ver muchas cosas, pod, nodo y otra información detallada, incluida la apertura de la terminal del contenedor, ver su información de registro, etc.

Tres, implementar el servicio Prometheus

El papel de los componentes de Prometheus:

  • MertricServer: es un agregador del uso de recursos del clúster k8s, que recopila datos para su uso en el clúster K8s, como: kubectl, hpa, planificador
  • PrometheusOperator: es una caja de herramientas de detección y alarma del sistema que se utiliza para almacenar datos de monitoreo;
  • NodeExporter: se utiliza para los datos de estado de la métrica clave de cada nodo;
  • kubeStateMetrics: recopile datos de objetos de recursos en el clúster k8s y especifique reglas de alarma;
  • Prometheus: recopile un servidor, un programador, un controlador-administrador, datos de componentes de kubelet mediante el método de extracción y transmítalos a través del protocolo http;
  • Grafana: Es una plataforma de seguimiento y estadísticas de datos visuales.

1. Descarga los archivos requeridos por prometheus

// Busque prometheus en github para obtener el enlace de descarga de git

//安装git命令
[root@docker-k8s01 ~]# yum -y install git
//创建目录(可忽略)
[root@docker-k8s01 ~]# mkdir prometheus
[root@docker-k8s01 ~]# cd prometheus/
//克隆github库
[root@docker-k8s01 prometheus]# git clone https://github.com/imirsh/kube-prometheus.git
//进入到克隆目录
[root@docker-k8s01 prometheus]# cd kube-prometheus/manifests/

2. Modifica el archivo yaml de cada componente Service

//修改grafana的yaml文件
[root@docker-k8s01 manifests]# cat grafana-service.yaml 

apiVersion: v1
kind: Service
metadata:
  labels:
    app: grafana
  name: grafana
  namespace: monitoring
spec:
  type: NodePort    //改为NodePort类型
  ports:
  - name: http
    port: 3000
    targetPort: http
    nodePort: 30333    //映射端口为30333
  selector:
    app: grafana
//修改prometheus的yaml文件
[root@docker-k8s01 manifests]# cat prometheus-service.yaml 

apiVersion: v1
kind: Service
metadata:
  labels:
    prometheus: k8s
  name: prometheus-k8s
  namespace: monitoring
spec:
  type: NodePort    //类型为NodePort
  ports:
  - name: web
    port: 9090
    targetPort: web
    nodePort: 30444    //映射端口为30444
  selector:
    app: prometheus
    prometheus: k8s
  sessionAffinity: ClientIP
//修改alertmanager的yaml文件
[root@docker-k8s01 manifests]# cat alertmanager-service.yaml 

apiVersion: v1
kind: Service
metadata:
  labels:
    alertmanager: main
  name: alertmanager-main
  namespace: monitoring
spec:
  type: NodePort       //类型为NodePort
  ports:
  - name: web
    port: 9093
    targetPort: web
    nodePort: 30555    //映射端口为30555
  selector:
    alertmanager: main
    app: alertmanager
  sessionAffinity: ClientIP

3. Ejecute el archivo yaml

//确定当前路径
[root@docker-k8s01 manifests]# pwd
/root/prometheus/kube-prometheus/manifests
//执行setup目录下的所有yaml文件,记住是所有!
[root@docker-k8s01 manifests]# kubectl apply -f setup/
//建议多执行几次,因为目录下的yaml文件太多,可能执行的时候可能会落下一两个没有执行
[root@docker-k8s01 manifests]# cd ..      //返回上级目录
[root@docker-k8s01 kube-prometheus]# pwd
/root/prometheus/kube-prometheus
//执行该目录下的所有yaml
[root@docker-k8s01 kube-prometheus]# kubectl apply -f manifests/
//确保所有pod都正常运行
[root@docker-k8s01 kube-prometheus]# kubectl get pod -n monitoring -w

Cuando se ejecuta el siguiente archivo yaml, cada nodo descargará muchas imágenes en Internet. Para evitar que la descarga de la imagen tarde demasiado, primero puede descargar la imagen localmente, luego importarla a cada nodo y luego ejecutar el archivo yaml, que guardará Algún tiempo.

4. Cuando el cliente accede al puerto IP + 30100 de cualquier nodo del clúster, puede ver la siguiente interfaz (el nombre de usuario y la contraseña predeterminados son admin)

Tres tipos de implementación de interfaz web-UI para el clúster k8s

Tres tipos de implementación de interfaz web-UI para el clúster k8s

// Agregar plantilla

Tres tipos de implementación de interfaz web-UI para el clúster k8s

Tres tipos de implementación de interfaz web-UI para el clúster k8s

// Haga clic en "importar" para importar las siguientes tres plantillas

Tres tipos de implementación de interfaz web-UI para el clúster k8s
Tres tipos de implementación de interfaz web-UI para el clúster k8s
Por supuesto, también puede ir al sitio web de grafana para encontrar una plantilla adecuada para descargar. No explicaré cómo agregar una plantilla en detalle aquí.

Supongo que te gusta

Origin blog.51cto.com/14227204/2532714
Recomendado
Clasificación