目录
前言
一、搭建前的准备
1. 搭建k8s的平台规划
2. 服务器硬件配置要求
3. 搭建部署的方式
二、搭建流程
1. kubeadm搭建方式
a. 准备工作,系统初始化
c. 设置一下ipv4,否则会失败(此处为坑,不设置无法初始化成功)
d. 安装containerd
e. 安装kubectl、kubelet、kubeadm
f. master节点进行初始化操作
2. 二进制搭建流程
a. 创建多台虚拟机,安装linux操作系统
b. 操作系统初始化(各种关关关)
c. 为etcd和apiserver自签证书(相当于门禁卡,保证互通)
d. 部署etcd集群
e. 部署master组件
f. 部署node组件
g. 部署集群网络
总结
前言
比起君子讷于言而敏于行,我更喜欢君子善于言且敏于行。
一、搭建前的准备
1. 搭建k8s的平台规划
单master集群:只有一个master,管理多个node节点。
多master集群:拥有多个master,管理多个node节点。高可用模式。比单master集群多一个负载均衡的步骤。
test环境搭建,因此采用单master集群,如后续有需要可再增加master。
2. 服务器硬件配置要求
master节点:
测试环境 | 生产环境 | |
CPU | 2 | 8 |
内存 | 4G |
16G |
硬盘 | 20G | 100G |
node节点:
测试环境 | 生产环境 | |
CPU | 4 | 16 |
内存 | 8G | 64G |
硬盘 | 40G |
500G |
3. 搭建部署的方式
目前常见的有两种方式:
1)kubeadm方式
kubeadm是k8s的一个部署工具,部署方式比较简单。只需要用到两个命令,kubeadm init(初始化)和 kubeadm join(将node节点加入到master中)。可以快速部署k8s集群。优点是快速,无需额外自己处理。比较常见且节约时间
官方链接:https://kubernetes.io/docs/reference/setup-tools/kubeadm/
2)二进制方式
从 github 下载二进制包,手动部署每个组件,过程比较麻烦。优点是,遇到问题后可以精准定位,有利于后续维护。毕竟是自己一步一步操作的,更清楚里面的弯弯绕绕~
二、搭建流程
1. kubeadm搭建方式
大致流程:
1)创建一个master节点 kubeadm init
2)将node节点加入到当前集群中 kubeadm join <master节点的ip和端口>
3)配置网络插件和测试k8s集群
机器配置:
-- 准备了一台master,一台node。硬件配置CPU 2核,内存251G,硬盘500G
-- 机器之间可以互相ping通,操作系统为CentOS7
-- 禁止swap分区
-- 可以拉取镜像
master: 192.10.18.102
node: 192.10.18.103
a. 准备工作,系统初始化
由于自己用的是之前配置好的旧物理机,所以跳过此流程。如果需要用虚拟机的话。要进行安装3台Centos7.x的操作系统,之后进行如下初始化:
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的链,配置内核参数和优化
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
###注!!!若此处失败,可能是因为内核版本低导致的,可升级内核后,再执行此命令#####
#确认内核模块加载成功
lsmod |egrep "ip_vs|nf_conntrack_ipv4"
b. 升级内核(根据自己情况进行选择,满足时可不升级)
1)查看系统版本
cat /etc/redhat-release
2)查看当前内核版本
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,最新主线稳定版为ml
yum --disablerepo="*" --enablerepo="elrepo-kernel" list available
6)安装最新的内核
yum --enablerepo=elrepo-kernel install -y kernel-lt
7)查看可用内核版本及启动顺序
awk -F\' '$1=="menuentry " {print i++ " : " $2}' /boot/grub2/grub.cfg
8)安装辅助工具(非必须,有些系统自带该工具):grub2-pc
yum install -y grub2-pc
9)设置内核默认启动顺序
grub2-set-default 0
vim /etc/default/grub
GRUB_DEFAULT=0 #这里从原来的saved改为0
10)生成grub配置文件
# 运行grub2-mkconfig命令来重新创建内核配置
grub2-mkconfig -o /boot/grub2/grub.cfg
11)重启机器
reboot
12)查看内核版本是否正确
uname -r
13)安装 yum-utils 工具
当系统安装的内核大于3个时,会自动删除旧的内核版本或自己查看已经安装的内核后手动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)查看已安装内核
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)创建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节点进行初始化操作
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的网段为: 10.244.0.0/16,api server地址为Master本机IP,网段可以自定义,不冲突即可。
参数详解:
-- 指定版本。(可按需修改版本)
-- 设置了apiserver,即当前节点的ip。
-- 指定镜像仓库地址,拉取镜像。
-- service-cidr是svc网络 kubectl get svc #查看svc信息
默认使用10.96.0.0/12
-- pod-network-cidr 是pod网络 kubectl get pods -o wide #查看pod网络信息
-- k8s内部的pod节点之间网络可以使用的IP段,不能和service-cidr写一样,默认使用10.244.0.0/16
此操作,等待时间较长
3)成功返回信息,执行返回内容即可
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节点执行
mkdir -p $HOME/.kube
sudo cp -i /etc/kubernetes/admin.conf $HOME/.kube/config
sudo chown $(id -u):$(id -g) $HOME/.kube/config
node节点执行
kubeadm join IP:6443 --token maod8l.w4g2cu2tl4er9gil \
--discovery-token-ca-cert-hash sha256:xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
2. 二进制搭建流程
a. 创建多台虚拟机,安装linux操作系统
b. 操作系统初始化(各种关关关)
c. 为etcd和apiserver自签证书(相当于门禁卡,保证互通)
d. 部署etcd集群
e. 部署master组件
kube-apiserver kube-controller-manager kube-scheduler etcd
f. 部署node组件
kubelet kube-proxy docker etcd 文章来源:https://www.toymoban.com/news/detail-458215.html
g. 部署集群网络
文章来源地址https://www.toymoban.com/news/detail-458215.html
总结
到了这里,关于使用 kubeadm 部署 kubernetes 1.27.1 版本的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!