zoukankan      html  css  js  c++  java
  • kubernetes安装dashboard步骤 【h】

    本篇文章参考kubernetes---dashboardv1.8.3版本安装详细步骤及 kubernetes-dashboard(1.8.3)部署与踩坑这两篇文章,详细写了自己部署过程中的操作、遇到的问题及解决方案。

    部署Dashboard UI

    kubectl create -f https://raw.githubusercontent.com/kubernetes/dashboard/master/aio/deploy/recommended/kubernetes-dashboard.yaml
    

    安装成功后查看pods

     
    安装成功界面

    发现问题: 显示ImagePullBackOff,这是因为docker镜像并没有能够下载下来。

    获取dashboard镜像

    获取镜像版本

    • 下载yaml文件
    curl -O https://raw.githubusercontent.com/kubernetes/dashboard/master/aio/deploy/recommended/kubernetes-dashboard.yaml
    
    • 查看yaml文件查看镜像版本
    cat  kubernetes-dashboard.yaml|grep kubernetes-dashboard
    
     
    文件内容

    手动拉取镜像并且改名

    docker pull gcrxio/kubernetes-dashboard-amd64:v1.10.1
    docker tag gcrxio/kubernetes-dashboard-amd64:v1.10.1 k8s.gcr.io/kubernetes-dashboard-amd64:v1.10.1
    

    修改获取镜像策略

    • 修改获取镜像策略,使得在本地拉取镜像
    vi kubernetes-dashboard.yaml
    
    • 在如下位置,增加语句:
    imagePullPolicy: IfNotPresent
    
     
    修改位置
    • 在添加上需要注意,不要使用tab键,否则会出错

    重新安装dashboard

    kubectl delete -f kubernetes-dashboard.yaml
    kubectl create -f kubernetes-dashboard.yaml
    
    • 使用命令查看是否dashboard镜像是否正常运行


       
      成功页面

    可能产生的错误

    • 完成了上述操作却发现还是ImagePullBackO0ff的错误
      使用命令查看错误原因
    kubectl --namespace=kube-system describe pod <pod_name>
    

    发现pod运行在副节点k8s-node1上,所以依然找不到docker镜像。
    需要将dashboard调度到master节点上去。
    输入命令,为master节点添加label

    kubectl label node k8s-master type=master
    

    在kubernetes-dashboard.yaml中添加nodeSelecor定义:

     
    配置文件详情

    配置完成之后,再重新安装dashboard,发现问题得到了解决。

    访问dashboard的方法

    kubernetes-dashboard(1.8.3)部署与踩坑这篇文章中,提到了四种访问方式,下面只介绍我试过的两种访问方式

    使用kubectl proxy

    输入命令

    kubectl proxy
    

    启动成功界面:

     
    启动成功界面

    启动成功后,则在内网中的节点浏览器中可以进行访问,访问地址如下:

    http://localhost:8001/api/v1/namespaces/kube-system/services/https:kubernetes-dashboard:/proxy/
    

    如果是vmware虚拟化节点,可以使用curl http://localhost:8001/api/v1/namespaces/kube-system/services/https:kubernetes-dashboard:/proxy/查看是否能够访问。

    使用API Server

    如果Kubernetes API服务器是公开的,可以从外部访问的,就可以用API Server来访问。
    访问的地址为
    https://<master-ip>:<apiserver-port>/api/v1/namespaces/kube-system/services/https:kubernetes-dashboard:/proxy/
    但是可能返回的结果为

    {
      "kind": "Status",
      "apiVersion": "v1",
      "metadata": {
        
      },
      "status": "Failure",
      "message": "services "https:kubernetes-dashboard:" is forbidden: User "system:anonymous" cannot get services/proxy in the namespace "kube-system"",
      "reason": "Forbidden",
      "details": {
        "name": "https:kubernetes-dashboard:",
        "kind": "services"
      },
      "code": 403
    }
    

    这是因为没有进行认证,需要去创建一个证书

    创建证书

    • 将kubectl的配置文件复制到$HOME/.kube/config
      mkdir -p $HOME/.kube
      sudo cp -i /etc/kubernetes/admin.conf $HOME/.kube/config
      sudo chown $(id -u):$(id -g) $HOME/.kube/config
    
    • 生成p12文件
    # 生成client-certificate-data
    grep 'client-certificate-data' ~/.kube/config | head -n 1 | awk '{print $2}' | base64 -d >> kubecfg.crt
    
    # 生成client-key-data
    grep 'client-key-data' ~/.kube/config | head -n 1 | awk '{print $2}' | base64 -d >> kubecfg.key
    
    # 生成p12,这里会要求输入密码,记住这个密码
    openssl pkcs12 -export -clcerts -inkey kubecfg.key -in kubecfg.crt -out kubecfg.p12 -name "kubernetes-client"
    
    • 导入p12文件
      如果是用vmware虚拟的节点,可以使用软件filezilla导入到本机
      双击打开p12文件,进行安装,安装过程中需要输入的密码则为生成p12文件过程中输入的密码
      安装完成后,关闭所有的浏览器,再重新打开,就会显示让选择证书的界面,选择证书,就会出现登录界面。
     
    登录界面

    创建用户

    创建服务账号

    利用vi admin-user.yaml命令创建admin-user.yaml文件,输入以下内容,来创建admin-user的服务账号,放在kube-system名称空间下:

    apiVersion: v1
    kind: ServiceAccount
    metadata:
      name: admin-user
      namespace: kube-system
    

    输入命令kubectl create -f admin-user.yaml来执行。

    绑定角色

    利用vi admin-user-role-binding.yaml命令创建admin-user-role-binding.yaml文件,输入以下内容,来进行绑定

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

    输入命令kubectl create -f admin-user-role-binding.yaml来执行。

    获取token

    输入以下命令来创建用户token,利用token来登录dashboard:

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

    登录dashboard

    将token复制到登录界面中:

     
    登录界面

    集成Heapster

    • Heapster是容器集群监控和性能分析工具
    • 执行命令
    kubectl create -f http://mirror.faasx.com/kubernetes/heapster/deploy/kube-config/influxdb/influxdb.yaml
    kubectl create -f http://mirror.faasx.com/kubernetes/heapster/deploy/kube-config/influxdb/grafana.yaml
    kubectl create -f http://mirror.faasx.com/kubernetes/heapster/deploy/kube-config/influxdb/heapster.yaml
    kubectl create -f http://mirror.faasx.com/kubernetes/heapster/deploy/kube-config/rbac/heapster-rbac.yaml
    

    当pod的状态全都变成了running,则能够使用。

     
    pod状态
  • 相关阅读:
    MongoDB 数组操作
    XPath 详解,总结
    关于python文件操作
    python-时间模块
    MongoDB使用小结:一些常用操作分享
    python操作MongoDB
    Python中的random模块
    网络基本概念
    .net微信开发
    winform listview用法
  • 原文地址:https://www.cnblogs.com/ExMan/p/11650833.html
Copyright © 2011-2022 走看看