kubeadm搭建单master-多node节点k8s集群

kubeadm搭建单master-多node节点k8s集群 一、环境规划 1.1、实验环境规划 K8S集群角色 Ip 主机名 安装的组件
控制节点   192.168.40.180   k8s-master1   apiserver、controller-manager、scheduler、etcd、docker、calico、kube-proxy  
工作节点   192.168.40.181   k8s-node1   kubelet、kube-proxy、docker、calico、coredns  
工作节点   192.168.40.182   k8s-node2   kubelet、kube-proxy、docker、calico、coredns  

实验环境规划:

操作系统:centos7.6

配置: 4Gib内存/4vCPU/100G硬盘

网络:Vmware NAT模式

k8s网络环境规划:

k8s版本:v1.20.6

Pod网段:10.244.0.0/16

Service网段:10.10.0.0/16

1.2、节点初始化

1)配置静态ip地址

# 把虚拟机或者物理机配置成静态ip地址,这样机器重新启动后ip地址也不会发生改变。以master1主机修改静态IP为例 ~]# cat /etc/sysconfig/network-scripts/ifcfg-eth0 TYPE=Ethernet BOOTPROTO=none NAME=eth0 DEVICE=eth0 ONBOOT=yes IPADDR=192.168.40.180 # 按实验规划修改 NETMASK=255.255.255.0 GATEWAY=192.168.40.2 DNS1=223.5.5.5 # 重启网络 ~]# systemctl restart network # 测试网络连通信 ~]# ping baidu.com PING baidu.com (39.156.69.79) 56(84) bytes of data. 64 bytes from 39.156.69.79 (39.156.69.79): icmp_seq=1 ttl=128 time=63.2 ms 64 bytes from 39.156.69.79 (39.156.69.79): icmp_seq=2 ttl=128 time=47.3 ms

2)配置主机名

~]# hostnamectl set-hostname <主机名> && bash

3)配置hosts文件

# 所有机器 cat >> /etc/hosts << EOF 192.168.40.180 k8s-master1 192.168.40.181 k8s-node1 192.168.40.182 k8s-node2 EOF # 测试 ~]# ping k8s-master1 PING k8s-master1 (192.168.40.180) 56(84) bytes of data. 64 bytes from k8s-master1 (192.168.40.180): icmp_seq=1 ttl=64 time=0.015 ms 64 bytes from k8s-master1 (192.168.40.180): icmp_seq=2 ttl=64 time=0.047 ms

4)配置主机之间无密码登录

# 生成ssh 密钥对,一路回车,不输入密码 ssh-keygen -t rsa # 把本地的ssh公钥文件安装到远程主机对应的账户 ssh-copy-id -i .ssh/id_rsa.pub k8s-master1 ssh-copy-id -i .ssh/id_rsa.pub k8s-node1 ssh-copy-id -i .ssh/id_rsa.pub k8s-node2

5)关闭firewalld防火墙

systemctl stop firewalld && systemctl disable firewalld

6)关闭selinux

# 临时关闭 setenforce 0 # 永久关闭 sed -i \'s/SELINUX=enforcing/SELINUX=disabled/g\' /etc/selinux/config # 查看 getenforce

7)关闭交换分区swap

#临时关闭 swapoff -a #永久关闭:注释swap挂载,给swap开头加一下注释 sed -ri \'s/.*swap.*/#&/\' /etc/fstab #注意:如果是克隆的虚拟机,需要删除UUID一行

8)修改内核参数

# 1、加载br_netfilter模块 modprobe br_netfilter # 2、验证模块是否加载成功 lsmod |grep br_netfilter # 3、修改内核参数 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 # 4、使刚才修改的内核参数生效 sysctl -p /etc/sysctl.d/k8s.conf

9)配置阿里云repo源

# 备份 mv /etc/yum.repos.d/CentOS-Base.repo /etc/yum.repos.d/CentOS-Base.repo.backup # 下载新的CentOS-Base.repo wget -O /etc/yum.repos.d/CentOS-Base.repo # 生成缓存 yum clean all && yum makecache

10)配置时间同步

# 安装ntpdate命令, yum install ntpdate -y # 跟网络源做同步 ntpdate cn.pool.ntp.org # 把时间同步做成计划任务 crontab -e * */1 * * * /usr/sbin/ntpdate cn.pool.ntp.org # 重启crond服务 service crond restart

11)安装iptables

# 安装iptables yum install iptables-services -y # 禁用iptables service iptables stop && systemctl disable iptables # 清空防火墙规则 iptables -F

12)开启ipvs

不开启ipvs将会使用iptables进行数据包转发,但是效率低,所以官网推荐需要开通ipvs。

# 创建ipvs.modules文件 ~]# vim /etc/sysconfig/modules/ipvs.modules #!/bin/bash ipvs_modules="ip_vs ip_vs_lc ip_vs_wlc ip_vs_rr ip_vs_wrr ip_vs_lblc ip_vs_lblcr ip_vs_dh ip_vs_sh ip_vs_nq ip_vs_sed ip_vs_ftp nf_conntrack" for kernel_module in ${ipvs_modules}; do /sbin/modinfo -F filename ${kernel_module} > /dev/null 2>&1 if [ 0 -eq 0 ]; then /sbin/modprobe ${kernel_module} fi done # 执行脚本 ~]# chmod 755 /etc/sysconfig/modules/ipvs.modules && bash /etc/sysconfig/modules/ipvs.modules && lsmod | grep ip_vs

13)安装基础软件包

~]# yum install -y yum-utils 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 ntpdate telnet rsync

内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:https://www.heiqu.com/zgzwdw.html