基于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
推荐阅读:
![]() 路过(0) |
![]() 雷人(0) |
![]() 握手(1) |
![]() 鲜花(0) |
![]() 鸡蛋(0) |