前言
本文主要介紹在阿里云ecs實例上搭建自建Kubernetes環(huán)境的步驟是钥,參照的是k8s官網(wǎng)上minikube的安裝教程掠归。
安裝k8s
查閱網(wǎng)上資料得知,安裝k8s集群一般有幾種方式:
- kubeadm(適用于生產(chǎn)環(huán)境)
- Docker Desktop(如果是本地桌面系統(tǒng)推薦這種方式)
- minikube(本地快速單機(jī)部署悄泥,體驗最簡版的k8s虏冻,不推薦在生產(chǎn)環(huán)境上使用)
本文選擇安裝minikube的方式搭建最簡k8s環(huán)境,官方教程:https://minikube.sigs.k8s.io/docs/start/
安裝前注意
通過閱讀官方教程得知弹囚,用minikube搭建k8s環(huán)境時厨相,既支持通過虛擬化技術(shù)運(yùn)行,也可以選擇不通過虛擬化技術(shù)直接運(yùn)行在服務(wù)器上。所以對于一些不支持虛擬化技術(shù)的云服務(wù)器實例蛮穿,只能通過后者安裝運(yùn)行k8s庶骄,也無須安裝KVM或VirtualBox等虛擬化工具,不過還是依賴于Docker環(huán)境践磅,所以需要先安裝Docker瓢姻,具體可參考Ubuntu上安裝Docker。
Note: Minikube also supports a
--vm-driver=none
option that runs the Kubernetes components on the host and not in a VM. Using this driver requires Docker and a Linux environment but not a hypervisor. It is recommended to use the apt installation of docker from Docker, when using the none driver. The snap installation of docker does not work with minikube.
MiniKube安裝步驟
https://kubernetes.io/docs/tasks/tools/install-minikube/
1. 安裝kubectl
kubectl是k8s的命令行工具音诈,通過kubectl對k8s進(jìn)行操作:
https://kubernetes.io/docs/tasks/tools/install-kubectl/#install-kubectl-on-linux
# 下載kubectl
$ curl -LO https://storage.googleapis.com/kubernetes-release/release/v1.17.0/bin/linux/amd64/kubectl
$ chmod +x ./kubectl
# 安裝到/usr/local/bin/目錄
$ sudo mv ./kubectl /usr/local/bin/kubectl
2. 安裝hypervisor(略)
阿里云ECS不支持虛擬化技術(shù)幻碱,略過
3. 安裝minikube
# 下載最新版本minikube并賦予執(zhí)行權(quán)限
$ curl -Lo minikube https://storage.googleapis.com/minikube/releases/latest/minikube-linux-amd64 \
&& chmod +x minikube
# 安裝到/usr/local/bin/目錄
$ sudo mkdir -p /usr/local/bin/
$ sudo install minikube /usr/local/bin/
# 確認(rèn)安裝成功
$ kubectl version --client
4. 啟動k8s
$ minikube start --vm-driver=none
輸入命令minikube start --vm-driver=none
啟動kubernetes,注意這里--vm-driver
參數(shù)使用none
细溅,前提是要求本機(jī)有安裝docker褥傍,不然會報錯:
?? Unable to start VM. Please investigate and run 'minikube delete' if possible: create: precreate: exec: "docker": executable file not found in $PATH
初次執(zhí)行大多數(shù)情況會報錯啟動失敗,原因是minikube啟動k8s環(huán)境時需要從k8s.gcr.io
拉取kube-apiserver
喇聊、kube-controller-manager
恍风、kube-scheduler
等docker鏡像進(jìn)行部署。而由于墻的問題從阿里云的云端機(jī)器上是無法訪問k8s.gcr.io
的誓篱。
$ minikube start --help
...
--image-repository='': Alternative image repository to pull docker images from. This can be used when you have
limited access to gcr.io. Set it to "auto" to let minikube decide one for you. For Chinese mainland users, you may use
local gcr.io mirrors such as registry.cn-hangzhou.aliyuncs.com/google_containers
...
通過minikube的幫助文檔能看到朋贬,對于天朝的用戶可以直接用阿里云的鏡像地址registry.cn-hangzhou.aliyuncs.com/google_containers
代替k8s.gcr.io
$ minikube start --vm-driver=none --image-repository=registry.cn-hangzhou.aliyuncs.com/google_containers
?? minikube v1.6.2 on Ubuntu 16.04
? Selecting 'none' driver from user configuration (alternates: [])
? Using image repository registry.cn-hangzhou.aliyuncs.com/google_containers
?? Running on localhost (CPUs=2, Memory=3951MB, Disk=40188MB) ...
?? OS release is Ubuntu 16.04.6 LTS
?? Preparing Kubernetes v1.17.0 on Docker '19.03.5' ...
?? Downloading kubeadm v1.17.0
?? Downloading kubelet v1.17.0
?? Pulling images ...
?? Launching Kubernetes ...
?? Configuring local host environment ...
?? The 'none' driver provides limited isolation and may reduce system security and reliability.
?? For more information, see:
?? https://minikube.sigs.k8s.io/docs/reference/drivers/none/
?? kubectl and minikube configuration will be stored in /root
?? To use kubectl or minikube commands as your own user, you may need to relocate them. For example, to overwrite your own settings, run:
? sudo mv /root/.kube /root/.minikube $HOME
? sudo chown -R $USER $HOME/.kube $HOME/.minikube
?? This can also be done automatically by setting the env var CHANGE_MINIKUBE_NONE_USER=true
? Waiting for cluster to come online ...
?? Done! kubectl is now configured to use "minikube"
出現(xiàn)上面的日志表示minikube已經(jīng)部署完畢,隨后查看k8s的運(yùn)行狀態(tài)
# 可以看到minikube在docker中啟動了很多k8s相關(guān)的container
$ docker container ls
# 查看minikube的運(yùn)行狀態(tài)
$ minikube status
后記
minikube提供了一種簡便快捷的方式在單機(jī)中完成k8s集群的部署,默認(rèn)使用虛擬化技術(shù)(或者docker)模擬多節(jié)點(diǎn)部署,為學(xué)習(xí)研究k8s提供了巨大的方便饵溅。
另外使用docker運(yùn)行minikube會存在一些安全性或兼容性問題怠褐,需要注意的地方:https://minikube.sigs.k8s.io/docs/reference/drivers/none/