centos7虛擬機安裝minikube和kubectl


CentOS7虛擬機安裝minikube和kubectl




1、理論知識



Minikube提供了一種非常簡單的方法來安裝單節點的K8S環境。它是一種方便在本地運行Kubernetes的工具,它是可以在 VM 中運行 單節點的 Kubernetes 集群,是為了開發或測試在本地啟動一個節點的 kubernetes 集群。

理解上面的圖,需要注意一個特別關鍵的概念minikube Vm。minikube啟動后,是先創建一個minikube vm,然后在minikube vm中創建一個單節點的k8s集群,就是說創建了一個集群,但是集群很特殊,只有一個節點。

在vmware虛擬機的Centos7 下安裝minikube的時候,會使用--vm-driver=none,添加這個參數之后,minikube就不會創建minikubevm了,而會直接在當前系統里安裝單節點的k8s集群,因為minikube會將當前的虛擬機當成minikube vm。




安裝minikube的過程中,主要步驟包括3個,分別是:安裝docker、安裝kubectl、安裝minikube。

docker是容器引擎,kubernetes是容器管理工具,為了安裝minikube學習kubernetes,安裝docker是理所應當的。

kubectl是一個kubernetes的命令管理工具,也可以稱之為一個kubernetes的一個命令行客戶端。它和kubernetes的關系,類似於mysql命令和mysqld數據庫服務器的管理,mysql是mysqld的一個命令管理工具,mysqld是數據庫引擎。

minikube是縮小版的kubernetes。

知道了這三者的相互關系,也就明白了為啥安裝minikube的過程中要依次安裝這三個東西。這是安裝的理論知識。下面的步驟就是實踐過程了。


2、安裝實踐過程




2.1 安裝docker-ce。



安裝docker的過程省略了,因為我已經在以前裝好了。

2.2 安裝kubectl。



# 下載二進制包,添加可執行權限,移動到bin目錄,
# 因為我是root登錄的所以是/usr/bin,其他用戶登錄是/usr/local/bin
curl -LO https://storage.googleapis.com/kubernetes-release/release/v1.18.0/bin/linux/amd64/kubectl 
chmod +x ./kubectl &&\
mv ./kubectl /usr/bin/kubectl

kubectl是否安裝成功,這么驗證:

[root@bogon minikube]# kubectl version --client
Client Version: version.Info{Major:"1", Minor:"22", GitVersion:"v1.22.0", GitCommit:"c2b5237ccd9c0f1d600d3072634ca66cefdf272f", GitTreeState:"clean", BuildDate:"2021-08-04T18:03:20Z", GoVersion:"go1.16.6", Compiler:"gc", Platform:"linux/amd64"}
[root@bogon minikube]# 

2.3 安裝minikube。



wget https://github.com/kubernetes/minikube/releases/download/v1.7.3/minikube-linux-amd64
mv minikube-linux-amd64 minikube
chmod +x minikube
mv minikube /usr/bin/


2.4 啟動minikube




啟動minikube之前,要對系統做一些設置。


首先,要將虛擬機關閉,重新設置虛擬機的內存和cpu核數,內存至少4G,cpu設置為2核。


第二,設置防火牆為 Iptables 並設置空規則。因為centos7默認的防火牆是firewalld,所以要先關閉firewalld,然后安裝iptables,並設置清空其規則。

//關閉默認自帶防火牆:
systemctl stop firewalld && systemctl disable firewalld

//安裝iptables管理工具,並清空規則:
yum -y install iptables-services && systemctl start iptables && systemctl enable iptables && iptables -F && service iptables save

第三,關閉selinux
//下面命令先關閉selinux,然后從selinux的配置文件中設置它為永久關閉。
setenforce 0 && sed -i 's/^SELINUX=.*/SELINUX=disabled/' /etc/selinux/config

第四,關閉swap

//下面的命令是將/etc/fstab中swap的哪一行注釋掉,就是給哪一行最前面加個#
swapoff -a && sed -i '/ swap / s/^\(.*\)$/#\1/g' /etc/fstab

第五,調整內核參數

cat > kubernetes.conf <<EOF
net.bridge.bridge-nf-call-iptables=1
net.bridge.bridge-nf-call-ip6tables=1
net.ipv4.ip_forward=1
net.ipv4.tcp_tw_recycle=0
vm.swappiness=0 # 禁止使用 swap 空間,只有當系統 OOM 時才允許使用它
vm.overcommit_memory=1 # 不檢查物理內存是否夠用
vm.panic_on_oom=0 # 開啟 OOM
fs.inotify.max_user_instances=8192
fs.inotify.max_user_watches=1048576
fs.file-max=52706963
fs.nr_open=52706963
net.ipv6.conf.all.disable_ipv6=1
net.netfilter.nf_conntrack_max=2310720
EOF

//調用配置:
cp kubernetes.conf /etc/sysctl.d/kubernetes.conf && sysctl -p /etc/sysctl.d/kubernetes.conf

第六,啟動

minikube有2種啟動驅動:虛擬機程序啟動和裸機啟動(也被稱為none驅動程序啟動)

  • 虛擬機程序啟動。
    minikube依賴虛擬機運行。如果是在物理機上安裝的minikube,則官方推薦使用libvirt v1.3.1+、qemu-kvm v2.0+或VirtualBox 5.2+等虛擬機來啟動minikube。
  • 裸機啟動(也被稱為none驅動程序啟動)。
    如果安裝minikube的時候是在Vmware等虛擬機中安裝的,那么Vmware虛擬機管理程序不允許嵌套虛擬化,則可以使用裸機啟動方式,跳過創建其他VM的操作。裸機啟動只能單節點部署k8s。
    啟動的時候一定要指定--vm-driver=none,表示不采用任何虛擬機驅動而采用裸機啟動,也可以說是采用none驅動程序啟動。
    裸機啟動方式要求minikube以root身份運行,需要帶上--registry-mirror參數,指明從docker中國區的鏡像下載數據。
    minikube start --vm-driver=none --registry-mirror=https://registry.docker-cn.com

可以設置none為默認驅動程序(裸機啟動),那么以后只需要執行minikube start即可正常啟動minikube,設置命令:
minikube config set vm-driver none
然后執行:
minikube start --registry-mirror=https://registry.docker-cn.com

minikube start 命令執行后會依次自動執行以下操作:
1)驗證minikube運行環境
2)在docker上預加載Kubernates,驗證docker
3)下載kubelet、kubeadm(當前實驗版本為v1.16)
4)拉取Kubernates鏡像
5)啟動Kubernates

//啟動minikube下載所需鏡像,不會用vbox,所以用默認容器驅動啟動的:

minikube start --image-repository=registry.cn-hangzhou.aliyuncs.com/google_containers \
    --cpus=2 \    # 為虛擬機分配核數
    --memory=4096 \    # 分配內存
    --vm-driver=none


第七,給docker設置阿里雲的鏡像庫。這樣docker下載鏡像的時候會快一點。

//添加阿里雲加速器,如果/etc/docker下沒有daemon.json,則新建一個。
cat > /etc/docker/daemon.json <<EOF
{
    "registry-mirrors": [
        "https://registry.docker-cn.com"
    ]
}
EOF
//docker重啟后台運行:
service docker restart && systemctl enable docker

minikube start執行成功后,單個節點的k8s集群就建好了。下面就可以用kubectl命令行客戶端對k8s集群進行管理了。

2.5 啟動之后的基本操作

下面的操作可以分為兩類:
1、用minikube對k8s集群的管理性操作
2、kubectl客戶端的各種操作,它是對單個集群的訪問性操作

# 用minikube對k8s集群的管理性操作:
# 用類似如下命令設置minikube的各種參數
minikube config set memory 4096 # minikube默認情況下僅分配2GB的RAM,需擴內存可使用此命令
# 訪問minikube的dashboard 
minikube dashboard # 訪問minikube集群中運行的Kubernetes儀表

# 
minikube service hello-minikube # 使用minikube可在瀏覽器中輕松打開此開放節點

# minikube默認啟動一個單節點k8s集群,下面命令可以啟動另外一個k8s集群,當然,也是單節點的。
minikube start -p cluster2 # 啟動第二個本地集群(注意:裸機啟動(本次實驗環境)不適用)

# 停止本地集群
minikube stop 

# 刪除本地集群
minikube delete 

# kubectl客戶端的各種操作,它是對單個集群的訪問性操作:
kubectl run hello-minikube --image=k8s.gcr.io/echoserver:1.4 --port=8080 # 啟動服務器
kubectl get po -A # 查看pod狀態
kubectl expose deployment hello-minikube --type=NodePort # 將服務公開為NodePort

參考資料:

1、https://www.cnblogs.com/spll/p/10033316.html,(目前沒有用上)
2、https://www.jianshu.com/p/a92425a6c6a6,(提供了一個清晰的步驟)
3、https://developer.aliyun.com/article/221687,(minikube啟動的配置有詳細說明)
4、https://www.cnblogs.com/harmful-chan/p/12731014.html,(有一個完整的安裝步驟,安裝過程中主要參考的文檔是這個)
5、https://www.cnblogs.com/mengyucloud/p/12244168.html,(啟動配置項具有參考意義)
6、https://blog.csdn.net/haohaifeng002/article/details/102478143,(另一個主力參考文檔)
7、https://blog.csdn.net/u014636124/article/details/105145674/,(通過這一篇,了解了minikube基本情況)
8、https://www.jianshu.com/p/b10c0d7f7d18,(這一篇文章提供了一點有益的幫助)





免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM