Kubernetes(二):Ubuntu上搭建k8s環(huán)境

前言

本文主要介紹在阿里云ecs實例上搭建自建Kubernetes環(huán)境的步驟,參照的是k8s官網(wǎng)上minikube的安裝教程。

安裝k8s

查閱網(wǎng)上資料得知,安裝k8s集群一般有幾種方式:

  • kubeadm(適用于生產(chǎn)環(huán)境)
  • Docker Desktop(如果是本地桌面系統(tǒng)推薦這種方式)
  • minikube(本地快速單機部署,體驗最簡版的k8s,不推薦在生產(chǎn)環(huán)境上使用)

本文選擇安裝minikube的方式搭建最簡k8s環(huán)境,官方教程:https://minikube.sigs.k8s.io/docs/start/

安裝前注意

通過閱讀官方教程得知,用minikube搭建k8s環(huán)境時,既支持通過虛擬化技術(shù)運行,也可以選擇不通過虛擬化技術(shù)直接運行在服務(wù)器上。所以對于一些不支持虛擬化技術(shù)的云服務(wù)器實例,只能通過后者安裝運行k8s,也無須安裝KVMVirtualBox等虛擬化工具,不過還是依賴于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進行操作:
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,前提是要求本機有安裝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鏡像進行部署。而由于墻的問題從阿里云的云端機器上是無法訪問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的運行狀態(tài)

# 可以看到minikube在docker中啟動了很多k8s相關(guān)的container
$ docker container ls
# 查看minikube的運行狀態(tài)
$ minikube status

后記

minikube提供了一種簡便快捷的方式在單機中完成k8s集群的部署,默認(rèn)使用虛擬化技術(shù)(或者docker)模擬多節(jié)點部署,為學(xué)習(xí)研究k8s提供了巨大的方便。
另外使用docker運行minikube會存在一些安全性或兼容性問題,需要注意的地方:https://minikube.sigs.k8s.io/docs/reference/drivers/none/

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容