当前位置:   article > 正文

mac- docker desktop 安装单体Kubernetes_mac docker desktop

mac docker desktop

1.安装mac-docker desktop  官网下载安装  Download Docker Desktop | Docker  

2.安装后查看版本

此文kubenetes版本为1.19.7  如果不是该版本需要自行修改配置

其他版本 可以参考 https://github.com/AliyunContainerService/k8s-for-docker-desktop 

3.如果想启动kubenetes 是很简单的 前提 可以科学上网 而且网速够快 设置里修改enable kubenetes  勾选打开 然后就是静静的等待  

4.如果想体验一把kubenetes 又不能科学上网 没有稳定的高网速 只能找国内的镜像 刚好国内有阿里云存在同步的镜像  我们可以直接使用 注意:没有下载镜像之前和没有第三部的条件 先不要开启kubenetes   开启了的话默认开始下载  会卡住 

5.首先下载好kubenetes 1.19.7 所需镜像  然后在开启

6.创建下载镜像文件 vim  load_images.sh 

  1. #!/bin/bash
  2.  
  3. set -e
  4. KUBE_VERSION=v1.19.7
  5. KUBE_PAUSE_VERSION=3.2
  6. ETCD_VERSION=3.4.13-0
  7. COREDNS_VERSION=1.7.0
  8. GCR_URL=k8s.gcr.io
  9. ALIYUN_URL=registry.cn-hangzhou.aliyuncs.com/google_containers
  10.  
  11. # get images
  12. images=(kube-proxy:${KUBE_VERSION}
  13.     kube-scheduler:${KUBE_VERSION}
  14.     kube-controller-manager:${KUBE_VERSION}
  15.     kube-apiserver:${KUBE_VERSION}
  16.     pause:${KUBE_PAUSE_VERSION}
  17.     etcd:${ETCD_VERSION}
  18.     coredns:${COREDNS_VERSION})
  19.  
  20. for imageName in ${images[@]} ; do
  21.     docker pull $ALIYUN_URL/$imageName
  22.     docker tag $ALIYUN_URL/$imageName $GCR_URL/$imageName
  23.     docker rmi $ALIYUN_URL/$imageName
  24. done
  25.  
  26. # show images
  27. docker images

7.授予文件可执行权限 chmod +x ./load_images.sh

8.执行完成可看到镜像已经下载好 

 9.这时候 镜像准备就绪 可以打开 enable kubenetes  注意需要重启docker  如果没有看到kubenetes 为running

10.安装kubenetes 控制工具 kubectl

11.下载 kubernetes 1.19.7 下载地址:kubernetwindowses-client-darwin-amd64.tar.gz 

12. 解压  tar -zxvf kubernetwindowses-client-darwin-amd64.tar.gz

13. 移动文件到系统特定目录下 并且给本用户授权

chmod u+x && mv kubectl /usr/local/bin/kubectl

14.配置kubectl 使用桌面版的k8s上下文

```shell

#docker-desktop 替换为自己的上下文

kubectl config set-context docker-desktop

kubectl config use-context docker-desktop

```

15. 查看kubectl version

16.查看一波node

kubectl -n kube-system get node 

17.查看pod

kubectl -n kube-system get pod

18.安装dashboard (可选)图形化界面方便查看 官网如 https://github.com/kubernetes/dashboard

19.下载dashboard 所需镜像  新建拉取镜像脚本

vim load_dashboard_images.sh

#!/bin/bash
set -e
KUBE_DASHBOARD_VERSION=v2.0.3
METRICS_SCRAPER=v1.0.4
KUBENETESUI_URL=kubernetesui
ALIYUN_KUBENETESUI_URL=registry.cn-hangzhou.aliyuncs.com/kubernetes_ns
 
# get images (ui)
imagesui=(dashboard:${KUBE_DASHBOARD_VERSION}
    metrics-scraper:${METRICS_SCRAPER})
 
for imageName in ${imagesui[@]} ; do
    docker pull $ALIYUN_KUBENETESUI_URL/$imageName
    docker tag $ALIYUN_KUBENETESUI_URL/$imageName $KUBENETESUI_URL/$imageName
    docker rmi $ALIYUN_KUBENETESUI_URL/$imageName
done
 
# show images
docker images

20.运行后可以看到 已经下载好的镜像

安装步骤如下 

Install

To deploy Dashboard, execute following command:

kubectl apply -f https://raw.githubusercontent.com/kubernetes/dashboard/v2.2.0/aio/deploy/recommended.yaml

可能由于网络原因下载不到 recommended.yaml 现在提供一个该文件  直接复制到本地既可

  1. # Copyright 2017 The Kubernetes Authors.
  2. #
  3. # Licensed under the Apache License, Version 2.0 (the "License");
  4. # you may not use this file except in compliance with the License.
  5. # You may obtain a copy of the License at
  6. #
  7. #     http://www.apache.org/licenses/LICENSE-2.0
  8. #
  9. # Unless required by applicable law or agreed to in writing, software
  10. # distributed under the License is distributed on an "AS IS" BASIS,
  11. # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
  12. # See the License for the specific language governing permissions and
  13. # limitations under the License.
  14. apiVersion: v1
  15. kind: Namespace
  16. metadata:
  17. name: kubernetes-dashboard
  18. ---
  19. apiVersion: v1
  20. kind: ServiceAccount
  21. metadata:
  22. labels:
  23.   k8s-app: kubernetes-dashboard
  24. name: kubernetes-dashboard
  25. namespace: kubernetes-dashboard
  26. ---
  27. kind: Service
  28. apiVersion: v1
  29. metadata:
  30. labels:
  31.   k8s-app: kubernetes-dashboard
  32. name: kubernetes-dashboard
  33. namespace: kubernetes-dashboard
  34. spec:
  35. ports:
  36.   - port: 443
  37.     targetPort: 8443
  38. selector:
  39.   k8s-app: kubernetes-dashboard
  40. ---
  41. apiVersion: v1
  42. kind: Secret
  43. metadata:
  44. labels:
  45.   k8s-app: kubernetes-dashboard
  46. name: kubernetes-dashboard-certs
  47. namespace: kubernetes-dashboard
  48. type: Opaque
  49. ---
  50. apiVersion: v1
  51. kind: Secret
  52. metadata:
  53. labels:
  54.   k8s-app: kubernetes-dashboard
  55. name: kubernetes-dashboard-csrf
  56. namespace: kubernetes-dashboard
  57. type: Opaque
  58. data:
  59. csrf: ""
  60. ---
  61. apiVersion: v1
  62. kind: Secret
  63. metadata:
  64. labels:
  65.   k8s-app: kubernetes-dashboard
  66. name: kubernetes-dashboard-key-holder
  67. namespace: kubernetes-dashboard
  68. type: Opaque
  69. ---
  70. kind: ConfigMap
  71. apiVersion: v1
  72. metadata:
  73. labels:
  74.   k8s-app: kubernetes-dashboard
  75. name: kubernetes-dashboard-settings
  76. namespace: kubernetes-dashboard
  77. ---
  78. kind: Role
  79. apiVersion: rbac.authorization.k8s.io/v1
  80. metadata:
  81. labels:
  82.   k8s-app: kubernetes-dashboard
  83. name: kubernetes-dashboard
  84. namespace: kubernetes-dashboard
  85. rules:
  86.  # Allow Dashboard to get, update and delete Dashboard exclusive secrets.
  87. - apiGroups: [""]
  88.   resources: ["secrets"]
  89.   resourceNames: ["kubernetes-dashboard-key-holder", "kubernetes-dashboard-certs", "kubernetes-dashboard-csrf"]
  90.   verbs: ["get", "update", "delete"]
  91.    # Allow Dashboard to get and update 'kubernetes-dashboard-settings' config map.
  92. - apiGroups: [""]
  93.   resources: ["configmaps"]
  94.   resourceNames: ["kubernetes-dashboard-settings"]
  95.   verbs: ["get", "update"]
  96.    # Allow Dashboard to get metrics.
  97. - apiGroups: [""]
  98.   resources: ["services"]
  99.   resourceNames: ["heapster", "dashboard-metrics-scraper"]
  100.   verbs: ["proxy"]
  101. - apiGroups: [""]
  102.   resources: ["services/proxy"]
  103.   resourceNames: ["heapster", "http:heapster:", "https:heapster:", "dashboard-metrics-scraper", "http:dashboard-metrics-scraper"]
  104.   verbs: ["get"]
  105. ---
  106. kind: ClusterRole
  107. apiVersion: rbac.authorization.k8s.io/v1
  108. metadata:
  109. labels:
  110.   k8s-app: kubernetes-dashboard
  111. name: kubernetes-dashboard
  112. rules:
  113.  # Allow Metrics Scraper to get metrics from the Metrics server
  114. - apiGroups: ["metrics.k8s.io"]
  115.   resources: ["pods", "nodes"]
  116.   verbs: ["get", "list", "watch"]
  117. ---
  118. apiVersion: rbac.authorization.k8s.io/v1
  119. kind: RoleBinding
  120. metadata:
  121. labels:
  122.   k8s-app: kubernetes-dashboard
  123. name: kubernetes-dashboard
  124. namespace: kubernetes-dashboard
  125. roleRef:
  126. apiGroup: rbac.authorization.k8s.io
  127. kind: Role
  128. name: kubernetes-dashboard
  129. subjects:
  130. - kind: ServiceAccount
  131.   name: kubernetes-dashboard
  132.   namespace: kubernetes-dashboard
  133. ---
  134. apiVersion: rbac.authorization.k8s.io/v1
  135. kind: ClusterRoleBinding
  136. metadata:
  137. name: kubernetes-dashboard
  138. roleRef:
  139. apiGroup: rbac.authorization.k8s.io
  140. kind: ClusterRole
  141. name: kubernetes-dashboard
  142. subjects:
  143. - kind: ServiceAccount
  144.   name: kubernetes-dashboard
  145.   namespace: kubernetes-dashboard
  146. ---
  147. kind: Deployment
  148. apiVersion: apps/v1
  149. metadata:
  150. labels:
  151.   k8s-app: kubernetes-dashboard
  152. name: kubernetes-dashboard
  153. namespace: kubernetes-dashboard
  154. spec:
  155. replicas: 1
  156. revisionHistoryLimit: 10
  157. selector:
  158.   matchLabels:
  159.     k8s-app: kubernetes-dashboard
  160. template:
  161.   metadata:
  162.     labels:
  163.       k8s-app: kubernetes-dashboard
  164.   spec:
  165.     containers:
  166.       - name: kubernetes-dashboard
  167.         image: kubernetesui/dashboard:v2.2.0
  168.         imagePullPolicy: Always
  169.         ports:
  170.           - containerPort: 8443
  171.             protocol: TCP
  172.         args:
  173.           - --auto-generate-certificates
  174.           - --namespace=kubernetes-dashboard
  175.            # Uncomment the following line to manually specify Kubernetes API server Host
  176.            # If not specified, Dashboard will attempt to auto discover the API server and connect
  177.            # to it. Uncomment only if the default does not work.
  178.            # - --apiserver-host=http://my-address:port
  179.         volumeMounts:
  180.           - name: kubernetes-dashboard-certs
  181.             mountPath: /certs
  182.              # Create on-disk volume to store exec logs
  183.           - mountPath: /tmp
  184.             name: tmp-volume
  185.         livenessProbe:
  186.           httpGet:
  187.             scheme: HTTPS
  188.             path: /
  189.             port: 8443
  190.           initialDelaySeconds: 30
  191.           timeoutSeconds: 30
  192.         securityContext:
  193.           allowPrivilegeEscalation: false
  194.           readOnlyRootFilesystem: true
  195.           runAsUser: 1001
  196.           runAsGroup: 2001
  197.     volumes:
  198.       - name: kubernetes-dashboard-certs
  199.         secret:
  200.           secretName: kubernetes-dashboard-certs
  201.       - name: tmp-volume
  202.         emptyDir: {}
  203.     serviceAccountName: kubernetes-dashboard
  204.     nodeSelector:
  205.       "kubernetes.io/os": linux
  206.      # Comment the following tolerations if Dashboard must not be deployed on master
  207.     tolerations:
  208.       - key: node-role.kubernetes.io/master
  209.         effect: NoSchedule
  210. ---
  211. kind: Service
  212. apiVersion: v1
  213. metadata:
  214. labels:
  215.   k8s-app: dashboard-metrics-scraper
  216. name: dashboard-metrics-scraper
  217. namespace: kubernetes-dashboard
  218. spec:
  219. ports:
  220.   - port: 8000
  221.     targetPort: 8000
  222. selector:
  223.   k8s-app: dashboard-metrics-scraper
  224. ---
  225. kind: Deployment
  226. apiVersion: apps/v1
  227. metadata:
  228. labels:
  229.   k8s-app: dashboard-metrics-scraper
  230. name: dashboard-metrics-scraper
  231. namespace: kubernetes-dashboard
  232. spec:
  233. replicas: 1
  234. revisionHistoryLimit: 10
  235. selector:
  236.   matchLabels:
  237.     k8s-app: dashboard-metrics-scraper
  238. template:
  239.   metadata:
  240.     labels:
  241.       k8s-app: dashboard-metrics-scraper
  242.     annotations:
  243.       seccomp.security.alpha.kubernetes.io/pod: 'runtime/default'
  244.   spec:
  245.     containers:
  246.       - name: dashboard-metrics-scraper
  247.         image: kubernetesui/metrics-scraper:v1.0.6
  248.         ports:
  249.           - containerPort: 8000
  250.             protocol: TCP
  251.         livenessProbe:
  252.           httpGet:
  253.             scheme: HTTP
  254.             path: /
  255.             port: 8000
  256.           initialDelaySeconds: 30
  257.           timeoutSeconds: 30
  258.         volumeMounts:
  259.         - mountPath: /tmp
  260.           name: tmp-volume
  261.         securityContext:
  262.           allowPrivilegeEscalation: false
  263.           readOnlyRootFilesystem: true
  264.           runAsUser: 1001
  265.           runAsGroup: 2001
  266.     serviceAccountName: kubernetes-dashboard
  267.     nodeSelector:
  268.       "kubernetes.io/os": linux
  269.      # Comment the following tolerations if Dashboard must not be deployed on master
  270.     tolerations:
  271.       - key: node-role.kubernetes.io/master
  272.         effect: NoSchedule
  273.     volumes:
  274.       - name: tmp-volume
  275.         emptyDir: {}

Alternatively, you can install Dashboard using Helm as described at kubernetes-dashboard 6.0.8 · helm/k8s-dashboard.

Access

To access Dashboard from your local workstation you must create a secure channel to your Kubernetes cluster. Run the following command:

kubectl proxy

Now access Dashboard at:

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

安装成功后效果如下

使用token登录

通过以下脚本,配置访问控制台所需的令牌。

  1. TOKEN=$(kubectl -n kube-system describe secret default| awk '$1=="token:"{print $2}')
  2. kubectl config set-credentials docker-desktop --token="${TOKEN}"
  3. echo $TOKEN

复制上述生成的令牌 选择token登录 粘贴到输入框 点击登录 既可登录成功

登录后界面如下

本文中参考的内容

 dockerDesktop 安装自带k8s 1.19.7版本_qq_29830577的博客-CSDN博客

https://github.com/kubernetes/dashboard

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/article/detail/48440
推荐阅读
相关标签
  

闽ICP备14008679号