«

基于kubeadm安装k8s1.26高可用集群(上)

时间:2024-4-3 16:19     作者:Anglei     分类: 虚拟化


K8s,全称Kubernetes,是一个开源的容器编排工具,用于自动化部署、扩展和管理容器化应用程序。K8s得名于用8替代其名称中间“ubernete”这8个字符的简写方式。K8s的目标是让部署容器化的应用简单且高效,它提供了应用部署、规划、更新、维护的一种机制。传统的应用部署方式存在诸多缺点,例如应用的运行、配置、管理与当前操作系统绑定,不利于应用的升级更新/回滚等操作。而K8s通过部署容器的方式,实现了每个容器之间的隔离,每个容器拥有自己的文件系统,容器之间进程不会相互影响,能区分计算资源。相对于虚拟机,容器能快速部署,且能在不同云、不同版本操作系统间进行迁移。

K8s环境规划:

●podSubnet(pod网段) 10.244.0.0/16
●serviceSubnet(service网段): 10.96.0.0/12

环境规划:

操作系统:centos7.9
配置: 4Gib内存/4vCPU/60G硬盘

1.修改机器IP,变成静态IP

vim /etc/sysconfig/network-scripts/ifcfg-ens33文件
TYPE=Ethernet
PROXY_METHOD=none
BROWSER_ONLY=no
BOOTPROTO=static
IPADDR=192.168.1.180
NETMASK=255.255.255.0
GATEWAY=192.168.1.2
DNS1=192.168.1.2
DEFROUTE=yes
IPV4_FAILURE_FATAL=no
IPV6INIT=yes
IPV6_AUTOCONF=yes
IPV6_DEFROUTE=yes
IPV6_FAILURE_FATAL=no
IPV6_ADDR_GEN_MODE=stable-privacy
NAME=ens33
DEVICE=ens33
ONBOOT=yes

修改配置文件之后需要重启网络服务才能使配置生效,重启网络服务命令如下:

service network restart

注:/etc/sysconfig/network-scripts/ifcfg-ens33文件里的配置说明:
● NAME=ens33 #网卡名字,跟DEVICE名字保持一致即可
DEVICE=ens33 #网卡设备名,大家ip addr可看到自己的这个网卡设备名,每个人的机器可能这个名字不一样,需要写自己的
● BOOTPROTO=static #static表示静态ip地址
● ONBOOT=yes #开机自启动网络,必须是yes
● IPADDR=192.168.1.180 #ip地址,需要跟自己电脑所在网段一致
● NETMASK=255.255.255.0 #子网掩码,需要跟自己电脑所在网段一致
● GATEWAY=192.168.1.2 #网关,在自己电脑打开cmd,输入ipconfig /all可看到
● DNS1=192.168.1.2 #DNS,在自己电脑打开cmd,输入ipconfig /all可看到

各个节点执行如下命令更新yum源和操作系统:

yum update -y

在每台机器安装基础软件包:

yum install -y device-mapper-persistent-data lvm2 wget net-tools nfs-utils lrzsz gcc gcc-c++ make cmake libxml2-devel openssl-devel curl curl-devel unzip sudo ntp libaio-devel wget vim ncurses-devel autoconf automake zlib-devel  python-devel epel-release openssh-server socat  ipvsadm conntrack telnet ipvsadm

2.关闭selinux,所有k8s机器均操作

sed -i 's/SELINUX=enforcing/SELINUX=disabled/g' /etc/selinux/config
#修改selinux配置文件之后,重启机器,selinux配置才能永久生效,重启之后,登录到机器,执行如下命令:
getenforce
#如果显示Disabled说明selinux已经关闭

3.配置机器主机名

在192.168.1.180上执行如下:

hostnamectl set-hostname master1 && bash

在192.168.1.181上执行如下:

hostnamectl set-hostname node1 && bash

4 配置主机hosts文件,相互之间通过主机名互相访问

修改每台机器的/etc/hosts文件,文件最后增加如下内容:

192.168.1.180   master1
192.168.1.181   node1

修改之后的文件如下:

127.0.0.1   localhost localhost.localdomain localhost4 localhost4.localdomain4
::1         localhost localhost.localdomain localhost6 localhost6.localdomain6
192.168.1.180   master1
192.168.1.181   node1

5 配置主机之间无密码登录

#配置master1到其他机器免密登录
[root@master1 ~]# ssh-keygen  #一路回车,不输入密码
#把本地生成的密钥文件和私钥文件拷贝到远程主机
[root@master1 ~]# ssh-copy-id node1

6.关闭交换分区swap,提升性能

#永久关闭:注释swap挂载,给swap这行开头加一下注释
[root@master1 ~]# vim /etc/fstab
#/dev/mapper/centos-swap swap      swap    defaults        0 0
[root@node1 ~]# vim /etc/fstab
#/dev/mapper/centos-swap swap      swap    defaults        0 0

注:Swap是交换分区,如果机器内存不够,会使用swap分区,但是swap分区的性能较低,k8s设计的时候为了能提升性能,默认是不允许使用交换分区的。Kubeadm初始化的时候会检测swap是否关闭,如果没关闭,那就初始化失败。如果不想要关闭交换分区,安装k8s的时候可以指定--ignore-preflight-errors=Swap来解决。

使用free -h 查看。

7.修改机器内核参数

[root@master1 ~]# modprobe br_netfilter
[root@master1 ~]# 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
[root@master1 ~]# sysctl -p /etc/sysctl.d/k8s.conf
[root@node1 ~]# modprobe br_netfilter
[root@node1~]# 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
[root@ node1~]# sysctl -p /etc/sysctl.d/k8s.conf

在运行时配置内核参数
  -p   从指定的文件加载系统参数,如不指定即从/etc/sysctl.conf中加载

8.关闭firewalld防火墙

[root@master1 ~]# systemctl stop firewalld;systemctl disable firewalld
[root@node1 ~]# systemctl stop firewalld;systemctl disable firewalld

9 配置阿里云的repo源

配置国内安装docker和containerd的阿里云的repo源

[root@master1 ~]#yum install yum-utils -y
[root@master1 ~]# yum-config-manager --add-repo http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
[root@node1 ~]#yum install yum-utils -y
[root@node1 ~]# yum-config-manager --add-repo http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo

10.配置安装k8s组件需要的阿里云的repo源

[root@master1 ~]#cat >  /etc/yum.repos.d/kubernetes.repo <<EOF
[kubernetes]
name=Kubernetes
baseurl=https://mirrors.aliyun.com/kubernetes/yum/repos/kubernetes-el7-x86_64/
enabled=1
gpgcheck=0
EOF
[root@node1 ~]#cat >  /etc/yum.repos.d/kubernetes.repo <<EOF
[kubernetes]
name=Kubernetes
baseurl=https://mirrors.aliyun.com/kubernetes/yum/repos/kubernetes-el7-x86_64/
enabled=1
gpgcheck=0
EOF

11.配置时间同步

在master1上执行如下:

#安装ntpdate命令
[root@master1 ~]# yum install ntpdate -y
#跟网络时间做同步
[root@master1 ~]# ntpdate cn.pool.ntp.org
#把时间同步做成计划任务
[root@master1 ~]# crontab -e
* *  * * * /usr/sbin/ntpdate   cn.pool.ntp.org
#重启crond服务
[root@master1 ~]# systemctl restart crond

在node1上执行如下:

#安装ntpdate命令
[root@node1 ~]# yum install ntpdate -y
#跟网络时间做同步
[root@node1 ~]#ntpdate cn.pool.ntp.org
#把时间同步做成计划任务
[root@node1 ~]#crontab -e
* * * * * /usr/sbin/ntpdate   cn.pool.ntp.org
#重启crond服务
[root@node1 ~]# systemctl restart crond

12.安装基础软件包

[root@master1 ~]# yum install -y device-mapper-persistent-data lvm2 wget net-tools nfs-utils lrzsz gcc gcc-c++ make cmake libxml2-devel openssl-devel curl curl-devel unzip sudo ntp libaio-devel wget vim ncurses-devel autoconf automake zlib-devel  python-devel epel-release openssh-server socat  ipvsadm conntrack telnet ipvsadm
[root@node1 ~]# yum install -y device-mapper-persistent-data lvm2 wget net-tools nfs-utils lrzsz gcc gcc-c++ make cmake libxml2-devel openssl-devel curl curl-devel unzip sudo ntp libaio-devel wget vim ncurses-devel autoconf automake zlib-devel  python-devel epel-release openssh-server socat  ipvsadm conntrack telnet ipvsadm

本文完结,相关标签: k8s kubernetes kubeadm

 版权所有:Anglei
 文章标题:基于kubeadm安装k8s1.26高可用集群(上)
 除非注明,本站文章如未特殊说明均为 MAXADA社区知识库 原创,且版权所有,请勿用于任何商业用途。

推荐阅读:

看完后感想如何?

路过(0)

雷人(0)

握手(1)

鲜花(0)

鸡蛋(0)
分享到: