最近在學習#Kubernetes#, 主要是想打一個基礎開發(fā)環(huán)境, 從最基本、最簡單的#minikube#開始搭起吧, 順便也學習一下搭建過程.
誰知道這個minikube 環(huán)境, 在目前的國內(nèi)環(huán)境下, 還真是不容易自己從頭搭建啊! 記錄一下自己的過程, 最后和大家分享一個已經(jīng)配置好的Minikube 環(huán)境, 安裝在Virtualbox 里的一個虛擬機, 大家以后可以直接使用, 少走彎路哇!
一、 Minikube 簡介
#minikube#是一種可以在本地輕松運行Kubernetes的工具。minikube在筆記本電腦的VM中運行單節(jié)點Kubernetes集群,供希望嘗試Kubernetes或日常開發(fā)的用戶測試使用。特點是不能啟動生產(chǎn)集群,沒有高可用性的單節(jié)點機器。
使用Minikube CLI管理虛擬機上的Kubernetes環(huán)境,比如:啟動,停止,刪除,獲取狀態(tài)等。
Minikube 實際上就是在本機啟動一個虛擬環(huán)境, 在虛擬環(huán)境里面安裝Kubernetes 的各種組件
二、minikube 搭建過程以及遇到的各種坑
在本機(macbook Pro , macOS 11.2.2) 上安裝minikube, 真是遇到了各種坑! 感覺最主要的是, 在當前國內(nèi)的環(huán)境下, 是無法訪問谷歌的一些地址, 尤其是各種repository源, 這就造成安裝上的困難!
而且, 國內(nèi)的文檔吧, 參差不齊, 沒有一個特別好的、系統(tǒng)性強的文檔供參考, 可能是我沒有找到特別合適的文檔, 但是從百度上搜到的文檔, 大多如此, 只言片語居多.
下載minikube 沒啥難度, homebrew 就搞定了:
brew install minikube
按說, 對于Minikube , 目前最簡單的應該是使用Docker 作為driver, 也就是在啟動Minikube 時候, 指定:
minikube start --driver=docker
但是不知道為啥, 我Mac上面的Docker Desktop , 在啟動Kubernetes 時候始終是失敗的, 原因尚未查明, 畢竟對于K8S的理解和使用還不是那么深入......
所以, 我在啟動minikube 的時候, 指定了virtualbox:
minikube start --driver=virtualbox
這個時候, 主要是提示訪問不了谷歌的image 源k8s.gcr.io.
現(xiàn)在國內(nèi)形勢如此, 對于外網(wǎng)的訪問就是艱難, 也不排除國外的"卡脖子"的因素, 作為一名程序員也只能是默默打開公司的vpn, 但是在實際運行的時候, 使用vpn 方案也不太行得通, 里面會提示說api server 沒有啟動, 導致最后的失敗.
折騰很久, 就是在這個VM 里面安裝Kubernetes 的時候, 兜兜轉轉, 錯誤很多, 實在是令人氣餒.
三、開箱即用的Minikube 環(huán)境介紹
最后沒辦法, 看著Virtualbox 里面的這個VM, 心想別人應該有分享的VM 吧, 于是到Vagrant Box 市場里面搜索了一下,還真的是有, 那就不自己折騰了, 下載下來直接用現(xiàn)成的吧!
Box 市場上的這個環(huán)境, 源代碼是在Github 的這個位置:
Q24/vagrant-box-centos7-minikube
https://github.com/Q24/vagrant-box-centos7-minikube
作者在基于Centos 7 精簡版之上, 配置了minikube 的環(huán)境, 虛擬機里面已經(jīng)安裝有:
- ansible
- minikube
- docker
- helm
- kubectl
- kubetail
我們作為Vagrant 的終端用戶, 只需要下載這個Vagrantfile 就好了, 這是我在本機啟動好之后的界面, 增加了GNOME 桌面.
在使用默認的vagrant 賬號和密碼登錄VM 之后, 啟用桌面環(huán)境即可:
startx
minikube 桌面
簡單檢查一下, 可以看到minikube 的狀態(tài)是正常而且完整的:
minikube status
minikube status
Minikube的dashboard 也很簡單的打開:
minikube dashboard
四、通過hello world來快速學習
來一個Hello world的小例子:
apiVersion: Apps/v1
kind: Deployment
metadata:
name: hello-world
spec:
selector:
matchLabels:
run: load-balancer-example
replicas: 2
template:
metadata:
labels:
run: load-balancer-example
spec:
containers:
- name: hello-world
image: registry.cn-hangzhou.aliyuncs.com/aliyun_google/google-sample-node-hello:1.0
ports:
- containerPort: 8080
protocol: TCP
該文件簡單描述了一個k8s deployment 資源的屬性, 包含一個deployment, 一個replicaSets 每一個replicaSets 包含兩個Pod.
每個Pod中運行一個容器, 容器的鏡像源是
registry.cn-hangzhou.aliyuncs.com/aliyun_google/google-sample-node-hello:1.0, 容器端口8080.
啟動應用
保存該文件為 hello-application.yaml, 運行如下命令:
kubectl apply -f ./hello-application.yaml
查看deploymen 狀態(tài)如下:
kubectl get deployment
kubectl get deployment
暴露應用訪問入口
運行如下命令 服務暴露方式為NodePort
kubectl expose deployment hello-world --type NodePort --name node-service
查看node-service:
kubectl get service node-service
kubectl get service node-service
kubectl describe service node-service
kubectl describe service node-service
可以看到 服務通過33557 端口映射到容器的8080端口,這樣我們就可以通過 33557端口訪問容器內(nèi)的web應用了. 如下響應正常
瀏覽器訪問
五 虛擬機分享
最后, 直接把我本地的這個Virtualbox 虛擬機分享給大家吧, 使用虛擬機可以免去配置環(huán)境的過程, 加快學習的腳步!
文件3.7G 左右, 可以直接在某度云盤下載:
鏈接:
https://pan.baidu.com/s/1pq-sYaWEUOxNipUqnRbp7A
為了避免文章被盜, 有需要這個虛擬機的,點擊關注后, 私信給我, 即可分享給您密碼






