Mac環境下開啓Docker之旅

Mac環境下開啓Docker之旅

使用桌面版的docker已經有一段時間了,主要是在平時的開發中用以搭建各種開發環境。總的來說,在mac上使用桌面版的docker比較容易上手,桌面版也提供k8s的功能,但是開啓時總是不能成功,而且在此基礎上使用Rancher管理k8s也遇到了各種問題,這裏就記錄一下這一路上遇到的各種坑。

1 Docker Desktop for Mac

使用桌面版的Docker很簡單,官網也提供Mac/Window的版本下載,這裏爲了後面使用k8s集羣,下載的是edge版本的docker。

下載頁面:https://docs.docker.com/docker-for-mac/edge-release-notes/

下載完成後,我們就可以直接安裝即可。

輸入自己的Docker賬戶和密碼

命令行查看我們的docker版本

docker version

小試牛刀,使用docker快速啓動一個redis容器。

docker run -itd -p 6379:6379  --name redis hub.c.163.com/public/redis:2.8.4

查看容器

docker ps

2 安裝Kubernetes集羣

如下圖所示,桌面版的docker提供開啓k8s的選項,但是如果我麼直接勾選的話,由於qiang的原因,會一直處於starting的狀態。

所以要想開啓k8s需要做一下幾項工作:

  1. 添加國內鏡像庫
  2. 手動使用腳本拉取k8s鏡像
  3. 開啓k8s

2.1 添加國內鏡像庫

https://docker.mirrors.ustc.edu.cn,https://registry.docker-cn.com添加到鏡像庫列表,可在 Docker -> Preferences… -> Advanced -> Registry Mirror添加。

添加完成後,點擊Apply&Restart按鈕。

2.2 手動使用腳本拉取k8s鏡像

先從github上download腳本

git clone https://github.com/maguowei/k8s-docker-desktop-for-mac.git

然後進行k8s-docker-desktop-for-mac目錄,執行load_images.sh 腳本

./load_images.sh

2.3 開啓k8s

2.3.1 開啓

鏡像完成之後,我們就可以開啓k8s了。

k8s顯示running狀態,說明集羣已經啓動成功了。

2.3.2 查看狀態

查看集羣狀態:kubectl cluster-info

查看節點:kubectl get nodes

2.3.3 開啓dashboard

官網:https://github.com/kubernetes/dashboard

kubectl apply -f https://raw.githubusercontent.com/kubernetes/dashboard/v1.10.1/src/deploy/recommended/kubernetes-dashboard.yaml

要從本地工作站訪問儀表板,您必須爲Kubernetes羣集創建安全通道。運行以下命令:

kubectl proxy

訪問:

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

如上圖所示,需要驗證,這裏我們可以創建一個簡單的用戶,參考https://github.com/kubernetes/dashboard/wiki/Creating-sample-user,如要一下幾步:

  1. 創建dashboard-adminuser.yaml文件

    文件內容:

    apiVersion: v1
    kind: ServiceAccount
    metadata:
      name: admin-user
      namespace: kube-system
    ---
    apiVersion: rbac.authorization.k8s.io/v1
    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
    
  2. 創建Service Account和ClusterRoleBinding

    執行命令

    kubectl apply -f dashboard-adminuser.yaml
    
  3. 獲取Token

    執行命令獲取Token

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

    我們可以得到如下輸出:

    只需要將token內容粘貼到web端即可。

2.3.4 Helm

Helm 是一個命令行下的客戶端工具。主要用於 Kubernetes 應用程序 Chart 的創建、打包、發佈以及創建和管理本地和遠程的 Chart 倉庫。Tiller 是 Helm 的服務端,部署在 Kubernetes 集羣中。Tiller 用於接收 Helm 的請求,並根據 Chart 生成 Kubernetes 的部署文件( Helm 稱爲 Release ),然後提交給 Kubernetes 創建應用。Tiller 還提供了 Release 的升級、刪除、回滾等一系列功能。

在mac上安裝helm比較簡單,使用brew就可以直接安裝。如果mac上沒有安裝brew,可以跳轉到https://www.jianshu.com/p/08a9d9479c2a

brew install helm

初始化本地 CLI 並 將 Tiller 安裝到 Kubernetes cluster

helm init

原先的stable倉庫

helm repo remove stable

添加新的倉庫地址

helm repo add stable https://kubernetes.oss-cn-hangzhou.aliyuncs.com/charts

更新倉庫

helm repo update

3 使用Rancher管理k8s集羣

接下來進行高能操作,使用Rancher來管理k8s集羣。參考https://rancher.com/blog/2018/2018-05-18-how-to-run-rancher-2-0-on-your-desktop/

在安裝Rancher之前,一定要執行第2節裏的Helm的操作。更換stable爲國內源。

3.1 添加 Ingress Controller

Ingress Controller用於提供從外部世界到在Kubernetes中運行的服務的L7(主機名或路徑庫)http路由。

我們將用於helm安裝Kubernetes穩定社區nginx-ingress chart。這將在我們的本地羣集上創建Ingress Controller。

helm install stable/nginx-ingress --name ingress-nginx --namespace ingress-nginx --wait

3.2 安裝 Cert-Manager

Kubernetes 的Cert-Manger項目將管理本地Rancher安裝的SSL證書。

因爲cert-manager會拉取國外的鏡像,可能會報錯,這裏我寫了個腳本,可以先拉取國內源,然後替換,所以先從我的git上拉取腳本。

git clone https://github.com/shirukai/docker-desktop-for-mac.git

然後切換到rancher目錄

cd docker-desktop-for-mac/rancher

執行load_images.sh腳本

./load_images.sh

然後安裝Cert-Manager

helm install stable/cert-manager --name cert-manager --namespace kube-system --wait

3.3 安裝 Rancher

接下來就開始安裝Rancher了,首先添加Rancher的chart倉庫

helm repo add rancher-latest https://releases.rancher.com/server-charts/latest

安裝rancher

helm install rancher-latest/rancher --name rancher --namespace cattle-system --set hostname=rancher.localhost --wait

訪問:https://rancher.localhost

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章