Kubernetes基础:MacOS上设定Dashboard
发布日期:2021-06-30 20:21:08 浏览次数:3 分类:技术文章

本文共 11749 字,大约阅读时间需要 39 分钟。

在这里插入图片描述

在上篇文章中在MacOS上通过Docker Desktop记录了安装Kubernetes的方法,这篇文章继续记录一下设定Dashboard的方式,这样Mac上的基础开发或者实验环境就基本就绪了。

目录


事前准备

  • 操作系统
liumiaocn:~ liumiao$ sw_versProductName:	Mac OS XProductVersion:	10.15.6BuildVersion:	19G73liumiaocn:~ liumiao$
  • Docker Desktop

    在这里插入图片描述
    使用方式可参看:

  • Kubernetes

    在这里插入图片描述

  • 确认版本信息

liumiaocn:~ liumiao$ which kubectl/usr/local/bin/kubectlliumiaocn:~ liumiao$ kubectl version --shortClient Version: v1.18.8Server Version: v1.18.8liumiaocn:~ liumiao$
  • 确认结点信息
liumiaocn:~ liumiao$ kubectl get nodes -o wideNAME             STATUS   ROLES    AGE     VERSION   INTERNAL-IP    EXTERNAL-IP   OS-IMAGE         KERNEL-VERSION     CONTAINER-RUNTIMEdocker-desktop   Ready    master   4m50s   v1.18.8   192.168.65.3   
Docker Desktop 4.19.76-linuxkit docker://19.3.13liumiaocn:~ liumiao$
  • 确认集群状态信息
liumiaocn:~ liumiao$ kubectl cluster-infoKubernetes master is running at https://kubernetes.docker.internal:6443KubeDNS is running at https://kubernetes.docker.internal:6443/api/v1/namespaces/kube-system/services/kube-dns:dns/proxyTo further debug and diagnose cluster problems, use 'kubectl cluster-info dump'.liumiaocn:~ liumiao$

下载yaml

执行命令:wget https://raw.githubusercontent.com/kubernetes/dashboard/v2.0.4/aio/deploy/recommended.yaml

修改yaml

liumiaocn:dashboard liumiao$ diff recommended.yaml*43d42<       nodePort: 3044346d44<   type: NodePort200d197<             - --token-ttl=86400liumiaocn:dashboard liumiao$

可以看到只添加了三行,主要是nodePort和token过期时间的设定(注意端口30443的区间取值限制为30000-32767)。详细可参看文末的yaml。在网络畅通的情况下直接执行此yaml即可,不然就想办法分别下载镜像和yaml文件,然后再使用kubectl apply即可。此文件中包含了Dashboard所需要的namespace、service等诸多信息,所以直接apply即可完成。所使用到的镜像如下:

  • kubernetesui/dashboard:v2.0.4
  • kubernetesui/metrics-scraper:v1.0.4

事前进行docker pull之后,安装会非常快

liumiaocn:dashboard liumiao$ kubectl apply -f recommended.yamlnamespace/kubernetes-dashboard createdserviceaccount/kubernetes-dashboard createdservice/kubernetes-dashboard createdsecret/kubernetes-dashboard-certs createdsecret/kubernetes-dashboard-csrf createdsecret/kubernetes-dashboard-key-holder createdconfigmap/kubernetes-dashboard-settings createdrole.rbac.authorization.k8s.io/kubernetes-dashboard createdclusterrole.rbac.authorization.k8s.io/kubernetes-dashboard createdrolebinding.rbac.authorization.k8s.io/kubernetes-dashboard createdclusterrolebinding.rbac.authorization.k8s.io/kubernetes-dashboard createddeployment.apps/kubernetes-dashboard createdservice/dashboard-metrics-scraper createddeployment.apps/dashboard-metrics-scraper createdliumiaocn:dashboard liumiao$

安装确认

通过如下命令,可以确认到Dashboard已经正常运行

liumiaocn:dashboard liumiao$ kubectl get pods --namespace kubernetes-dashboardNAME                                         READY   STATUS    RESTARTS   AGEdashboard-metrics-scraper-6b4884c9d5-5glgp   1/1     Running   0          2m43skubernetes-dashboard-76b754fc78-p4ncz        1/1     Running   0          2m43sliumiaocn:dashboard liumiao$

登录确认

使用如下URL即可进行登录确认

URL:https://localhost:30443

在这里插入图片描述

获取token

执行命令:kubectl describe secret -n kubernetes-dashboard $(kubectl get secrets -n kubernetes-dashboard |grep dashboard |awk ‘{print $1}’ |grep token) |grep token: |awk -F: ‘{print $2}’

liumiaocn:dashboard liumiao$ kubectl describe secret -n kubernetes-dashboard $(kubectl get secrets -n kubernetes-dashboard |grep dashboard |awk '{print $1}' |grep token) |grep token: |awk -F: '{print $2}'      eyJhbGciOiJSUzI1NiIsImtpZCI6ImFkaHVsR2cyNGZOSG1FRmxmYTVyd0hmbHlmMjV5UnQ1MjJHS2Z5dzhudGMifQ.eyJpc3MiOiJrdWJlcm5ldGVzL3NlcnZpY2VhY2NvdW50Iiwia3ViZXJuZXRlcy5pby9zZXJ2aWNlYWNjb3VudC9uYW1lc3BhY2UiOiJrdWJlcm5ldGVzLWRhc2hib2FyZCIsImt1YmVybmV0ZXMuaW8vc2VydmljZWFjY291bnQvc2VjcmV0Lm5hbWUiOiJrdWJlcm5ldGVzLWRhc2hib2FyZC10b2tlbi1uNXB3ZCIsImt1YmVybmV0ZXMuaW8vc2VydmljZWFjY291bnQvc2VydmljZS1hY2NvdW50Lm5hbWUiOiJrdWJlcm5ldGVzLWRhc2hib2FyZCIsImt1YmVybmV0ZXMuaW8vc2VydmljZWFjY291bnQvc2VydmljZS1hY2NvdW50LnVpZCI6ImNkMGUwY2ZlLTY4N2MtNDczMi1iZjk2LTA5NGJlOTkyMjg2MiIsInN1YiI6InN5c3RlbTpzZXJ2aWNlYWNjb3VudDprdWJlcm5ldGVzLWRhc2hib2FyZDprdWJlcm5ldGVzLWRhc2hib2FyZCJ9.RMz69kFq-cX7JS5B8sBdmjrGAXqXQ6Q1ZMzlSVOoIVfWhdDs2QH4gw1NTVjXrzHf2teLasyQsdNnXJmbz6MVCNUUH2b-_mjECQMowf1egjFqH64Uw49C8f0KMIBUnX-bchLu5sGLoygP_WV1dT5uiHLI8i2x8zeoARRLrF6HBM9MQ-kvGVRy3bbNz26nfmtqICLRzveeg4eG3iPUNhc_RuWPEdNYODEWZphnSO0EkD4iClkoiYsLxix3bZspxv1PEkAHfEH6mL6cwVsHTi5i1ZcbZmsbbkQxHWutHU0cjbBLWKcfna5HqyAxPJGmmMeB09CRfZbE13Aro6pWsPD-iAliumiaocn:dashboard liumiao$

登录确认

使用上述获得的token进行登录即可看到dashboar页面了

在这里插入图片描述

内容总结

这篇文章整理了Mac下设定Dashboard的方式,实际上和其他OS上并无不同。

Dashboard的yaml文件

# Copyright 2017 The Kubernetes Authors.## Licensed under the Apache License, Version 2.0 (the "License");# you may not use this file except in compliance with the License.# You may obtain a copy of the License at##     http://www.apache.org/licenses/LICENSE-2.0## Unless required by applicable law or agreed to in writing, software# distributed under the License is distributed on an "AS IS" BASIS,# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.# See the License for the specific language governing permissions and# limitations under the License.apiVersion: v1kind: Namespacemetadata:  name: kubernetes-dashboard---apiVersion: v1kind: ServiceAccountmetadata:  labels:    k8s-app: kubernetes-dashboard  name: kubernetes-dashboard  namespace: kubernetes-dashboard---kind: ServiceapiVersion: v1metadata:  labels:    k8s-app: kubernetes-dashboard  name: kubernetes-dashboard  namespace: kubernetes-dashboardspec:  ports:    - port: 443      targetPort: 8443      nodePort: 30443  selector:    k8s-app: kubernetes-dashboard  type: NodePort---apiVersion: v1kind: Secretmetadata:  labels:    k8s-app: kubernetes-dashboard  name: kubernetes-dashboard-certs  namespace: kubernetes-dashboardtype: Opaque---apiVersion: v1kind: Secretmetadata:  labels:    k8s-app: kubernetes-dashboard  name: kubernetes-dashboard-csrf  namespace: kubernetes-dashboardtype: Opaquedata:  csrf: ""---apiVersion: v1kind: Secretmetadata:  labels:    k8s-app: kubernetes-dashboard  name: kubernetes-dashboard-key-holder  namespace: kubernetes-dashboardtype: Opaque---kind: ConfigMapapiVersion: v1metadata:  labels:    k8s-app: kubernetes-dashboard  name: kubernetes-dashboard-settings  namespace: kubernetes-dashboard---kind: RoleapiVersion: rbac.authorization.k8s.io/v1metadata:  labels:    k8s-app: kubernetes-dashboard  name: kubernetes-dashboard  namespace: kubernetes-dashboardrules:  # Allow Dashboard to get, update and delete Dashboard exclusive secrets.  - apiGroups: [""]    resources: ["secrets"]    resourceNames: ["kubernetes-dashboard-key-holder", "kubernetes-dashboard-certs", "kubernetes-dashboard-csrf"]    verbs: ["get", "update", "delete"]    # Allow Dashboard to get and update 'kubernetes-dashboard-settings' config map.  - apiGroups: [""]    resources: ["configmaps"]    resourceNames: ["kubernetes-dashboard-settings"]    verbs: ["get", "update"]    # Allow Dashboard to get metrics.  - apiGroups: [""]    resources: ["services"]    resourceNames: ["heapster", "dashboard-metrics-scraper"]    verbs: ["proxy"]  - apiGroups: [""]    resources: ["services/proxy"]    resourceNames: ["heapster", "http:heapster:", "https:heapster:", "dashboard-metrics-scraper", "http:dashboard-metrics-scraper"]    verbs: ["get"]---kind: ClusterRoleapiVersion: rbac.authorization.k8s.io/v1metadata:  labels:    k8s-app: kubernetes-dashboard  name: kubernetes-dashboardrules:  # Allow Metrics Scraper to get metrics from the Metrics server  - apiGroups: ["metrics.k8s.io"]    resources: ["pods", "nodes"]    verbs: ["get", "list", "watch"]---apiVersion: rbac.authorization.k8s.io/v1kind: RoleBindingmetadata:  labels:    k8s-app: kubernetes-dashboard  name: kubernetes-dashboard  namespace: kubernetes-dashboardroleRef:  apiGroup: rbac.authorization.k8s.io  kind: Role  name: kubernetes-dashboardsubjects:  - kind: ServiceAccount    name: kubernetes-dashboard    namespace: kubernetes-dashboard---apiVersion: rbac.authorization.k8s.io/v1kind: ClusterRoleBindingmetadata:  name: kubernetes-dashboardroleRef:  apiGroup: rbac.authorization.k8s.io  kind: ClusterRole  name: kubernetes-dashboardsubjects:  - kind: ServiceAccount    name: kubernetes-dashboard    namespace: kubernetes-dashboard---kind: DeploymentapiVersion: apps/v1metadata:  labels:    k8s-app: kubernetes-dashboard  name: kubernetes-dashboard  namespace: kubernetes-dashboardspec:  replicas: 1  revisionHistoryLimit: 10  selector:    matchLabels:      k8s-app: kubernetes-dashboard  template:    metadata:      labels:        k8s-app: kubernetes-dashboard    spec:      containers:        - name: kubernetes-dashboard          image: kubernetesui/dashboard:v2.0.4          imagePullPolicy: Always          ports:            - containerPort: 8443              protocol: TCP          args:            - --auto-generate-certificates            - --namespace=kubernetes-dashboard            - --token-ttl=86400            # Uncomment the following line to manually specify Kubernetes API server Host            # If not specified, Dashboard will attempt to auto discover the API server and connect            # to it. Uncomment only if the default does not work.            # - --apiserver-host=http://my-address:port          volumeMounts:            - name: kubernetes-dashboard-certs              mountPath: /certs              # Create on-disk volume to store exec logs            - mountPath: /tmp              name: tmp-volume          livenessProbe:            httpGet:              scheme: HTTPS              path: /              port: 8443            initialDelaySeconds: 30            timeoutSeconds: 30          securityContext:            allowPrivilegeEscalation: false            readOnlyRootFilesystem: true            runAsUser: 1001            runAsGroup: 2001      volumes:        - name: kubernetes-dashboard-certs          secret:            secretName: kubernetes-dashboard-certs        - name: tmp-volume          emptyDir: {
} serviceAccountName: kubernetes-dashboard nodeSelector: "kubernetes.io/os": linux # Comment the following tolerations if Dashboard must not be deployed on master tolerations: - key: node-role.kubernetes.io/master effect: NoSchedule---kind: ServiceapiVersion: v1metadata: labels: k8s-app: dashboard-metrics-scraper name: dashboard-metrics-scraper namespace: kubernetes-dashboardspec: ports: - port: 8000 targetPort: 8000 selector: k8s-app: dashboard-metrics-scraper---kind: DeploymentapiVersion: apps/v1metadata: labels: k8s-app: dashboard-metrics-scraper name: dashboard-metrics-scraper namespace: kubernetes-dashboardspec: replicas: 1 revisionHistoryLimit: 10 selector: matchLabels: k8s-app: dashboard-metrics-scraper template: metadata: labels: k8s-app: dashboard-metrics-scraper annotations: seccomp.security.alpha.kubernetes.io/pod: 'runtime/default' spec: containers: - name: dashboard-metrics-scraper image: kubernetesui/metrics-scraper:v1.0.4 ports: - containerPort: 8000 protocol: TCP livenessProbe: httpGet: scheme: HTTP path: / port: 8000 initialDelaySeconds: 30 timeoutSeconds: 30 volumeMounts: - mountPath: /tmp name: tmp-volume securityContext: allowPrivilegeEscalation: false readOnlyRootFilesystem: true runAsUser: 1001 runAsGroup: 2001 serviceAccountName: kubernetes-dashboard nodeSelector: "kubernetes.io/os": linux # Comment the following tolerations if Dashboard must not be deployed on master tolerations: - key: node-role.kubernetes.io/master effect: NoSchedule volumes: - name: tmp-volume emptyDir: {
}

转载地址:https://liumiaocn.blog.csdn.net/article/details/110037656 如侵犯您的版权,请留言回复原文章的地址,我们会给您删除此文章,给您带来不便请您谅解!

上一篇:Go基础:MacOS上配置go语言开发环境
下一篇:Kubernetes基础:在MacOS上安装Kubernetes

发表评论

最新留言

第一次来,支持一个
[***.219.124.196]2024年04月11日 07时47分21秒

关于作者

    喝酒易醉,品茶养心,人生如梦,品茶悟道,何以解忧?唯有杜康!
-- 愿君每日到此一游!

推荐文章