目錄
前言
一、搭建前的準備
1. 搭建k8s的平臺規(guī)劃
2. 服務器硬件配置要求
3. 搭建部署的方式
二、搭建流程
1. kubeadm搭建方式
a. 準備工作,系統(tǒng)初始化
c. 設置一下ipv4,否則會失敗(此處為坑,不設置無法初始化成功)
d. 安裝containerd?
e. 安裝kubectl、kubelet、kubeadm?
f. master節(jié)點進行初始化操作
2. 二進制搭建流程
? ? ? ? a. 創(chuàng)建多臺虛擬機,安裝linux操作系統(tǒng)
? ? ? ? b. 操作系統(tǒng)初始化(各種關關關)
? ? ? ? c. 為etcd和apiserver自簽證書(相當于門禁卡,保證互通)
? ? ? ? d. 部署etcd集群
? ? ? ? e. 部署master組件
? ? ? ? f. 部署node組件
? ? ? ? g. 部署集群網(wǎng)絡
總結
前言
比起君子訥于言而敏于行,我更喜歡君子善于言且敏于行。
一、搭建前的準備
1. 搭建k8s的平臺規(guī)劃
單master集群:只有一個master,管理多個node節(jié)點。
多master集群:擁有多個master,管理多個node節(jié)點。高可用模式。比單master集群多一個負載均衡的步驟。
?
test環(huán)境搭建,因此采用單master集群,如后續(xù)有需要可再增加master。
2. 服務器硬件配置要求
master節(jié)點:
測試環(huán)境 | 生產(chǎn)環(huán)境 | |
CPU | 2 | 8 |
內(nèi)存 | 4G |
16G |
硬盤 | 20G | 100G |
node節(jié)點:
測試環(huán)境 | 生產(chǎn)環(huán)境 | |
CPU | 4 | 16 |
內(nèi)存 | 8G | 64G |
硬盤 | 40G |
500G |
3. 搭建部署的方式
目前常見的有兩種方式:
1)kubeadm方式
? ? ? ? kubeadm是k8s的一個部署工具,部署方式比較簡單。只需要用到兩個命令,kubeadm init(初始化)和 kubeadm join(將node節(jié)點加入到master中)??梢钥焖俨渴餶8s集群。優(yōu)點是快速,無需額外自己處理。比較常見且節(jié)約時間
官方鏈接:https://kubernetes.io/docs/reference/setup-tools/kubeadm/
2)二進制方式
? ? ? ? 從 github 下載二進制包,手動部署每個組件,過程比較麻煩。優(yōu)點是,遇到問題后可以精準定位,有利于后續(xù)維護。畢竟是自己一步一步操作的,更清楚里面的彎彎繞繞~
二、搭建流程
1. kubeadm搭建方式
大致流程:
????????1)創(chuàng)建一個master節(jié)點 kubeadm init
? ? ? ? 2)將node節(jié)點加入到當前集群中 kubeadm join <master節(jié)點的ip和端口>
? ? ? ? 3)配置網(wǎng)絡插件和測試k8s集群
機器配置:
????????-- 準備了一臺master,一臺node。硬件配置CPU 2核,內(nèi)存251G,硬盤500G
? ? ? ? -- 機器之間可以互相ping通,操作系統(tǒng)為CentOS7
? ? ? ? -- 禁止swap分區(qū)
? ? ? ? -- 可以拉取鏡像
????????????????????????????????master: 192.10.18.102
????????????????????????????????node: 192.10.18.103
a. 準備工作,系統(tǒng)初始化
????????由于自己用的是之前配置好的舊物理機,所以跳過此流程。如果需要用虛擬機的話。要進行安裝3臺Centos7.x的操作系統(tǒng),之后進行如下初始化:
1)關閉防火墻
systemctl stop firewalld
systemctl disable firewalld
2)關閉selinux
sed -i 's/enforcing/disabled/' /etc/selinux/config #永久關閉
setenforce 0 #臨時關閉
3)關閉swap
swapoff -a #臨時關閉
sed -ri 's/."swap."/#&/' /etc/fstab #永久關閉
4)設置主機名
hostnamectl set-hostname <hostname>
5)只在master添加hosts
cat >> /etc/hosts << EOF
ip master
ip node1
ip node2
EOF
6)將橋接的ipv4流量傳遞到iptables的鏈,配置內(nèi)核參數(shù)和優(yōu)化?
cat > /etc/sysctl.d/k8s.conf <<EOF
net.bridge.bridge-nf-call-ip6tables = 1
net.bridge.bridge-nf-call-iptables = 1
net.ipv4.ip_forward = 1
EOF
sysctl --system #生效命令
7)時間同步
yum install ntpdate -y
ntpdate time.windows.com
8)安裝ipset、ipvsadm?
yum -y install conntrack ipvsadm ipset jq iptables curl sysstat libseccomp wget vim net-tools git
cat > /etc/modules-load.d/ipvs.conf <<EOF
# Load IPVS at boot
ip_vs
ip_vs_rr
ip_vs_wrr
ip_vs_sh
nf_conntrack
nf_conntrack_ipv4
EOF
systemctl enable --now systemd-modules-load.service
###注!?。∪舸颂幨?,可能是因為內(nèi)核版本低導致的,可升級內(nèi)核后,再執(zhí)行此命令#####
#確認內(nèi)核模塊加載成功
lsmod |egrep "ip_vs|nf_conntrack_ipv4"
b. 升級內(nèi)核(根據(jù)自己情況進行選擇,滿足時可不升級)
1)查看系統(tǒng)版本
cat /etc/redhat-release
2)查看當前內(nèi)核版本
uname -r
3)檢查是否安裝ELRepo
yum ?--disablerepo="*" ?--enablerepo="elrepo-kernel" ?list ?available
看到error說明沒有安裝ELRepo
4)升級安裝ELRepo
安裝
yum install -y https://www.elrepo.org/elrepo-release-7.el7.elrepo.noarch.rpm
或升級
rpm -Uvh https://www.elrepo.org/elrepo-release-7.el7.elrepo.noarch.rpm
5)查看可用安裝包,?長期維護版本為lt,最新主線穩(wěn)定版為ml
yum ?--disablerepo="*" ?--enablerepo="elrepo-kernel" ?list ?available
6)安裝最新的內(nèi)核
yum ?--enablerepo=elrepo-kernel ?install ?-y ?kernel-lt
7)查看可用內(nèi)核版本及啟動順序
awk -F\' '$1=="menuentry " {print i++ " : " $2}' /boot/grub2/grub.cfg
8)安裝輔助工具(非必須,有些系統(tǒng)自帶該工具):grub2-pc
yum install -y grub2-pc
9)設置內(nèi)核默認啟動順序
grub2-set-default 0
vim /etc/default/grub
GRUB_DEFAULT=0 ?#這里從原來的saved改為0
10)生成grub配置文件
# 運行grub2-mkconfig命令來重新創(chuàng)建內(nèi)核配置
grub2-mkconfig -o /boot/grub2/grub.cfg
11)重啟機器
reboot
12)查看內(nèi)核版本是否正確
uname -r
13)安裝 yum-utils 工具
當系統(tǒng)安裝的內(nèi)核大于3個時,會自動刪除舊的內(nèi)核版本或自己查看已經(jīng)安裝的內(nèi)核后手動yum ?remove -y 進行刪除舊版本
yum install -y ?yum-utils
14)刪除舊的工具包
yum remove kernel-tools-libs.x86_64 kernel-tools.x86_64
15)安裝新版本的工具包
yum --disablerepo=\* --enablerepo=elrepo-kernel install -y kernel-lt-tools.x86_64
16)查看已安裝內(nèi)核
rpm -qa | grep kernel
c. 設置一下ipv4,否則會失?。ù颂帪榭?,不設置無法初始化成功)
vim /etc/sysconfig/modules/ipvs.modules
cat /etc/sysconfig/modules/ipvs.modules
nf_conntrack
systemctl enable --now systemd-modules-load.service
lsmod |egrep "ip_vs|nf_conntrack_ipv4"
lsmod |egrep "ip_vs|nf_conntrack_ipv"
d. 安裝containerd?
1)安裝依賴軟件包
yum -y install yum-utils device-mapper-persistent-data lvm2
2)添加阿里Docker源
[root@k8s-master ~]
yum-config-manager --add-repo http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
3)添加overlay和netfilter模塊
cat >>/etc/modules-load.d/containerd.conf <<EOF
overlay
br_netfilter
EOF
modprobe overlay
modprobe br_netfilter
4)安裝Containerd,這里安裝最新版本(1.5版本及以下不可使用)
yum -y install containerd.io
5)創(chuàng)建Containerd的配置文件
mkdir -p /etc/containerd
containerd config default > /etc/containerd/config.toml
sed -i '/SystemdCgroup/s/false/true/g' /etc/containerd/config.toml
sed -i '/sandbox_image/s/registry.k8s.io/registry.aliyuncs.com\/google_containers/g' /etc/containerd/config.toml
6)啟動containerd
systemctl enable containerd
systemctl start containerd
e. 安裝kubectl、kubelet、kubeadm?
1)添加阿里kubernetes源?
vim /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
2)安裝kubectl、kubelet、kubeadm
查看所有的可用版本
yum list kubelet --showduplicates |grep 1.27
這里安裝當前最新版本1.27.1
yum -y install kubectl-1.27.1 kubelet-1.27.1 kubeadm-1.27.1
設置開機自啟kubelet(此時并沒有kubelet配置文件無法啟動,正常狀況)
systemctl enable kubelet
systemctl start kubelet
f. master節(jié)點進行初始化操作
1)查看k8s v1.27.1初始化所需要的鏡像
kubeadm config images list --kubernetes-version=v1.27.1
2)初始化命令
kubeadm init --kubernetes-version=1.27.1 --apiserver-advertise-address=10.142.50.190 --image-repository registry.aliyuncs.com/google_containers --pod-network-cidr=10.244.0.0/16
注:pod的網(wǎng)段為: 10.244.0.0/16,api server地址為Master本機IP,網(wǎng)段可以自定義,不沖突即可。
參數(shù)詳解:
? ? ? ??-- 指定版本。(可按需修改版本)
????????-- 設置了apiserver,即當前節(jié)點的ip。
? ? ? ? -- 指定鏡像倉庫地址,拉取鏡像。? ? ? ??
? ? ? ? -- service-cidr是svc網(wǎng)絡? ? ? ? ? ? ? kubectl get svc? ? ? ? ? ? ? ? ? ?#查看svc信息? ?
? ? ? ? ? ??默認使用10.96.0.0/12
? ? ? ? -- pod-network-cidr 是pod網(wǎng)絡? ??kubectl get pods -o wide? ? #查看pod網(wǎng)絡信息
? ? ? ? -- k8s內(nèi)部的pod節(jié)點之間網(wǎng)絡可以使用的IP段,不能和service-cidr寫一樣,默認使用10.244.0.0/16
此操作,等待時間較長
3)成功返回信息,執(zhí)行返回內(nèi)容即可
Your Kubernetes control-plane has initialized successfully!
To start using your cluster, you need to run the following as a regular user:
mkdir -p $HOME/.kube
sudo cp -i /etc/kubernetes/admin.conf $HOME/.kube/config
sudo chown $(id -u):$(id -g) $HOME/.kube/config
Alternatively, if you are the root user, you can run:
export KUBECONFIG=/etc/kubernetes/admin.conf
You should now deploy a pod network to the cluster.
Run "kubectl apply -f [podnetwork].yaml" with one of the options listed at:
https://kubernetes.io/docs/concepts/cluster-administration/addons/
Then you can join any number of worker nodes by running the following on each as root:
kubeadm join IP:6443 --token maod8l.w4g2cu2tl4er9gil \
--discovery-token-ca-cert-hash sha256:xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
master節(jié)點執(zhí)行
mkdir -p $HOME/.kube
sudo cp -i /etc/kubernetes/admin.conf $HOME/.kube/config
sudo chown $(id -u):$(id -g) $HOME/.kube/config
node節(jié)點執(zhí)行
kubeadm join IP:6443 --token maod8l.w4g2cu2tl4er9gil \
--discovery-token-ca-cert-hash sha256:xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
2. 二進制搭建流程
? ? ? ? a. 創(chuàng)建多臺虛擬機,安裝linux操作系統(tǒng)
? ? ? ? b. 操作系統(tǒng)初始化(各種關關關)
? ? ? ? c. 為etcd和apiserver自簽證書(相當于門禁卡,保證互通)
? ? ? ? d. 部署etcd集群
? ? ? ? e. 部署master組件
? ? ? ? ? ? ? ? kube-apiserver? ?kube-controller-manager? ?kube-scheduler? etcd
? ? ? ? f. 部署node組件
? ? ? ? ? ? ? ? kubelet? ?kube-proxy? docker? etcd?文章來源:http://www.zghlxwxcb.cn/news/detail-458215.html
? ? ? ? g. 部署集群網(wǎng)絡
?文章來源地址http://www.zghlxwxcb.cn/news/detail-458215.html
總結
到了這里,關于使用 kubeadm 部署 kubernetes 1.27.1 版本的文章就介紹完了。如果您還想了解更多內(nèi)容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關文章,希望大家以后多多支持TOY模板網(wǎng)!