使用 minikube 搭建 Kubernetes 實驗環(huán)境
個人操作筆記,僅供參考
系統(tǒng)環(huán)境及應(yīng)用版本
- Debian 9
- Kubernetes 1.17.0
- Docker 18.09.3
- minikube 1.6.2
前言
最近由于在家閑的慌惫东,就找點事做莉给,準(zhǔn)備學(xué)習(xí)一下 K8S。K8S 這種運維技術(shù)最重要的就是實驗環(huán)境,官方也推薦使用 minikube 搭建 K8S 的實驗環(huán)境颓遏,但是由于國內(nèi)網(wǎng)絡(luò)環(huán)境的原因胁黑,安裝官方指南肯定是不能一步到位的,這篇文章就是考慮了國內(nèi)的網(wǎng)絡(luò)環(huán)境使用各種國內(nèi)加速站點力求一步到位成功安裝 minikube州泊。安裝成功后會使用 minikube 創(chuàng)建一個 vm-driver=none 的集群并運行 echoserver 服務(wù)進行測試丧蘸。
在這里做出的保證是使用干凈的 Debian 9 ( Debian 9.11 dvd1 ISO 下載鏈接 ) 虛擬機按步驟執(zhí)行到最后一步是可以看到測試結(jié)果的。
下載與安裝環(huán)境
這部分會結(jié)合國內(nèi)的網(wǎng)絡(luò)環(huán)境下載和安裝必要的組件
安裝 kubectl
安裝 kubectl 將使用阿里云的鏡像進行加速
先檢查是否有單獨的 /etc/apt/sources.list.d/kubernetes.list
文件遥皂,沒有的話先手動創(chuàng)建一個
touch /etc/apt/sources.list.d/kubernetes.list
然后執(zhí)行下列命令安裝 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 下載站的,前兩個網(wǎng)絡(luò)環(huán)境不好的話會下載得比較慢演训。
下載完對應(yīng)的資源后執(zhí)行下面的命令完成 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: 安裝必要的一些系統(tǒng)工具
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 站點下的一些鏡像弟孟,很不幸,這個站點國內(nèi)并不能順暢訪問样悟,可以借助 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
然后使用下面命令重新給剛拉取的鏡像打標(biāo)簽
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
如下圖所示,出現(xiàn) Done! kubectl is now configured use "minikube"
則表明安裝成功窟她。
可以使用下面命令將默認(rèn)的集群模式改為 none
minikube config set vm-driver none
然后使用下面命令查看 minikube 的狀態(tài)
minikube status
部署一個服務(wù)
接下來這部分會使用 echoserver 創(chuàng)建一個基本的服務(wù)驗證 minikube 已經(jīng)部署完成并能正常使用陈症。
依次執(zhí)行下列命令完成服務(wù)的部署:
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
執(zhí)行完之后會顯示具體映射的端口
如果不是使用 root 用戶啟動的話會自動打開瀏覽器,如果打開瀏覽器失敗震糖,就使用 curl 命令請求途中的 URL 驗證服務(wù)正常運行
curl http://10.0.2.15:30769
請求成功的話能正確返回信息
FAQ
- 為什么需要手動拉取鏡像录肯?
如果不手動拉取鏡像在國內(nèi)的網(wǎng)絡(luò)環(huán)境下,在執(zhí)行 minikube start
時會出現(xiàn)下面的錯誤
就是因為從 k8s.gcr.io 國內(nèi)不能訪問吊说,所以需要手動從其他地方拉取鏡像再命名為 k8s.gcr.io 的鏡像论咏。