不断学习 · 持续进步 Skip to main content

基础环境搭建


k8s 环境规划:

Pod 网段: 10.0.0.0/16
Service 网段: 10.255.0.0/16

实验环境规划:

操作系统:centos7.9
配置: 4Gib 内存/4vCPU/100G 硬盘
网络:NAT
开启虚拟机的虚拟化

K8S 集群角色 Ip 主机名 安装的组件
控制节点 172.16.40.11 master1 apiserver、controller-manager、scheduler、etcd、docker、keepalived、nginx
控制节点 172.16.40.12 master2 apiserver、controller-manager、scheduler、etcd、docker、keepalived、nginx
控制节点 172.16.40.13 master3 apiserver、controller-manager、scheduler、etcd、docker
工作节点 172.16.40.101 node1 kubelet、kube-proxy、docker、calico、coredns
Vip 172.16.40.201 ---- ----




网卡配置文件

# /etc/sysconfig/network-scripts/ifcfg-eth0
TYPE=Ethernet
PROXY_METHOD=none
BROWSER_ONLY=no
BOOTPROTO=static
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=eth0
UUID=5f1ab3c1-7560-4a30-9b41-8cf8f32fe185
DEVICE=eth0
ONBOOT=yes
IPADDR=172.16.40.11
NETMASK=255.255.255.0
#GATEWAY=172.16.40.2
DNS1=114.114.114.114


hosts文件

# /etc/hosts
172.16.40.11 master1
172.16.40.12 master2
172.16.40.13 master3
172.16.40.101 node1


配置 SSH 免密登录 masters、nodes

ssh-keygen -t rsa # 生成rsa密钥对

ssh-copy-id -i .ssh/id_rsa.pub master1 # 免密登录master1
ssh-copy-id -i .ssh/id_rsa.pub master2 # 免密登录master2
ssh-copy-id -i .ssh/id_rsa.pub master3 # 免密登录master3
ssh-copy-id -i .ssh/id_rsa.pub node1 # 免密登录node1


关闭防火墙自启动

systemctl stop firewalld && systemctl disable firewalld && systemctl status firewalld


关闭selinux

#/etc/selinux/config
sed -i 's/SELINUX=enforcing/SELINUX=disabled/g' /etc/selinux/config
setenforce 0


关闭交换分区

# 修改 /etc/fstab
sed -i '/swap/d' /etc/fstab
swapoff -a


修改内核参数

modprobe br_netfilter # 加载模块
lsmod | grep br_netfilter

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

sysctl -p /etc/sysctl.d/k8s.conf


加载内核模块

modprobe br_netfilter
modprobe overlay

开机自动加载内裤模块

cat > /etc/modules-load.d/k8s.conf << EOF
overlay
br_netfilter
EOF

配置阿里云 repo 源

rm -rf /etc/yum.repos.d/*

curl -o /etc/yum.repos.d/CentOS-Base.repo https://mirrors.aliyun.com/repo/Centos-7.repo

yum install yum-utils -y

yum-config-manager --add-repo http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo

yum clean all && yum makecache


时间同步

yum install chrony -y

sed -i '/^server/d' /etc/chrony.conf
sed -i '1s;^;allow 172.16.40.0/24\n;' /etc/chrony.conf
sed -i '1s;^;local stratum 10\n;' /etc/chrony.conf
sed -i '1s;^;server master1 iburst\n;' /etc/chrony.conf

systemctl enable chronyd
systemctl restart chronyd
systemctl status chronyd
chronyc sources


安装 iptables
yum install iptables-services -y
systemctl stop iptables && systemctl disable iptables
iptables -F


开启 ipvs

#把 ipvs.modules 上传到 /etc/sysconfig/modules/ 目录下
chmod 755 /etc/sysconfig/modules/ipvs.modules && bash /etc/sysconfig/modules/ipvs.modules && lsmod | grep ip_vs


安装基础软件包

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


安装 docker-ce

yum install docker-ce docker-ce-cli containerd.io -y
systemctl start docker && systemctl enable docker.service && systemctl status docker.service


配置docker镜像加速

cat > /etc/docker/daemon.json <<EOF
{
  "registry-mirrors": ["https://dockerhub.icu"],
  "exec-opts": ["native.cgroupdriver=systemd"]
}
EOF

systemctl daemon-reload && systemctl restart docker && systemctl status docker