使用 minikube 搭建 Kubernetes 實驗環境

使用 minikube 搭建 Kubernetes 實驗環境

個人操作筆記,僅供參考

系統環境及應用版本

  • Debian 9
  • Kubernetes 1.17.0
  • Docker 18.09.3
  • minikube 1.6.2

前言

最近由于在家閑的慌,就找點事做,準備學習一下 K8S。K8S 這種運維技術最重要的就是實驗環境,官方也推薦使用 minikube 搭建 K8S 的實驗環境,但是由于國內網絡環境的原因,安裝官方指南肯定是不能一步到位的,這篇文章就是考慮了國內的網絡環境使用各種國內加速站點力求一步到位成功安裝 minikube。安裝成功后會使用 minikube 創建一個 vm-driver=none 的集群并運行 echoserver 服務進行測試。

在這里做出的保證是使用干凈的 Debian 9 ( Debian 9.11 dvd1 ISO 下載鏈接 ) 虛擬機按步驟執行到最后一步是可以看到測試結果的。

下載與安裝環境

這部分會結合國內的網絡環境下載和安裝必要的組件

安裝 kubectl

安裝 kubectl 將使用阿里云的鏡像進行加速

先檢查是否有單獨的 /etc/apt/sources.list.d/kubernetes.list 文件,沒有的話先手動創建一個

touch /etc/apt/sources.list.d/kubernetes.list

然后執行下列命令安裝 kubectl

apt-get update && apt-get install -y apt-transport-https curl

curl https://mirrors.aliyun.com/kubernetes/apt/doc/apt-key.gpg | apt-key add - 
cat <<EOF >/etc/apt/sources.list.d/kubernetes.list
deb  https://mirrors.aliyun.com/kubernetes/apt/ kubernetes-xenial main
EOF  

apt-get update

apt-get install -y kubectl=1.17.0-00 kubeadm=1.17.0-00 kubelet=1.17.0-00

下載與安裝 minikube.deb

下面提供三個下載地址供下載,其中第三個是我搬運到 CSDN 下載站的,前兩個網絡環境不好的話會下載得比較慢。

  1. minikube Github Release 頁面
  2. minikube_1.6.2.deb 官方下載鏈接
  3. minikube_1.6.2.deb CSDN 免積分下載鏈接

下載完對應的資源后執行下面的命令完成 minikube 的安裝

dpkg -i minikube_1.6.2.deb

安裝 Docker CE 18.09.3

由于 Kubernetes 1.17.0 只適配到 Docker 18.09 所以安裝的時候需要指定 Docker 18.09 的版本

# step 1: 安裝必要的一些系統工具
apt-get update
apt-get -y install apt-transport-https ca-certificates curl software-properties-common

# step 2: 安裝GPG證書
curl -fsSL https://mirrors.aliyun.com/docker-ce/linux/ubuntu/gpg | apt-key add -

# Step 3: 寫入軟件源信息
add-apt-repository "deb [arch=amd64] https://mirrors.aliyun.com/docker-ce/linux/debian $(lsb_release -cs) stable"

# Step 4: 更新并安裝Docker-CE
apt-get -y update
apt-get -y install docker-ce=5:18.09.9~3-0~debian-stretch

拉取必要的鏡像

在 minikube 啟動一個集群的時候需要使用 k8s.gcr.io 站點下的一些鏡像,很不幸,這個站點國內并不能順暢訪問,可以借助 azure 提供的加速來進行拉取后再重新給鏡像打 tag

需要的鏡像如下:

  • k8s.gcr.io/kube-controller-manager:v1.17.0
  • k8s.gcr.io/kube-scheduler:v1.17.0
  • k8s.gcr.io/kube-apiserver:v1.17.0
  • k8s.gcr.io/kube-proxy:v1.17.0
  • k8s.gcr.io/pause:3.1
  • k8s.gcr.io/etcd:3.4.3-0
  • k8s.gcr.io/coredns:1.6.5

使用下面命令從 azure 站點拉取鏡像

docker pull gcr.azk8s.cn/google-containers/kube-controller-manager:v1.17.0
docker pull gcr.azk8s.cn/google-containers/kube-scheduler:v1.17.0
docker pull gcr.azk8s.cn/google-containers/kube-apiserver:v1.17.0
docker pull gcr.azk8s.cn/google-containers/kube-proxy:v1.17.0
docker pull gcr.azk8s.cn/google-containers/pause:3.1
docker pull gcr.azk8s.cn/google-containers/etcd:3.4.3-0
docker pull gcr.azk8s.cn/google-containers/coredns:1.6.5

然后使用下面命令重新給剛拉取的鏡像打標簽

docker tag gcr.azk8s.cn/google-containers/kube-controller-manager:v1.17.0 k8s.gcr.io/kube-controller-manager:v1.17.0
docker tag gcr.azk8s.cn/google-containers/kube-scheduler:v1.17.0 k8s.gcr.io/kube-scheduler:v1.17.0
docker tag  gcr.azk8s.cn/google-containers/kube-apiserver:v1.17.0 k8s.gcr.io/kube-apiserver:v1.17.0
docker tag gcr.azk8s.cn/google-containers/kube-proxy:v1.17.0 k8s.gcr.io/kube-proxy:v1.17.0
docker tag gcr.azk8s.cn/google-containers/pause:3.1 k8s.gcr.io/pause:3.1
docker tag  gcr.azk8s.cn/google-containers/etcd:3.4.3-0 k8s.gcr.io/etcd:3.4.3-0
docker tag  gcr.azk8s.cn/google-containers/coredns:1.6.5 k8s.gcr.io/coredns:1.6.5

測試

使用 minikube 啟動一個集群

這里會用 bare-metal 的形式啟動一個集群,使用命令如下

minikube start --vm-driver=none

如下圖所示,出現 Done! kubectl is now configured use "minikube" 則表明安裝成功。

minikube 創建集群成功

可以使用下面命令將默認的集群模式改為 none

minikube config set vm-driver none

然后使用下面命令查看 minikube 的狀態

minikube status

部署一個服務

接下來這部分會使用 echoserver 創建一個基本的服務驗證 minikube 已經部署完成并能正常使用。

依次執行下列命令完成服務的部署:

kubectl create deployment hello-minikube --image=k8s.gcr.io/echoserver:1.4
kubectl expose deployment hello-minikube --type=NodePort --port=8080
minikube service hello-minikube

執行完之后會顯示具體映射的端口

minikube service 結果

如果不是使用 root 用戶啟動的話會自動打開瀏覽器,如果打開瀏覽器失敗,就使用 curl 命令請求途中的 URL 驗證服務正常運行

curl http://10.0.2.15:30769

請求成功的話能正確返回信息

curl 測試

FAQ

  1. 為什么需要手動拉取鏡像?

如果不手動拉取鏡像在國內的網絡環境下,在執行 minikube start 時會出現下面的錯誤

minikube start 錯誤

就是因為從 k8s.gcr.io 國內不能訪問,所以需要手動從其他地方拉取鏡像再命名為 k8s.gcr.io 的鏡像。

參考資料

[1] minikube Getting Start

[2] minikube Examples

[3] minikube 所需鏡像拉取失敗解決方法

[4] aliyun Docker CE 鏡像使用方法

[5] aliyun Kubernetes 鏡像使用方法

?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市,隨后出現的幾起案子,更是在濱河造成了極大的恐慌,老刑警劉巖,帶你破解...
    沈念sama閱讀 229,460評論 6 538
  • 序言:濱河連續發生了三起死亡事件,死亡現場離奇詭異,居然都是意外死亡,警方通過查閱死者的電腦和手機,發現死者居然都...
    沈念sama閱讀 99,067評論 3 423
  • 文/潘曉璐 我一進店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人,你說我怎么就攤上這事。” “怎么了?”我有些...
    開封第一講書人閱讀 177,467評論 0 382
  • 文/不壞的土叔 我叫張陵,是天一觀的道長。 經常有香客問我,道長,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 63,468評論 1 316
  • 正文 為了忘掉前任,我火速辦了婚禮,結果婚禮上,老公的妹妹穿的比我還像新娘。我一直安慰自己,他們只是感情好,可當我...
    茶點故事閱讀 72,184評論 6 410
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著,像睡著了一般。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發上,一...
    開封第一講書人閱讀 55,582評論 1 325
  • 那天,我揣著相機與錄音,去河邊找鬼。 笑死,一個胖子當著我的面吹牛,可吹牛的內容都是我干的。 我是一名探鬼主播,決...
    沈念sama閱讀 43,616評論 3 444
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了?” 一聲冷哼從身側響起,我...
    開封第一講書人閱讀 42,794評論 0 289
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后,有當地人在樹林里發現了一具尸體,經...
    沈念sama閱讀 49,343評論 1 335
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內容為張勛視角 年9月15日...
    茶點故事閱讀 41,096評論 3 356
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發現自己被綠了。 大學時的朋友給我發了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 43,291評論 1 371
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖,靈堂內的尸體忽然破棺而出,到底是詐尸還是另有隱情,我是刑警寧澤,帶...
    沈念sama閱讀 38,863評論 5 362
  • 正文 年R本政府宣布,位于F島的核電站,受9級特大地震影響,放射性物質發生泄漏。R本人自食惡果不足惜,卻給世界環境...
    茶點故事閱讀 44,513評論 3 348
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧,春花似錦、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 34,941評論 0 28
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至,卻和暖如春,著一層夾襖步出監牢的瞬間,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 36,190評論 1 291
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人。 一個月前我還...
    沈念sama閱讀 52,026評論 3 396
  • 正文 我出身青樓,卻偏偏與公主長得像,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當晚...
    茶點故事閱讀 48,253評論 2 375

推薦閱讀更多精彩內容