使用 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节点。

使用 kubeadm 部署 kubernetes 1.27.1 版本_第1张图片

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

 使用 kubeadm 部署 kubernetes 1.27.1 版本_第2张图片

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

        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 

5)只在master添加hosts

cat >> /etc/hosts << EOF
ip master
ip node1
ip node2
EOF

6)将桥接的ipv4流量传递到iptables的链,配置内核参数和优化 

cat > /etc/sysctl.d/k8s.conf <

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 <

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 <
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. 部署集群网络


 


总结

你可能感兴趣的:(k8s相关内容,kubernetes,运维,容器)