使用 kubeadm 部署 kubernetes 1.27.1 版本

目录

前言

一、搭建前的准备

1. 搭建k8s的平台规划

2. 服务器硬件配置要求

3. 搭建部署的方式

二、搭建流程

1. kubeadm搭建方式

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

b. 所有节点安装docker  kubeadm  kubelet kubectl

扫描二维码关注公众号,回复: 15220438 查看本文章

c. 部署kubernetes master

d. 添加node节点

e. 安装网络插件,联网

f. 集群测试

总结


前言

比起君子讷于言而敏于行,我更喜欢君子善于言且敏于行。


一、搭建前的准备

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 

        g. 部署集群网络


 


总结

猜你喜欢

转载自blog.csdn.net/m0_59029800/article/details/130215553