1.集群环境规划:
操作系统:centos7.9
配置: 4Gib内存/4vCPU/60G硬盘
网络:NAT
开启虚拟机的虚拟化:
podSubnet(pod网段) 10.244.0.0/16
serviceSubnet(service网段): 10.96.0.0/16
物理机网段:192.168.40.0/24
K8S集群角色 |
IP |
主机名 |
安装的组件 |
控制节点 |
192.168.40.180 |
jwpmaster |
Apiserver,controller-manager,scheduler,etcd,kube-proxy,docker,calico |
工作节点 |
192.168.40.181 |
jwpnode1 |
Kubelet,kube-proxy,docker,calico,coredns |
工作节点 |
192.168.40.182 |
jwpnode2 |
Kubelet,kube-proxy,docker,calico,coredns |
2.初始化安装k8s集群的机器配置
2.1 修改机器IP,变成静态IP
vim /etc/sysconfig/network-scripts/ifcfg-ens33文件
TYPE=Ethernet PROXY_METHOD=none BROWSER_ONLY=no 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名字保持一致即可 DEVICE=ens33 #网卡设备名,大家ip addr可看到自己的这个网卡设备名,每个人的机器可能这个名字不一样,需要写自己的 ONBOOT=yes #开机自启动网络,必须是yes BOOTPROTO=static #static表示静态ip地址 IPADDR=192.168.40.180 #ip地址,需要跟自己电脑所在网段一致 NETMASK=255.255.255.0 #子网掩码,需要跟自己电脑所在网段一致 GATEWAY=192.168.40.2 #网关,在自己电脑打开cmd,输入ipconfig /all可看到 DNS1=192.168.40.2 #DNS,在自己电脑打开cmd,输入ipconfig /all可看到 |
#修改配置文件之后需要重启网络服务才能使配置生效,重启网络服务命令如下:
service network restart
2.2.关闭selinux
分别在master、node1、node2上执行下面的命令:
sed -i 's/SELINUX=enforcing/SELINUX=disabled/g' /etc/selinux/config
#修改selinux配置文件之后,重启机器,selinux配置才能永久生效
reboot -f
查看状态:getenforce
Disabled
#显示Disabled说明selinux已经关闭
2.3.配置机器主机名
在192.168.40.180上执行如下:
[root@jiawap ~]# hostnamectl set-hostname jwpmaster && bash
在192.168.40.181上执行如下:
[root@jiawap ~]# hostnamectl set-hostname jwpnode1 && bash
在192.168.40.182上执行如下:
[root@jiawap ~]# hostnamectl set-hostname jwpnode2 && bash
2.4.升级操作系统
k8s集群每台机器都操作:
[root@localhost ~]# yum update -y
2.5.配置主机hosts文件
相互之间通过主机名互相访问
修改每台机器的/etc/hosts文件,增加如下三行:
192.168.40.180 jwpmaster
192.168.40.181 jwpnode1
192.168.40.182 jwpnode2
修改之后内容如下:
127.0.0.1 localhost localhost.localdomain localhost4 localhost4.localdomain4
::1 localhost localhost.localdomain localhost6 localhost6.localdomain6
192.168.40.180 jwpmaster
192.168.40.181 jwpnode1
192.168.40.182 jwpnode2
2.6.配置主机之间无密码登录
2.6.1.设置master机器
[root@jwpmaster~]# ssh-keygen
#一路回车,不输入密码
把本地生成的密钥文件和私钥文件拷贝到远程主机
[root@jwpmaster~]# ssh-copy-id jwpmaster
[root@jwpmaster ~]# ssh-copy-id jwpnode1
[root@jwpmaster ~]# ssh-copy-id jwpnode2
2.6.2.设置node1机器
[root@jwpnode1 ~]# ssh-keygen
#一路回车,不输入密码
把本地生成的密钥文件和私钥文件拷贝到远程主机
[root@jwpnode1 ~]# ssh-copy-id jwpmaster
[root@jwpnode1 ~]# ssh-copy-id jwpnode1
[root@jwpnode1 ~]# ssh-copy-id jwpnode2
2.6.3.设置node2机器
[root@jwpnode2 ~]# ssh-keygen
#一路回车,不输入密码
把本地生成的密钥文件和私钥文件拷贝到远程主机
[root@jwpnode2 ~]# ssh-copy-id jwpmaster
[root@jwpnode2 ~]# ssh-copy-id jwpnode1
[root@jwpnode2 ~]# ssh-copy-id jwpnode2
2.7.关闭交换分区swap,提升性能
2.7.1.临时关闭
[root@jwpmaster ~]# swapoff -a
[root@jwpnode1 ~]# swapoff -a
[root@jwpnode2 ~]# swapoff -a
2.7.2.永久关闭
注释swap挂载,给swap这行开头加一下注释
[root@jwpmaster ~]# vim /etc/fstab
#/dev/mapper/centos-swap swap swap defaults 0 0
[root@ jwpnode1 ~]# vim /etc/fstab
#/dev/mapper/centos-swap swap swap defaults 0 0
[root@ jwpnode2 ~]# vim /etc/fstab
#给swap这行开头加一下注释#
#/dev/mapper/centos-swap swap swap defaults 0 0
2.7.3.为什么要关闭swap交换分区?
Swap是交换分区,如果机器内存不够,会使用swap分区,但是swap分区的性能较低,k8s设计的时候为了能提升性能,默认是不允许使用交换分区的。Kubeadm初始化的时候会检测swap是否关闭,如果没关闭,那就初始化失败。如果不想要关闭交换分区,安装k8s的时候可以指定--ignore-preflight-errors=Swap来解决。
2.8.修改机器内核参数
[root@jwpmaster ~]# modpr |