实验环境规划
三个节点:2G内存;2核cpu
一.集群规划:
Master: 主机名:k8s-master1 IP:192.168.109.137 worker-node1: 主机名:k8s-node1 IP:192.168.109.138 worker-node2: 主机名:k8s-node2 IP:192.168.109.139 k8s版本:1.16 安装方式:离线-二进制 操作系统版本:centos7.7
二.初始化服务器
1.关闭防火墙
systemctl stop firewalld && systemctl disable firewalld
2.关闭selinux
setenforce 0
sed -i '/SELINUX/s/enforcing/disabled/' /etc/selinux/config
3.配置主机名
hostnamectl set-hostname 主机名
4.配置名称解析
vim /etc/hosts
5.配置时间同步
选择一个节点作为服务端,其他未客户端 master1为服务端 1.配置 k8s-master1 yum install chrony -y vim /etc/chrony.conf 修改上游服务器:这里可以以自己为上游:如:server 127.127.1.0 iburst 修改允许哪个网络来访问:如:allow 192.168.109.0/24 修改度量值:local stratum 10 启动:systemctl start chronyd && systemctl enable chronyd && 查看端口(udp):ss -unl | grep 123 2.配置客户端 k8s-node1 和 k8s-node2 yum install chrony -y vim /etc/chrony.conf 只需修改上游服务器:如:server 192.168.109.137 iburst 启动:systemctl restart chronyd && systemctl enable chronyd 查看同步信息:chronyc sources
服务端:
客户端:
6.关闭交换分区
swapoff -a && vim /etc/fstab 注释:/dev/mapper/centos-swap swap && 检查查看 free -m
三.部署 Etcd
1.安装证书生成工具cfssl(这里我选择在master上进行证书的生成)
1.安装证书生成工具cfssl(这里我选择在master上进行证书的生成)
cd ~ && mkdir TLS && cd ~/TLS wget https://pkg.cfssl.org/R1.2/cfssl_linux-amd64 wget https://pkg.cfssl.org/R1.2/cfssljson_linux-amd64 wget https://pkg.cfssl.org/R1.2/cfssl-certinfo_linux-amd64 chmod +x cfssl_linux-amd64 cfssljson_linux-amd64 cfssl-certinfo_linux-amd64 mv cfssl_linux-amd64 /usr/local/bin/cfssl mv cfssljson_linux-amd64 /usr/local/bin/cfssljson mv cfssl-certinfo_linux-amd64 /usr/bin/cfssl-certinfo
2.自建CA(证书颁发机构)
生成模版json
cd /root/TLS && mkdir etcd && cd etcd
生成证书模版,并修改模板
cfssl print-defaults config > ca-config.json
vim ca-config.json
{ "signing": { "default": { "expiry": "876000h" }, "profiles": { "etcd": { "usages": [ "signing", "key encipherment", "server auth", "client auth" ], "expiry": "876000h" } } } }
"字段说明" "ca-config.json":可以定义多个 profiles,分别指定不同的过期时间、使用场景等参数;后续在签名证书时使用某个 profile; "signing":表示该证书可用于签名其它证书;生成的 ca.pem 证书中 CA=TRUE; "server auth":表示client可以用该 CA 对server提供的证书进行验证; "client auth":表示server可以用该CA对client提供的证书进行验证;
cfssl print-defaults csr > ca-csr.json 或直接编写ca-csr.json
vim ca-csr.json
{ "CN": "etcd", "key": { "algo": "rsa", "size": 2048 }, "names": [ { "C": "CN", "ST": "ZheJiang", "L": "HangZhou", "O": "etcd", "OU": "System" } ] }
"CN":Common Name,etcd 从证书中提取该字段作为请求的用户名 (User Name);浏览器使用该字段验证网站是否合法; "O":Organization,etcd 从证书中提取该字段作为请求用户所属的组 (Group); 这两个参数在后面的kubernetes启用RBAC模式中很重要,因为需要设置kubelet、admin等角色权限,那么在配置证书的时候就必须配置对了,具体后面在部署kubernetes的时候会进行讲解。 "在etcd这两个参数没太大的重要意义,跟着配置就好。"
cfssl gencert -initca ca-csr.json | cfssljson -bare ca
3.用自建的CA给etcd主机颁发证书
vim etcd-csr.json
{ "CN": "etcd", "hosts": [ "192.168.109.137", "192.168.109.138", "192.168.109.139" ], "key": { "algo": "rsa", "size": 2048 }, "names": [ { "C": "CN", "ST": "ZheJiang", "L": "HangZhou", "O": "etcd", "OU": "System" } ] }
cfssl gencert -ca=ca.pem -ca-key=ca-key.pem -config=ca-config.json -profile=etcd etcd-csr.json | cfssljson -bare etcd
2.安装etcd
二进制包下载地址
https://github.com/etcd-io/etcd/releases
curl -L https://storage.googleapis.com/etcd/v3.4.7/etcd-v3.4.7-linux-amd64.tar.gz -o /root/k8s/etcd/etcd-v3.4.7-linux-amd64.tar.gz