您好,歡迎來到網暖!
?
當前位置:網暖 » 站長資訊 » 建站基礎 » 網絡技術 » 文章詳細 訂閱RssFeed

開發者如何快速搭建本地 Kubernetes 集群?Minikube趟坑記錄

來源:網絡整理 瀏覽:348次 時間:2020-01-23

1.背景

為啥要在本地搭建 Kubernetes 集群?因為開發者可以在本地快速驗證自己實現的功能,接口。眾所周知,由于 Kubernetes 部署較為復雜,使得廣大開發者和運維人員學習和試用 Kubernetes 的門檻很高,光是部署一套 Kubernetes 集群,就需要部署大量的組件,花費精力較大。為了降低用戶體驗 Kubernetes 的門檻,Minikube 項目應運而生,它是 Github 上的一個開源項目,提供了一鍵安裝的 Kubernetes 本地集群,支持 MacOS,Linux,Windows。
誰需要 Minikube?

  • 本地開發 Kubernetes應用
  • 離線開發 Kubernetes 應用
  • 體驗最新版 Kubernetes
    如果你有以上需求,可以使用 Minikube。 Minikube 大大簡化了的開發者部署自己的服務到 Kubernetes,因為這個本地集群可以部署在自己的筆記本,親測 8C16G筆記本跑起來很輕松,隨時可以啟停,不依賴網絡連接。開發者可以在自己的筆記本里,運行Kubernetes 的 Pods,快速驗證自己的服務功能是否生效。
    被納入到了 Kubernetes 官方項目里-https://github.com/kubernetes/minikube。
    2.搭建趟坑之旅
    ?Mac 環境安裝:
    使用官方地址進行一鍵安裝:
    curl -LO https://storage.googleapis.com/minikube/releases/latest/minikube-darwin-amd64 \
    && sudo install minikube-darwin-amd64 /usr/local/bin/minikube

?啟動 Minikube:

使用官網文檔啟動:Minikube Start,集群可以正常啟動。

o坑點 :鏡像源指向了 gcr.io
啟動Minikube 之后,運行 pod 一般都會失敗,因為 Minikube 默認將它的鏡像中心默認指向了 gcr.io,從這里下載過鏡像的人都被它深深傷害過,可以在啟動參數里指定鏡像源和私有鏡像庫。
?配置私有鏡像倉庫:
根據官方文檔,在啟動時加入參數:” --insecure-registry”
minikube start --insecure-registry "docker-release-local.demo.jfrog.com" --registry-mirror=https://registry.docker-cn.com

這里--insecure-registry配置的是JFrog 的本地私有 Artifactory Docker 鏡像倉庫,一般企業內部都有私有鏡像庫。
o坑點 :指定私有鏡像庫不生效
筆者使用的Minikube v1.2.0 Mac 版本在啟動時--insecure-registry并不生效,可以找到主機上 minikube 配置文件目錄下的文件進行修改。打開文件:~/.minikube/machines/minikube/config.json,增加記錄” docker-release-local.demo.jfrog.com”

配置完之后鏡像拉取默認會從私有鏡像倉庫尋找鏡像。
?從私有鏡像倉庫拉取鏡像

啟動 Minikube 后,在 Kubernetes 集群里創建鏡像中心的密鑰“regcred”:
kubectl create secret docker-registry regcred --docker-server=docker-release-local.demo.jfrog.com --docker-username=admin --docker-password=*** [email protected]

在微服務的 Deployment yaml 文件里使用這個密鑰即可讓 Pod 通過密鑰登錄私有鏡像倉庫,拉取鏡像。
配置好私有鏡像倉庫之后,你的Pod 鏡像拉取速度是秒級的。
?啟動應用-Jenkins
寫一個 Jenkins 的部署 yaml 文件,讓它運行在 Kubernetes 集群里。

Jenkins 可以正常運行。

o坑點:Pod 重啟時候,Jenkins 數據沒了?
很多應用的配置文件是需要放到 Pod 之外進行管理的,比如 Jenkins。這就需要 Minikube 支持掛載目錄。Minikube 官方提供了對掛載目錄的支持,默認/data 目錄是在重啟 Minikube 之后,文件也會保留的目錄,可以在/data 目錄下創建Jenkins_home目錄,然后在Kubernetes 里聲明 PV,類型為 hostPath,掛載這個目錄。

聲明好這個持久化卷之后,就可以在 Jenkins 的部署 yaml 文件里通過 PVC 來使用這個目錄。

上圖可以看到我們把 Jenkins pod 里的/var/Jenkins_home 目錄映射到了 Pod 外部,也就是 Minikube 主機上的/data/Jenkins-home,這樣即使 Pod 重啟,Minikube 重啟也不會丟失數據。
o坑點:掛載目錄寫失敗
當掛創建好/data/Jenkins-home目錄之后,默認只有 root 用戶有寫權限,Jenkins Pod 啟動起來之后,會因為無法寫入配置文件而啟動失敗,此時需要將/data/Jenkins-home的權限賦予 docker 用戶,再次啟動 pod 即可正常運行。

?訪問服務
當 Jenkins Pod 運行起來之后,可以通過 Jenkins service 的 nodePort 暴露的 31081進行訪問,這里注意 ip 是 Minikube 的 ip 地址:

3.小結
通過 Minikube 能夠實現開發者微服務的本地快速部署,對自己開發的功能,接口進行本地的快速驗證,大大提升開發者的交付質量和效率。
4.附錄
文中用到的代碼倉庫在這里,歡迎想動手實踐的同學進行 clone:https://github.com/alexwang66/sample-microservices-k8s

推薦站點

  • 騰訊騰訊

    騰訊網(www.QQ.com)是中國瀏覽量最大的中文門戶網站,是騰訊公司推出的集新聞信息、互動社區、娛樂產品和基礎服務為一體的大型綜合門戶網站。騰訊網服務于全球華人用戶,致力成為最具傳播力和互動性,權威、主流、時尚的互聯網媒體平臺。通過強大的實時新聞和全面深入的信息資訊服務,為中國數以億計的互聯網用戶提供富有創意的網上新生活。

    www.qq.com
  • 搜狐搜狐

    搜狐網是全球最大的中文門戶網站,為用戶提供24小時不間斷的最新資訊,及搜索、郵件等網絡服務。內容包括全球熱點事件、突發新聞、時事評論、熱播影視劇、體育賽事、行業動態、生活服務信息,以及論壇、博客、微博、我的搜狐等互動空間。

    www.sohu.com
  • 網易網易

    網易是中國領先的互聯網技術公司,為用戶提供免費郵箱、游戲、搜索引擎服務,開設新聞、娛樂、體育等30多個內容頻道,及博客、視頻、論壇等互動交流,網聚人的力量。

    www.163.com
  • 新浪新浪

    新浪網為全球用戶24小時提供全面及時的中文資訊,內容覆蓋國內外突發新聞事件、體壇賽事、娛樂時尚、產業資訊、實用信息等,設有新聞、體育、娛樂、財經、科技、房產、汽車等30多個內容頻道,同時開設博客、視頻、論壇等自由互動交流空間。

    www.sina.com.cn
  • 百度一下百度一下

    百度一下,你就知道

    www.baidu.com
?
买北京单场