目录
二进制搭建 Kubernetes v1.20
k8s集群master01:192.168.9.112 kube-apiserver kube-controller-manager kube-scheduler etcd
k8s集群master02:192.168.9.116
k8s集群node01:192.168.9.113 kubelet kube-proxy docker
k8s集群node02:192.168.9.111
etcd集群节点1:192.168.80.112 etcd
etcd集群节点2:192.168.80.113
etcd集群节点3:192.168.80.111
负载均衡nginx+keepalive01(master):192.168.9.114
负载均衡nginx+keepalive02(backup):192.168.9.115
1.操作系统初始化配置
所有服务器操作
192.168.9.112 master01
192.168.9.116 master02
192.168.9.113 node01
192.168.9.111 node02
#关闭防火墙、关闭selinux
systemctl disable --now firewalld
iptables -F && iptables -t nat -F && iptables -t mangle -F && iptables -X
setenforce 0
vim /etc/selinux/config
SELINUX=disabled
#关闭swap
swapoff -a
sed -ri 's/.*swap.*/#&/' /etc/fstab
#根据规划设置主机名
hostnamectl set-hostname master01
hostnamectl set-hostname master02
hostnamectl set-hostname node01
hostnamectl set-hostname node02
在master添加hosts
192.168.9.112 master01
192.168.9.116 master02
192.168.9.113 node01
192.168.9.111 node02
#调整内核参数 所有服务器操作
cat > /etc/sysctl.d/k8s.conf << EOF
#开启网桥模式,可将网桥的流量传递给iptables链
net.bridge.bridge-nf-call-ip6tables = 1
net.bridge.bridge-nf-call-iptables = 1
#关闭ipv6协议
net.ipv6.conf.all.disable_ipv6=1
net.ipv4.ip_forward=1
EOF
sysctl --system #加载
#时间同步 所有服务器操作
vim /etc/chrony.conf
#server 0.centos.pool.ntp.org iburst
#server 1.centos.pool.ntp.org iburst
#server 2.centos.pool.ntp.org iburst
#server 3.centos.pool.ntp.org iburst
server ntp1.aliyun.com iburst
systemctl restart chronyd.service
chronyc -a makestep
2.升级Linux内核
vim /etc/yum.repos.d/elrepo.repo 所有服务器操作
[elrepo]
name=elrepo
baseurl=https://mirrors.aliyun.com/elrepo/archive/kernel/el7/x86_64
gpgcheck=0
enabled=1
cd /etc/yum.repos.d/
mv local.repo repo.bak/
导入阿里云在线源
yum clean all 所有服务器操作
yum install -y kernel-lt kernel-lt-devel 集群升级内核
#查看内核序号
awk -F\' '$1=="menuentry " {print i++ " : " $2}' /etc/grub2.cfg
#设置默认启动内核
grub2-set-default 0
#重启操作系统
reboot
#查看生效版本
hostnamectl
3.部署docker引擎
所有 node 节点部署docker引擎
yum-config-manager --add-repo https://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
yum install -y docker-ce docker-ce-cli containerd.io
cat > /etc/docker/daemon.json <<EOF
{
"registry-mirrors": [镜像加速器地址],
"exec-opts": ["native.cgroupdriver=systemd"],
"log-driver": "json-file",
"log-opts": {
"max-size": "500m", "max-file": "3"
}
}
EOF
systemctl enable --now docker
docker info
4.部署etcd集群
etcd是一个分布式键值存储系统,用于在分布式系统中保存配置信息、元数据以及关键的共享状态。它是一个开源项目,最初由CoreOS开发并维护,现在由CNCF托管。etcd的设计目标是提供可靠的分布式存储,以支持分布式系统的一致性和高可用性。
关键特性:
●分布式存储:etcd的数据存储是分布式的,可以跨多个节点进行分布,确保高可用性和可扩展性。
●强致性:etcd提供强一致性的保证,确保在集群中的所有节点都能看到相同的数据视图。
●轻量级:etcd采用轻量级的Raft一致性算法,以确保集群中的节点之间达成一致,同时保持相对较低的性能开销。
●API支持:etcd提供简单而强大的HTTP+JSON API,使得开发人员可以轻松地与其进行交互,并集成到各种应用和工具中。
●Watch机制:etcd支持Watch机制,允许客户端监视特定键的变化,并在数据发生变更时得到通知。
●安全性:etcd支持SSL/TLS加密,以保障数据在传输过程中的安全性,并提供基于角色的访问控制。
应用场景:
●配置管理: