使用kubeadm部署kubernetes1.27.1版本教程
一、搭建前的準(zhǔn)備
1. 搭建k8s的平臺(tái)規(guī)劃
單master集群:只有一個(gè)master,管理多個(gè)node節(jié)點(diǎn)。

多master集群:擁有多個(gè)master,管理多個(gè)node節(jié)點(diǎn)。高可用模式。比單master集群多一個(gè)負(fù)載均衡的步驟。

test環(huán)境搭建,因此采用單master集群,如后續(xù)有需要可再增加master。
2. 服務(wù)器硬件配置要求
- master節(jié)點(diǎn):
| 測(cè)試環(huán)境 | 生產(chǎn)環(huán)境 | |
| CPU | 2 | 8 |
| 內(nèi)存 | 4G | 16G |
| 硬盤 | 20G | 100G |
- node節(jié)點(diǎn):
| 測(cè)試環(huán)境 | 生產(chǎn)環(huán)境 | |
| CPU | 4 | 16 |
| 內(nèi)存 | 8G | 64G |
| 硬盤 | 40G | 500G |
3. 搭建部署的方式
目前常見的有兩種方式:
1)kubeadm方式
- kubeadm是k8s的一個(gè)部署工具,部署方式比較簡(jiǎn)單。只需要用到兩個(gè)命令,kubeadm init(初始化)和 kubeadm join(將node節(jié)點(diǎn)加入到master中)。可以快速部署k8s集群。
- 優(yōu)點(diǎn)是快速,無(wú)需額外自己處理。比較常見且節(jié)約時(shí)間
官方鏈接:https://kubernetes.io/docs/reference/setup-tools/kubeadm/
2)二進(jìn)制方式
- 從 github 下載二進(jìn)制包,手動(dòng)部署每個(gè)組件,過(guò)程比較麻煩。
- 優(yōu)點(diǎn)是,遇到問題后可以精準(zhǔn)定位,有利于后續(xù)維護(hù)。畢竟是自己一步一步操作的,更清楚里面的彎彎繞繞~
二、搭建流程
1. kubeadm搭建方式
大致流程:
1)創(chuàng)建一個(gè)master節(jié)點(diǎn) kubeadm init
2)將node節(jié)點(diǎn)加入到當(dāng)前集群中 kubeadm join <master節(jié)點(diǎn)的ip和端口>
3)配置網(wǎng)絡(luò)插件和測(cè)試k8s集群
機(jī)器配置:
- -- 準(zhǔn)備了一臺(tái)master,一臺(tái)node。硬件配置CPU 2核,內(nèi)存251G,硬盤500G
- -- 機(jī)器之間可以互相ping通,操作系統(tǒng)為CentOS7
- -- 禁止swap分區(qū)
- -- 可以拉取鏡像
master: 192.10.18.102 node: 192.10.18.103
a. 準(zhǔn)備工作,系統(tǒng)初始化
由于自己用的是之前配置好的舊物理機(jī),所以跳過(guò)此流程。如果需要用虛擬機(jī)的話。要進(jìn)行安裝3臺(tái)Centos7.x的操作系統(tǒng),之后進(jìn)行如下初始化:
- 1)關(guān)閉防火墻
systemctl stop firewalld systemctl disable firewalld
- 2)關(guān)閉selinux
sed -i 's/enforcing/disabled/' /etc/selinux/config #永久關(guān)閉 setenforce 0 #臨時(shí)關(guān)閉
- 3)關(guān)閉swap
swapoff -a #臨時(shí)關(guān)閉 sed -ri 's/."swap."/#&/' /etc/fstab #永久關(guān)閉
- 4)設(shè)置主機(jī)名
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)時(shí)間同步
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 ###注?。。∪舸颂幨?,可能是因?yàn)閮?nèi)核版本低導(dǎo)致的,可升級(jí)內(nèi)核后,再執(zhí)行此命令##### #確認(rèn)內(nèi)核模塊加載成功 lsmod |egrep "ip_vs|nf_conntrack_ipv4"
b. 升級(jí)內(nèi)核(根據(jù)自己情況進(jìn)行選擇,滿足時(shí)可不升級(jí))
- 1)查看系統(tǒng)版本
cat /etc/redhat-release
- 2)查看當(dāng)前內(nèi)核版本
uname -r
- 3)檢查是否安裝ELRepo
yum --disablerepo="*" --enablerepo="elrepo-kernel" list available
看到error說(shuō)明沒有安裝ELRepo
- 4)升級(jí)安裝ELRepo
安裝
yum install -y https://www.elrepo.org/elrepo-release-7.el7.elrepo.noarch.rpm
或升級(jí)
rpm -Uvh https://www.elrepo.org/elrepo-release-7.el7.elrepo.noarch.rpm
- 5)查看可用安裝包, 長(zhǎng)期維護(hù)版本為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)核版本及啟動(dòng)順序
awk -F\' '$1=="menuentry " {print i++ " : " $2}' /boot/grub2/grub.cfg- 8)安裝輔助工具(非必須,有些系統(tǒng)自帶該工具):grub2-pc
yum install -y grub2-pc
- 9)設(shè)置內(nèi)核默認(rèn)啟動(dòng)順序
grub2-set-default 0
vim /etc/default/grub GRUB_DEFAULT=0 #這里從原來(lái)的saved改為0
- 10)生成grub配置文件
# 運(yùn)行g(shù)rub2-mkconfig命令來(lái)重新創(chuàng)建內(nèi)核配置
grub2-mkconfig -o /boot/grub2/grub.cfg
- 11)重啟機(jī)器
reboot
- 12)查看內(nèi)核版本是否正確
uname -r
- 13)安裝 yum-utils 工具
當(dāng)系統(tǒng)安裝的內(nèi)核大于3個(gè)時(shí),會(huì)自動(dòng)刪除舊的內(nèi)核版本或自己查看已經(jīng)安裝的內(nèi)核后手動(dòng)yum remove -y 進(jìn)行刪除舊版本
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. 設(shè)置一下ipv4,否則會(huì)失?。ù颂帪榭樱辉O(shè)置無(wú)法初始化成功)
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)啟動(dòng)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
這里安裝當(dāng)前最新版本1.27.1
yum -y install kubectl-1.27.1 kubelet-1.27.1 kubeadm-1.27.1
設(shè)置開機(jī)自啟kubelet(此時(shí)并沒有kubelet配置文件無(wú)法啟動(dòng),正常狀況)
systemctl enable kubelet systemctl start kubelet
f. master節(jié)點(diǎn)進(jìn)行初始化操作
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本機(jī)IP,網(wǎng)段可以自定義,不沖突即可。
參數(shù)詳解:
指定版本。(可按需修改版本)
- -- 設(shè)置了apiserver,即當(dāng)前節(jié)點(diǎn)的ip。
- -- 指定鏡像倉(cāng)庫(kù)地址,拉取鏡像。
- -- service-cidr是svc網(wǎng)絡(luò) kubectl get svc #查看svc信息
默認(rèn)使用10.96.0.0/12
- -- pod-network-cidr 是pod網(wǎng)絡(luò) kubectl get pods -o wide #查看pod網(wǎng)絡(luò)信息
- -- k8s內(nèi)部的pod節(jié)點(diǎn)之間網(wǎng)絡(luò)可以使用的IP段,不能和service-cidr寫一樣,默認(rèn)使用10.244.0.0/16
此操作,等待時(shí)間較長(zhǎng)
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é)點(diǎn)執(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é)點(diǎn)執(zhí)行
kubeadm join IP:6443 --token maod8l.w4g2cu2tl4er9gil \ --discovery-token-ca-cert-hash sha256:xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
2. 二進(jìn)制搭建流程
- a. 創(chuàng)建多臺(tái)虛擬機(jī),安裝linux操作系統(tǒng)
- b. 操作系統(tǒng)初始化(各種關(guān)關(guān)關(guān))
- c. 為etcd和apiserver自簽證書(相當(dāng)于門禁卡,保證互通)
- d. 部署etcd集群
- e. 部署master組件
kube-apiserver kube-controller-manager kube-scheduler etcd
- f. 部署node組件
kubelet kube-proxy docker etcd
- g. 部署集群網(wǎng)絡(luò)
總結(jié)
以上為個(gè)人經(jīng)驗(yàn),希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。
相關(guān)文章
云原生技術(shù)kubernetes調(diào)度單位pod的使用詳解
這篇文章主要介紹了云原生技術(shù)kubernetes調(diào)度單位pod的使用詳解,幫助大家更好的理解和學(xué)習(xí)使用K8S,感興趣的朋友可以了解下2021-03-03
k8s部署Pyroscope并分析golang性能瓶頸(最新推薦)
這篇文章主要介紹了k8s部署Pyroscope并分析golang性能瓶頸,Pyroscope支持多種編程語(yǔ)言并提供了豐富的性能數(shù)據(jù),可以幫助我們跟蹤應(yīng)用程序的執(zhí)行情況,并根據(jù)收集到的數(shù)據(jù)來(lái)識(shí)別性能瓶頸,需要的朋友可以參考下2023-04-04
Rancher部署配置開源Rainbond云原生應(yīng)用管理平臺(tái)
這篇文章主要為大家介紹了Rancher部署配置開源Rainbond云原生應(yīng)用管理平臺(tái),有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2022-04-04
Rainbond功能架構(gòu)及應(yīng)用管理官方文檔介紹
這篇文章主要為大家介紹了Rainbond功能機(jī)構(gòu)及使用官方文檔,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2022-04-04
Linux安裝Kubernetes(k8s)超詳細(xì)教程
Kubernetes是一個(gè)輕便的和可擴(kuò)展的開源平臺(tái),用于管理容器化應(yīng)用和服務(wù),通過(guò)Kubernetes能夠進(jìn)行應(yīng)用的自動(dòng)化部署和擴(kuò)縮容,這篇文章主要給大家介紹了關(guān)于Linux安裝Kubernetes(k8s)的相關(guān)資料,需要的朋友可以參考下2024-07-07

