本地環(huán)境搭建學(xué)習(xí)Kubernetes集群

背景

標(biāo)題由于公司架構(gòu)主要是采用公有云k8s運(yùn)維部署,所以在學(xué)習(xí)了解過(guò)程中,記錄本地安裝k8s主要過(guò)程。
本文主要記錄了,在虛擬機(jī)環(huán)境下,安裝Kubernetes的過(guò)程,其中有很多本地踩過(guò)的坑,撰寫(xiě)本文,
也希望能夠幫助到大家。

1.安裝說(shuō)明

安裝環(huán)境 由于博主使用的是mac系統(tǒng),所以,虛擬機(jī)使用的是Parallels Desktop(14.1.3),個(gè)人感覺(jué)這個(gè)是在mac很好用的虛擬機(jī),安裝很簡(jiǎn)單,網(wǎng)上都可以找到教程。

  • 虛擬機(jī)系統(tǒng) CentOS7
  • 安裝規(guī)劃
    mster節(jié)點(diǎn) 1臺(tái)
    node節(jié)點(diǎn) 1臺(tái)
    虛擬機(jī)網(wǎng)絡(luò)配置 主機(jī)能夠ping上述虛擬機(jī)的任何一臺(tái);上述兩臺(tái)機(jī)之前需要能夠互相ping通,而且需要保證master節(jié)點(diǎn)與node節(jié)點(diǎn)的IP地址保持不變。虛擬機(jī)網(wǎng)絡(luò)配置這塊,本文給不了教程,大家還需要搜索資料。如果是Parallels Desktop虛擬機(jī),采用默認(rèn)的就好。
    安裝方法 采用Kubernetes提供的kebuadm進(jìn)行安裝。由于自己手動(dòng)部署配置,很復(fù)雜,本文采用了Kubernetes自帶的kubeadm進(jìn)行安裝。

2.安裝步驟

2.1安裝Docker

1. 刪除機(jī)器上的舊版Docker
sudo yum remove docker \
                  docker-client \
                  docker-client-latest \
                  docker-common \
                  docker-latest \
                  docker-latest-logrotate \
                  docker-logrotate \
                  docker-engine
2. 安裝必要的一些系統(tǒng)工具
sudo yum install -y yum-utils device-mapper-persistent-data lvm2
3. 添加軟件源信息
sudo yum-config-manager --add-repo http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
4. 更新并安裝Docker-CE
sudo yum makecache fast
sudo yum -y install docker-ce
5.開(kāi)啟Docker服務(wù)
sudo service docker start
6.添加用戶組 配置系統(tǒng)開(kāi)機(jī)啟動(dòng)
  # 添加用戶組
  sudo groupadd docker
  sudo usermod -aG docker $USER

  #系統(tǒng)啟動(dòng)
  sudo systemctl enable docker
7.安裝成功后,可以使用docker version 查看docker的運(yùn)行情況。

以上的安裝步驟,參考阿里云的安裝說(shuō)明,https://yq.aliyun.com/articles/110806。其中也包含其他系統(tǒng)的安裝Docker說(shuō)明。安裝成功后,鑒于國(guó)內(nèi)下載鏡像速度的原因,也可以配置docker的鏡像加速器,具體可參考阿里云的開(kāi)源鏡像市場(chǎng),https://developer.aliyun.com/mirror。其中包含很多的源,后面用到k8s的國(guó)內(nèi)源,在上面也可以找到。??

2.2 安裝kubeadm,kubectl,kubelet

在安裝之前,主要是針對(duì)CentOS系統(tǒng)的一些配置,類似關(guān)閉內(nèi)存共享,防火墻等等。

# 1.關(guān)閉swap
 # 臨時(shí)禁用
 sudo swapoff -a
 # 永久禁用(推薦)先打開(kāi)對(duì)于文件,注釋掉swap那一行
 vim /etc/fstab 

# 2.關(guān)閉SELinux
 # 臨時(shí)禁用
 setenforce 0
 # 永久禁用(推薦)
 sed -i 's/SELINUX=permissive/SELINUX=disabled/' /etc/sysconfig/selinux

# 3.關(guān)閉防火墻
 systemctl disable firewalld
 systemctl stop firewalld

# 4.修改網(wǎng)絡(luò)參數(shù)(如果這步不設(shè)置,后面安裝會(huì)有問(wèn)題)
 cat <<EOF > /etc/sysctl.d/k8s.conf 
 net.bridge.bridge-nf-call-ip6tables = 1 
 net.bridge.bridge-nf-call-iptables = 1 
 EOF

 sysctl --system

# 5.修改國(guó)內(nèi)安裝的k8s鏡像下載源(如果能夠科學(xué)上網(wǎng),可以直接使用google對(duì)應(yīng)的官方安裝文檔,直接安裝)
 cat <<EOF > /etc/yum.repos.d/kubernetes.repo
 [kubernetes]
 name=Kubernetes
 baseurl=https://mirrors.aliyun.com/kubernetes/yum/repos/kubernetes-el7-x86_64/
 enabled=1
 gpgcheck=0
 repo_gpgcheck=0
 gpgkey=https://mirrors.aliyun.com/kubernetes/yum/doc/yum-key.gpg 
 https://mirrors.aliyun.com/kubernetes/yum/doc/rpm-package-key.gpg
 EOF

 ## 重建yum緩存
 yum clean all 
 yum makecache fast 
 yum -y update

# 6.執(zhí)行安裝
 # 這步執(zhí)行的時(shí)間依賴于你自己的網(wǎng)絡(luò),會(huì)需要一段時(shí)間,采用以下命令會(huì)安裝最新版本,如果按照指定版本需要帶上版本號(hào)。如果在這一步指定了版本號(hào),在集群初始化的時(shí)候,也必須加上版本號(hào)。
 yum install -y kubelet kubeadm kubectl


 # 安裝成功后驗(yàn)證
 kubeadm version

 #設(shè)置開(kāi)機(jī)啟動(dòng)
 systemctl enable kubelet && systemctl statt kubelet

至此,以上的步驟(包括安裝Docker)都必須在master與node節(jié)點(diǎn)中執(zhí)行。

2.3 初始化集群(初始化master)

# 初始化k8s集群 注意命令中的版本號(hào)。由于之前安裝 kubeadm kubectl kebulet 采用的是最新版本,所以在初始化的時(shí)候也必須制定對(duì)應(yīng)的版本號(hào)。'--pod-network-cidr=10.244.0.0/16'參數(shù),是由于需要安裝fannel網(wǎng)絡(luò)時(shí),必須指定的。關(guān)于fannel網(wǎng)絡(luò)及安裝,大家可以查看相關(guān)資料。https://github.com/coreos/flannel/blob/master/Documentation/kubernetes.md。 
# 在初始化成功后,安裝日志會(huì)打印一段類似于‘kubeadm join 10.211.55.39:6443 --token jh7j30.3e4igzontf4vep3x --discovery-token-ca-cert-hash sha256:ca6086e0594aa2935bc1c6f2152739119c5179ddcdaf3a2bd95ea827c2d3e305’ 的日志,該命令就是node節(jié)點(diǎn)加入此集群的命令。
# 初始化成功后,日志還會(huì)打印一些叫你執(zhí)行的sh日志('mkdir -p $HOME/.kube 等等,總共3條'),目的主要是用戶的相關(guān)操作,直接復(fù)制執(zhí)行即可
kubeadm init --image-repository registry.aliyuncs.com/google_containers -kubernetes-version v1.16.0 --pod-network-cidr=10.244.0.0/16


# 安裝fannel 大家可以參考kubeadm git地址:https://github.com/coreos/flannel#flannel
kubectl apply -f https://raw.githubusercontent.com/coreos/flannel/master/Documentation/kube-flannel.yml

此步驟,只需在master節(jié)點(diǎn)上執(zhí)行。等待系統(tǒng)下載對(duì)應(yīng)的鏡像后,使用kubectl get pod --all-namespace來(lái)查看當(dāng)前集群中的pod運(yùn)行情況,待所有的pod處于running狀態(tài),及表示master初始化成功。

在這里插入圖片描述

2.4 將node加入集群

在node節(jié)點(diǎn)上,執(zhí)行上述打印日志的‘kubeadm join .....’ 日志。然后,在maste節(jié)點(diǎn)上,執(zhí)行kubectl get node,查看節(jié)點(diǎn)。如果類似于下圖,則恭喜你,Kubernetes安裝成功!

在這里插入圖片描述

2.5 node節(jié)點(diǎn)ROLES為none處理

在上述node截圖中,如果ROLES列為none,則通過(guò)打標(biāo)簽來(lái)進(jìn)行修復(fù)。其實(shí),該列的實(shí)現(xiàn)就是通過(guò)標(biāo)簽來(lái)實(shí)現(xiàn),不過(guò)這個(gè)標(biāo)簽比較特殊。如果master節(jié)點(diǎn)的ROLES為none,則可為master的節(jié)點(diǎn)打上標(biāo)簽node-role.kubernetes.io/master=;如果node節(jié)點(diǎn)的ROLES為none,則可為node節(jié)點(diǎn)打上標(biāo)簽node-role.kubernetes.io/node=。

總結(jié):
文章主要以實(shí)用參考,并沒(méi)有提供每個(gè)步驟執(zhí)行截圖,所以對(duì)于新手,可能不太適合。仔細(xì)把整個(gè)流程首先梳理一遍,然后再動(dòng)手,可能效果會(huì)更好。安裝主要痛點(diǎn)就是在下載Kubernetes鏡像問(wèn)題,目前采用國(guó)內(nèi)的阿里云的源,問(wèn)題不大。不過(guò)也會(huì)可能出現(xiàn)下載不了的問(wèn)題,我第一次安裝的時(shí)候,在執(zhí)行yum install -y kubelet kubeadm kubectl進(jìn)行安裝時(shí),就提示下載不了對(duì)應(yīng)的鏡像,如果出現(xiàn)這種情況,要么就等阿里云同步成功,要么就使用其他的源,華為或者網(wǎng)易貌似也有。

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書(shū)系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容