共計(jì) 2496 個(gè)字符,預(yù)計(jì)需要花費(fèi) 7 分鐘才能閱讀完成。
怎樣搭一個(gè) K8s 集群,很多新手對此不是很清楚,為了幫助大家解決這個(gè)難題,下面丸趣 TV 小編將為大家詳細(xì)講解,有這方面需求的人可以來學(xué)習(xí)下,希望你能有所收獲。
在公司一直用的現(xiàn)成的 kubernetes 環(huán)境,封裝的組件很多,這次嘗試自己搭一個(gè)輕量級的環(huán)境,踩了好多坑。前置要求: 兩臺主機(jī),可以是云服務(wù)器、虛擬機(jī),網(wǎng)絡(luò)要互通,內(nèi)存最好大于
2GB,主機(jī)上都要提前安裝 Docker。
下面我使用的兩臺主機(jī)。
主機(jī)名(centos)
ip
角色
guozhao-50
192.168.9.50
Master
guozhao-51
192.168.9.51
slave
搭建過程
1、首先在兩臺主機(jī)配置阿里云鏡像源地址
#進(jìn)入 root 用戶 sudo su # 配置鏡像地址 cat /etc/yum.repos.d/kubernetes.repo [kubernetes]name=Kubernetesbaseurl=https://mirrors.aliyun.com/kubernetes/yum/repos/kubernetes-el7-x86_64enabled=1gpgcheck=1repo_gpgcheck=1gpgkey=https://mirrors.aliyun.com/kubernetes/yum/doc/yum-key.gpg https://mirrors.aliyun.com/kubernetes/yum/doc/rpm-package-key.gpgEOF
2、設(shè)置兩臺主機(jī) SELinux 為 disable,設(shè)置 swap 進(jìn)禁用
# 禁用 SELinux
setenforce 0
# 禁用 swap,由于啟動 swap 會產(chǎn)生性能問題,所以 k8s 默認(rèn)禁用 swap
sed -ri s/.*swap.*/# / /etc/fstab
swapoff -a
3、在兩臺主機(jī)分別安裝 kubeadm,kubelet,kubectl
yum install -y kubelet kubeadm kubectl
4、兩臺主機(jī)設(shè)置開機(jī)自啟
systemctl enable kubelet.service
5、創(chuàng)建集群
# 在準(zhǔn)備作為 master 節(jié)點(diǎn)的主機(jī)運(yùn)行命令
kubeadm init \
--kubernetes-version=v1.19.0 \
--image-repository registry.cn-hangzhou.aliyuncs.com/google_containers \
--pod-network-cidr=10.24.0.0/16 \
--ignore-preflight-errors=Swap
# --kubernetes-version 指定版本
# --image-repository 由于墻的問題,使用阿里云的鏡像地址
# --pod-network-cidr 設(shè)置 pod 區(qū)間,不設(shè)置也可正常工作
# --ignore-preflight-errors 如果預(yù)檢出現(xiàn)錯(cuò)誤可以忽略
此時(shí)可以看到各個(gè)組件已經(jīng)啟動起來了
如果上一步出現(xiàn)錯(cuò)誤,需要重置 kubeadm
kubeadm reset
6、但是此時(shí) kubectl 命令行不能用,需要將 kubeconfig 復(fù)制到指定位置
# 切回普通用戶
su centos
# 拷貝文件
mkdir ~/.kube
sudo cp -i /etc/kubernetes/admin.conf $HOME/.kube/config
sudo chown $(id -u):$(id -g) $HOME/.kube/config
此時(shí)查看集群信息
kubectl get node
可以看到是 NotReady,原因是沒有準(zhǔn)備 CNI 網(wǎng)絡(luò)插件
7、安裝 CNI 網(wǎng)絡(luò)插件
# 這里安裝的 weave
kubectl apply -f https://cloud.weave.works/k8s/net?k8s-version=$(kubectl version | base64 | tr -d \n)
等待安裝完成。
稍候再查看 master,狀態(tài)為 Ready
8、node 節(jié)點(diǎn)的加入
# 首先在 master 獲取 token,在 master 執(zhí)行
kubeadm token list
# 如果 token 已經(jīng)過期,體現(xiàn)為找不到 token,執(zhí)行以下命令生成 token
kubeadm token create # 生成 token
在 master 獲取 ca 證書 sha256 編碼 hash 值
openssl x509 -pubkey -in /etc/kubernetes/pki/ca.crt | openssl rsa -pubin -outform der 2 /dev/null | openssl dgst -sha256 -hex | sed s/^.* //
在 slave 上執(zhí)行 kubeadm join
sudo su # 進(jìn)入 root 用戶
kubeadm join master-ip:port \ #master-ip:port 為 kubeconfig 文件的 ip 和 port
--token token \ # 上一步的 token
--discovery-token-ca-cert-hash sha256: hash #上一步的 hash
查看終端
注:如果遇到下圖錯(cuò)誤執(zhí)行命令
echo 1 /proc/sys/net/bridge/bridge-nf-call-iptables
9、在 node 節(jié)點(diǎn)使用 kubeconfig
將 master 節(jié)點(diǎn)的 kubeconfig 文件復(fù)制到 slave 節(jié)點(diǎn)普通用戶的~/.kube 下
10、查看節(jié)點(diǎn)情況
# 開始可能會出現(xiàn) node 節(jié)點(diǎn) NotReady,等待鏡像拉取完畢會變?yōu)?Ready
kubectl get node
此時(shí)一主一從的 k8s 集群已經(jīng)搭建完畢。
看完上述內(nèi)容是否對您有幫助呢?如果還想對相關(guān)知識有進(jìn)一步的了解或閱讀更多相關(guān)文章,請關(guān)注丸趣 TV 行業(yè)資訊頻道,感謝您對丸趣 TV 的支持。