在 macOS 上使用 Docker Desktop 啓動 Kubernetes 踩坑全記錄

安裝 Docker

下載 Docker Desktop 按提示進行安裝。html

安裝 Kubernetes

點擊 Docker 圖標,選擇 Preferences... > Kubernetes 進入 Kubernetes 配置頁:git

Kubernetes 配置頁

而後勾選 Enable Kubernetes,點擊下方 Apply 按鈕,啓動 Kubernetes。github

踩坑一:Kubernetes is starting

這樣就大功告成了?每每事情並不會這麼順利。因爲衆所周知的緣由,啓動 Kubernetes 所需的鏡像每每會下載失敗,因而點擊 Apply 後,該配置頁面的右下角始終顯示 Kubernetes is starting,沒法正常啓動。docker

Docker Desktop for Mac 開啓並使用 Kubernetes 爲該問題提供瞭解決方案。編程

咱們先將該倉庫拉取到本地:api

git clone git@github.com:maguowei/k8s-docker-desktop-for-mac.git
複製代碼

而後確認一下 Docker Desktop 自帶的 Kubernetes 的版本。點擊 Docker 圖標,選擇 About Docker Desktop,看到以下界面:bash

About Docker Desktop

能夠看到 Kubernetes 的版本是 v1.14.6。app

以後咱們打開 k8s-docker-desktop-for-mac 項目下的 images 文件:curl

$ cat images
k8s.gcr.io/kube-proxy:v1.14.6=gotok8s/kube-proxy:v1.14.6
k8s.gcr.io/kube-controller-manager:v1.14.6=gotok8s/kube-controller-manager:v1.14.6
k8s.gcr.io/kube-scheduler:v1.14.6=gotok8s/kube-scheduler:v1.14.6
k8s.gcr.io/kube-apiserver:v1.14.6=gotok8s/kube-apiserver:v1.14.6
k8s.gcr.io/coredns:1.3.1=gotok8s/coredns:1.3.1
k8s.gcr.io/pause:3.1=gotok8s/pause:3.1
k8s.gcr.io/etcd:3.3.10=gotok8s/etcd:3.3.10
複製代碼

確保文件中的 Kubernetes 版本號與 Docker Desktop 自帶的 Kubernetes 版本號一致後,執行命令:ui

./load_images.sh
複製代碼

該命令會幫助咱們拉取啓動 Kubernetes 所需的全部鏡像。命令執行完畢後,點擊 Docker 圖標,在 Preferences.. > Reset 界面中點擊 Reset Kubernetes cluster,重啓 Kubernetes。大功告成!

踩坑二:unexpected EOF

執行 kubectl 命令時出現報錯:

Unable to connect to the server: unexpected EOF
複製代碼

在 Github 上摸到了一個相關的 Issue:Kubernetes on Mac is stuck very often. Needs restart all the time

最終的解決方案是在 Advanced 配置界面中將 Memory 調大,而後重啓 Docker。

Advanced

切換 Kubernetes 集羣

因爲可能會存在多個集羣,咱們須要把集羣切換爲 Docker Desktop 所帶的集羣。

先看下有哪些集羣:

kubectl config get-contexts
複製代碼

切換集羣:

kubectl config use-context docker-for-desktop
複製代碼

安裝 Dashboard

Kubernetes Dashboard 是 Kubernetes 集羣可視化的儀表盤。

通常來講咱們直接經過一行 kubectl 命令進行安裝就行了:

$ kubectl apply -f https://raw.githubusercontent.com/kubernetes/dashboard/v1.10.1/src/deploy/recommended/kubernetes-dashboard.yaml
複製代碼

但因爲衆所周知的緣由,鏡像仍是會下載失敗,pod 始終顯示 ImagePullBackOff。這須要咱們手動拉取所需鏡像。

下載 yaml 文件

先把 yaml 配置文件下載下來:

$ curl -O https://raw.githubusercontent.com/kubernetes/dashboard/v1.10.1/src/deploy/recommended/kubernetes-dashboard.yaml
複製代碼

查看鏡像版本

查看 yaml 文件中的鏡像版本:

$ cat kubernetes-dashboard.yaml | grep kubernetes-dashboard
複製代碼

這是咱們須要的信息:

- name: kubernetes-dashboard
  image: k8s.gcr.io/kubernetes-dashboard-amd64:v1.10.1
複製代碼

能夠看到鏡像版本爲 v1.10.1。

拉取鏡像

使用 docker pull 手動拉取鏡像:

$ docker pull gcrxio/kubernetes-dashboard-amd64:v1.10.1
複製代碼

使用 docker tag 修改鏡像名稱,讓鏡像名與配置文件中的鏡像名保持一致:

$ docker tag gcrxio/kubernetes-dashboard-amd64:v1.10.1 k8s.gcr.io/kubernetes-dashboard-amd64:v1.10.1
複製代碼

這樣一來,配置文件所須要的鏡像就已經下載到本地了。

修改鏡像獲取策略

但因爲配置文件默認的鏡像拉取方式仍是從遠程拉取,因而咱們要在配置文件中 image: k8s.gcr.io/kubernetes-dashboard-amd64:v1.10.1 一行後添加:

imagePullPolicy: IfNotPresent
複製代碼

從新安裝 Dashboard

若是剛纔你已經執行了:

$ kubectl apply -f https://raw.githubusercontent.com/kubernetes/dashboard/v1.10.1/src/deploy/recommended/kubernetes-dashboard.yaml
複製代碼

那麼先把這個啓動的 pod 刪除:

$ kubectl delete -f https://raw.githubusercontent.com/kubernetes/dashboard/v1.10.1/src/deploy/recommended/kubernetes-dashboard.yaml
複製代碼

接着使用咱們修改過的配置文件從新安裝 Dashboard:

$ kubectl delete -f kubernetes-dashboard.yaml
複製代碼

啓動 Dashboard 並訪問

使用 kubectl 命令啓動 Dashboard:

$ kubectl proxy
複製代碼

啓動成功後,能夠經過該地址進行訪問 Dashboard:

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

進入 Dashboard 須要令牌,能夠經過如下命令獲取令牌:

$ kubectl -n kube-system describe secret default| awk '$1=="token:"{print $2}'
複製代碼

Dashboard

參考資料


歡迎關注個人公衆號:編程拯救世界。在編程世界一塊兒冒險,一塊兒成長!

相關文章
相關標籤/搜索