云其它

关注公众号 jb51net

关闭
首页 > 网站技巧 > 服务器 > 云和虚拟化 > 云其它 > 使用kubeadm部署kubernetes1.27.1版本

使用kubeadm部署kubernetes1.27.1版本教程

作者:珂玥c

文章概述了K8s集群搭建的准备与两种部署方式:kubeadm(快速)和二进制(手动),涵盖单master配置、硬件要求、网络设置及初始化流程,适用于测试环境,提供参考经验

一、搭建前的准备

1. 搭建k8s的平台规划

单master集群:只有一个master,管理多个node节点。

多master集群:拥有多个master,管理多个node节点。高可用模式。比单master集群多一个负载均衡的步骤。

 

test环境搭建,因此采用单master集群,如后续有需要可再增加master。

2. 服务器硬件配置要求

测试环境生产环境
CPU28
内存

4G

16G
硬盘20G100G
测试环境生产环境
CPU416
内存8G

64G

硬盘

40G

500G

3. 搭建部署的方式

目前常见的有两种方式:

1)kubeadm方式

官方链接:https://kubernetes.io/docs/reference/setup-tools/kubeadm/

2)二进制方式

二、搭建流程

1. kubeadm搭建方式

大致流程:

1)创建一个master节点 kubeadm init

2)将node节点加入到当前集群中 kubeadm join <master节点的ip和端口>

3)配置网络插件和测试k8s集群

机器配置:

master: 192.10.18.102
node: 192.10.18.103

a. 准备工作,系统初始化

由于自己用的是之前配置好的旧物理机,所以跳过此流程。如果需要用虚拟机的话。要进行安装3台Centos7.x的操作系统,之后进行如下初始化:

systemctl stop firewalld
systemctl disable firewalld
sed -i 's/enforcing/disabled/' /etc/selinux/config   #永久关闭
setenforce 0  #临时关闭
swapoff -a  #临时关闭
sed -ri 's/."swap."/#&/' /etc/fstab  #永久关闭
hostnamectl set-hostname <hostname>
cat >> /etc/hosts << EOF
ip master
ip node1
ip node2
EOF
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   #生效命令
yum install ntpdate -y
ntpdate time.windows.com
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. 升级内核(根据自己情况进行选择,满足时可不升级)

cat /etc/redhat-release
uname -r
yum  --disablerepo="*"  --enablerepo="elrepo-kernel"  list  available

看到error说明没有安装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
yum  --disablerepo="*"  --enablerepo="elrepo-kernel"  list  available
yum  --enablerepo=elrepo-kernel  install  -y  kernel-lt
awk -F\' '$1=="menuentry " {print i++ " : " $2}' /boot/grub2/grub.cfg
yum install -y grub2-pc
grub2-set-default 0
vim /etc/default/grub
GRUB_DEFAULT=0  #这里从原来的saved改为0

# 运行grub2-mkconfig命令来重新创建内核配置

grub2-mkconfig -o /boot/grub2/grub.cfg
reboot
uname -r

当系统安装的内核大于3个时,会自动删除旧的内核版本或自己查看已经安装的内核后手动yum  remove -y 进行删除旧版本

yum install -y  yum-utils
yum remove kernel-tools-libs.x86_64 kernel-tools.x86_64
yum --disablerepo=\* --enablerepo=elrepo-kernel install -y kernel-lt-tools.x86_64
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,网段可以自定义,不冲突即可。

参数详解:

指定版本。(可按需修改版本)

默认使用10.96.0.0/12

此操作,等待时间较长

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. 二进制搭建流程

kube-apiserver   kube-controller-manager   kube-scheduler  etcd
kubelet   kube-proxy  docker  etcd 

总结

以上为个人经验,希望能给大家一个参考,也希望大家多多支持脚本之家。

您可能感兴趣的文章:
阅读全文