使用 kubeadm 部署 kubernetes 1.27.1 版本

目录

前言

一、搭建前的准备

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节点:

测试环境生产环境
CPU28
内存

4G

16G
硬盘20G100G

node节点:

测试环境生产环境
CPU416
内存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. 部署集群网络


 


总结

  • 14
    点赞
  • 21
    收藏
    觉得还不错? 一键收藏
  • 3
    评论
感谢您的提问。以下是CentOS 7.9使用kubeadm安装Kubernetes 1.27.1的详细步骤: 1. 在所有节点上升级操作系统 ``` sudo yum upgrade -y ``` 2. 配置防火墙规则 按照Kubernetes官网的要求,关闭防火墙或者开放必需的端口。以下是关闭防火墙的方法: ``` sudo systemctl stop firewalld sudo systemctl disable firewalld ``` 3. 添加Kubernetes仓库 在所有节点上安装必需的工具: ``` sudo yum install -y yum-utils device-mapper-persistent-data lvm2 ``` 然后添加Kubernetes仓库: ``` sudo yum-config-manager --add-repo https://mirrors.aliyun.com/kubernetes/yum/repos/kubernetes-el7-x86_64/ ``` 4. 安装Docker和Kubernetes 在所有节点上安装Docker和Kubernetes: ``` sudo yum install -y kubelet kubeadm kubectl docker-ce docker-ce-cli containerd.io ``` 配置Docker Cgroup Driver为systemd: ``` sudo mkdir /etc/docker/ sudo tee /etc/docker/daemon.json <<-'EOF' { "exec-opts": ["native.cgroupdriver=systemd"], "registry-mirrors": ["https://mirror.ccs.tencentyun.com"] } EOF sudo systemctl daemon-reload sudo systemctl restart docker ``` 5. 初始化Master节点 在Master节点上执行以下命令初始化: ``` sudo kubeadm init --pod-network-cidr=10.244.0.0/16 ``` 其中--pod-network-cidr参数是指定Pod网络的CIDR地址。 命令完成后,将提示您保存Kubernetes集群加入命令。 执行以下命令以配置kubectl: ``` mkdir -p $HOME/.kube sudo cp -i /etc/kubernetes/admin.conf $HOME/.kube/config sudo chown $(id -u):$(id -g) $HOME/.kube/config ``` 6. 安装Pod网络插件 在Master节点上执行以下命令以安装Flannel网络插件: ``` kubectl apply -f https://raw.githubusercontent.com/coreos/flannel/master/Documentation/kube-flannel.yml ``` 7. 加入Node节点 将节点加入集群的命令已输出在初始化Master节点的命令中。 在每个Node节点上,执行相应的命令即可加入集群。 8. 验证集群状态 在Master节点上执行以下命令以验证集群状态: ``` kubectl get nodes ``` 如果所有节点都处于Ready状态,则表示集群已经正常工作。 以上就是CentOS 7.9使用kubeadm安装Kubernetes 1.27.1的详细步骤。希望对您有帮助!

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值