Minikube搭建Kubernetes集群
Minikube
打開(kāi) https://github.com/kubernetes/minikube/releases/tag/v1.19.0 下載最新版本的二進(jìn)制軟件包(deb、rpm包),再使用 apt 或 yum 安裝。
或者直接下載 minikube 最新版本二進(jìn)制文件(推薦)。
curl -Lo minikube https://kubernetes.oss-cn-hangzhou.aliyuncs.com/minikube/releases/v1.19.0/minikube-linux-amd64 # 上面的是阿里云構(gòu)建的版本,如果使用 google 構(gòu)建的,需要翻qiang。 #linux版本 curl -Lo minikube https://storage.googleapis.com/minikube/releases/latest/minikube-linux-amd64 #win版本 curl -Lo minikube https://storage.googleapis.com/minikube/releases/latest/minikube-darwin-amd64
chmod +x minikube
sudo mv minikube /usr/local/bin
通過(guò) minikube version
命令可以查看 minikube 的版本,接下來(lái)我們使用 minikube start
命令,可以直接創(chuàng)建一個(gè) kubernetes 集群。minikube 會(huì)自動(dòng)下載 kubeadm、kubectl、kubelet。
如果啟動(dòng)不起來(lái),可以創(chuàng)建一個(gè) docker 用戶。
useradd -m docker passwd docker # 修改密碼后,加入用戶組 gpasswd -a docker docker
打開(kāi) /etc/sudoers 文件,在 root ALL=(ALL:ALL) ALL
下 增加新的一行:
docker ALL=(ALL)ALL
然后切換為 docker 用戶:su docker
。
筆者注:如果使用 root 用戶啟動(dòng) minikube 命令,會(huì)提示錯(cuò)誤,需要使用非 root 用戶(一般為docker)。如果你不想切換為別的用戶,可以使用 --driver==none
。
minikube start --driver=none
* Pulling base image ... * Downloading Kubernetes v1.20.2 preload ... > preloaded-images-k8s-v10-v1...: 491.71 MiB / 491.71 MiB 100.00% 60.04 Mi > gcr.io/k8s-minikube/kicbase...: 357.67 MiB / 357.67 MiB 100.00% 7.41 MiB * Creating docker container (CPUs=2, Memory=4000MB) .../
接下來(lái) minikube 會(huì)拉取各種鏡像,需要一些時(shí)間。minikube 完成初始化后,打開(kāi)新的終端窗口,執(zhí)行 minikube dashboard
啟動(dòng)面板,根據(jù) URL 地址,可以訪問(wèn)面板。
PS:如果報(bào) X Exiting due to GUEST_MISSING_CONNTRACK: Sorry, Kubernetes 1.20.2 requires conntrack to be installed in root's path
,則需要安裝 constrack ,apt install constrack
。
正常的話,執(zhí)行 docker ps
后是這樣的。
腳本
如果覺(jué)得麻煩。。??梢杂媚_本。。。
新建一個(gè) start.sh,文件內(nèi)容如下:
echo -n "Starting Kubernetes..." minikube version minikube start --wait=false sleep 2 n=0 until [ $n -ge 10 ] do minikube addons enable dashboard && break n=$[$n+1] sleep 1 done sleep 1 n=0 until [ $n -ge 10 ] do kubectl apply -f /opt/kubernetes-dashboard.yaml &>/dev/null && break n=$[$n+1] sleep 1 done echo "Kubernetes Started"
新建一個(gè) kubernetes-dashboard.yaml ,文件內(nèi)容如下:
apiVersion: v1 kind: Namespace metadata: labels: addonmanager.kubernetes.io/mode: Reconcile kubernetes.io/minikube-addons: dashboard name: kubernetes-dashboard selfLink: /api/v1/namespaces/kubernetes-dashboard spec: finalizers: - kubernetes status: phase: Active --- apiVersion: v1 kind: Service metadata: labels: app: kubernetes-dashboard name: kubernetes-dashboard-katacoda namespace: kubernetes-dashboard spec: ports: - port: 80 protocol: TCP targetPort: 9090 nodePort: 30000 selector: k8s-app: kubernetes-dashboard type: NodePort
把 kubernetes-dashboard.yaml 放到 /opt 目錄中。
然后啟動(dòng) 啟動(dòng) start.sh 即可。
創(chuàng)建 Deployment
Kubernetes Deployment 可以檢查 Pod 的健康狀況,并在 Pod 中的容器終止的情況下重新啟動(dòng)新的容器。
deployment 可以部署應(yīng)用并管理實(shí)例數(shù)量,它提供了一種故障的自我修復(fù)機(jī)制,當(dāng)應(yīng)用掛了后,deployment 可以自動(dòng)啟動(dòng)一個(gè)新的實(shí)例,維護(hù)固定數(shù)量的 pod。
kubectl create
命令創(chuàng)建管理 Pod 的 Deployment。
kubectl create deployment hello-node --image=k8s.gcr.io/echoserver:1.4 # k8s.gcr.io/echoserver:1.4 是鏡像名稱,hello-node 是 node 名稱
k8s.gcr.io/echoserver 鏡像暴露了 8080 端口。
查看 Deployment:
kubectl get deployments
查看 pod :
kubectl get pods
查看集群事件:
kubectl get events
查看 kubectl
配置:
kubectl config view
創(chuàng)建 Service
默認(rèn)情況下,pod 只能在 kubernetes 集群的內(nèi)部網(wǎng)絡(luò)訪問(wèn),如果要外部網(wǎng)絡(luò)訪問(wèn),則需要暴露 pod 為 kubnetes service。這里我們把上一小節(jié)的 hello-node 節(jié)點(diǎn)暴露出去。
kubectl expose deployment hello-node --type=LoadBalancer --port=8080
然后查看剛剛創(chuàng)建的 service:
kubectl get services
NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE hello-node LoadBalancer 10.96.194.154 <pending> 8080:31686/TCP 85s kubernetes ClusterIP 10.96.0.1 <none> 443/TCP 22m
然后試用 minikube service 提供一個(gè) ip 供外界訪問(wèn)。
minikube service hello-node
root@instance-1:~# minikube service hello-node |-----------|------------|-------------|-------------------------| | NAMESPACE | NAME | TARGET PORT | URL | |-----------|------------|-------------|-------------------------| | default | hello-node | 8080 | http://10.170.0.2:31686 | |-----------|------------|-------------|-------------------------| * Opening service default/hello-node in default browser... http://10.170.0.2:31686
清理集群資源
首先生成 service、deployment 。
kubectl delete service hello-node kubectl delete deployment hello-node
然后停止 Minikube 虛擬機(jī)(VM):
minikube stop
接著刪除 Minikube 虛擬機(jī)(VM):
minikube delete
到此這篇關(guān)于Minikube搭建Kubernetes集群的文章就介紹到這了。希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。
相關(guān)文章
Kubernetes(K8S)入門(mén)基礎(chǔ)內(nèi)容介紹
這篇文章介紹了Kubernetes(K8S)的入門(mén)基礎(chǔ)內(nèi)容,對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2022-03-03CentOS 出現(xiàn)no space left on device錯(cuò)誤解決辦法
這篇文章主要介紹了CentOS 出現(xiàn)no space left on device錯(cuò)誤解決辦法的相關(guān)資料,需要的朋友可以參考下2017-04-04使用kubeadm命令行工具創(chuàng)建kubernetes集群
這篇文章介紹了使用kubeadm命令行工具創(chuàng)建kubernetes集群的方法,對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2022-03-03Kubernetes ApiServer三大server權(quán)限與數(shù)據(jù)存儲(chǔ)解析
這篇文章主要為大家介紹了Kubernetes ApiServer三大server權(quán)限與數(shù)據(jù)存儲(chǔ)解析,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2022-11-11Kubernetes關(guān)鍵組件與結(jié)構(gòu)組成介紹
這篇文章介紹了Kubernetes的關(guān)鍵組件與結(jié)構(gòu)組成,對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2022-03-03Kubernetes kubectl中Pod創(chuàng)建流程源碼解析
這篇文章主要為大家介紹了Kubernetes kubectl中Pod創(chuàng)建流程源碼解析,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2022-11-11kubectl中g(shù)et命令及使用示例總結(jié)
這篇文章主要為大家介紹了kubectl中g(shù)et命令及使用示例的總結(jié),有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2022-03-03