溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

Minikube如何搭建Kubernetes集群

發(fā)布時間:2022-03-31 12:31:34 來源:億速云 閱讀:200 作者:小新 欄目:開發(fā)技術

這篇文章主要介紹了Minikube如何搭建Kubernetes集群,具有一定借鑒價值,感興趣的朋友可以參考下,希望大家閱讀完這篇文章之后大有收獲,下面讓小編帶著大家一起了解一下。

Minikube

打開 https://github.com/kubernetes/minikube/releases/tag/v1.19.0 下載最新版本的二進制軟件包(deb、rpm包),再使用 apt 或 yum 安裝。

或者直接下載 minikube 最新版本二進制文件(推薦)。

curl -Lo minikube https://kubernetes.oss-cn-hangzhou.aliyuncs.com/minikube/releases/v1.19.0/minikube-linux-amd64
# 上面的是阿里云構建的版本,如果使用 google 構建的,需要翻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

通過 minikube version 命令可以查看 minikube 的版本,接下來我們使用 minikube start 命令,可以直接創(chuàng)建一個 kubernetes 集群。minikube 會自動下載 kubeadm、kubectl、kubelet。

如果啟動不起來,可以創(chuàng)建一個 docker 用戶。

    useradd -m docker
    passwd docker
    # 修改密碼后,加入用戶組
    gpasswd -a docker docker

打開 /etc/sudoers 文件,在 root ALL=(ALL:ALL) ALL 下 增加新的一行:

docker ALL=(ALL)ALL

然后切換為 docker 用戶:su docker 。

筆者注:如果使用 root 用戶啟動 minikube 命令,會提示錯誤,需要使用非 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) .../

接下來 minikube 會拉取各種鏡像,需要一些時間。minikube 完成初始化后,打開新的終端窗口,執(zhí)行 minikube dashboard 啟動面板,根據(jù) URL 地址,可以訪問面板。

PS:如果報 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 后是這樣的。

Minikube如何搭建Kubernetes集群

腳本

如果覺得麻煩。。??梢杂媚_本。。。

新建一個 start.sh,文件內容如下:

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"

新建一個 kubernetes-dashboard.yaml ,文件內容如下:

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 目錄中。

然后啟動 啟動 start.sh 即可。

創(chuàng)建 Deployment

Kubernetes Deployment 可以檢查 Pod 的健康狀況,并在 Pod 中的容器終止的情況下重新啟動新的容器。

deployment 可以部署應用并管理實例數(shù)量,它提供了一種故障的自我修復機制,當應用掛了后,deployment 可以自動啟動一個新的實例,維護固定數(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

默認情況下,pod 只能在 kubernetes 集群的內部網(wǎng)絡訪問,如果要外部網(wǎng)絡訪問,則需要暴露 pod 為 kubnetes service。這里我們把上一小節(jié)的 hello-node 節(jié)點暴露出去。

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 提供一個 ip 供外界訪問。

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 虛擬機(VM):

minikube stop

接著刪除 Minikube 虛擬機(VM):

minikube delete

感謝你能夠認真閱讀完這篇文章,希望小編分享的“Minikube如何搭建Kubernetes集群”這篇文章對大家有幫助,同時也希望大家多多支持億速云,關注億速云行業(yè)資訊頻道,更多相關知識等著你來學習!

向AI問一下細節(jié)

免責聲明:本站發(fā)布的內容(圖片、視頻和文字)以原創(chuàng)、轉載和分享為主,文章觀點不代表本網(wǎng)站立場,如果涉及侵權請聯(lián)系站長郵箱:is@yisu.com進行舉報,并提供相關證據(jù),一經(jīng)查實,將立刻刪除涉嫌侵權內容。

AI