k8s集群搭建(二进制方式)
k8s集群搭建(二进制方式)1、安装要求2、准备环境3、操作系统初始化配置4、部署 Etcd 集群4.1 准备 cfssl 证书生成工具4.2 生成 Etcd 证书1、安装要求在开始之前,部署Kubernetes集群机器需要满足以下几个条件:一台或多台机器,操作系统 CentOS7.x-86_x64硬件配置:2GB或更多RAM,2个CPU或更多CPU,硬盘30GB或更多可以访问外网,需要拉取镜像,
k8s集群搭建(二进制方式)
1、安装要求
在开始之前,部署Kubernetes集群机器需要满足以下几个条件:
- 一台或多台机器,操作系统 CentOS7.x-86_x64
- 硬件配置:2GB或更多RAM,2个CPU或更多CPU,硬盘30GB或更多
- 可以访问外网,需要拉取镜像,如果服务器不能上网,需要提前下载镜像并导入节点
- 禁止swap分区
2、准备环境
这里实验环境只创建一个node节点
角色 | IP | 组件 |
---|---|---|
master | 192.168.100.10 | kube-apiserer,kube-controller-manager,kube -scheduler,etcd |
node1 | 192.168.100.20 | kubelet,kube-proxy,docker etcd |
3、操作系统初始化配置
# 关闭防火墙
systemctl stop firewalld
systemctl disable firewalld
# 关闭selinux
sed -i 's/enforcing/disabled/' /etc/selinux/config # 永久
setenforce 0 # 临时
# 关闭swap
swapoff -a # 临时
sed -ri 's/.*swap.*/#&/' /etc/fstab # 永久
# 根据规划设置主机名
hostnamectl set-hostname <hostname>
# 在master添加hosts
cat >> /etc/hosts << EOF
192.168.100.10 master
192.168.100.20 node1
EOF
# 将桥接的IPv4流量传递到iptables的链
cat > /etc/sysctl.d/k8s.conf << EOF
net.bridge.bridge-nf-call-ip6tables = 1
net.bridge.bridge-nf-call-iptables = 1
EOF
sysctl --system # 生效
# 时间同步
yum install ntpdate -y
ntpdate -u asia.pool.ntp.org
4、部署 Etcd 集群
4.1 准备 cfssl 证书生成工具
cfssl 是一个开源的证书管理工具,使用 json 文件生成证书,相比 openssl 更方便使用。 找任意一台服务器操作,这里用 Master 节点。
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
4.2 生成 Etcd 证书
(1)自签证书颁发机构(CA)
创建工作目录:
mkdir -p ~/TLS/{etcd,k8s}
cd TLS/etcd
自签CA:
[root@master etcd]# vim ca-config.json
{
"signing": {
"default": {
"expiry": "87600h"
},
"profiles": {
"www": {
"expiry": "87600h",
"usages": [
"signing",
"key encipherment",
"server auth",
"client auth"
]
}
}
}
}
[root@master etcd]# vim ca-csr.json
{
"CN": "etcd CA",
"key": {
"algo": "rsa",
"size": 2048
},
"names": [
{
"C": "CN",
"L": "Beijing",
"ST": "Beijing"
}
]
}
生成证书:做一个初始化操作
[root@master etcd]# cfssl gencert -initca ca-csr.json | cfssljson -bare ca -
2021/05/27 16:04:55 [INFO] generating a new CA key and certificate from CSR
2021/05/27 16:04:55 [INFO] generate received request
2021/05/27 16:04:55 [INFO] received CSR
2021/05/27 16:04:55 [INFO] generating key: rsa-2048
2021/05/27 16:04:55 [INFO] encoded CSR
2021/05/27 16:04:55 [INFO] signed certificate with serial number 573472150799289061281169541828288654078398525841
[root@master etcd]# ls *pem
ca-key.pem ca.pem
(2)使用自签 CA 签发 Etcd HTTPS 证书
创建证书申请文件:
[root@master etcd]# vim server-csr.json
{
"CN": "etcd",
"hosts": [
"192.168.100.10",
"192.168.100.20"
],
"key": {
"algo": "rsa",
"size": 2048
},
"names": [
{
"C": "CN",
"L": "BeiJing",
"ST": "BeiJing"
}
]
}
注:上述文件 hosts 字段中 IP 为所有 etcd 节点的集群内部通信 IP,一个都不能少!为了 方便后期扩容可以多写几个预留的 IP。
#ca和cak生成证书文件
[root@master etcd]# cfssl gencert -ca=ca.pem -ca-key=ca-key.pem -config=ca-config.json -profile=www server-csr.json |cfssljson -bare server
2021/05/27 16:28:16 [INFO] generate received request
2021/05/27 16:28:16 [INFO] received CSR
2021/05/27 16:28:16 [INFO] generating key: rsa-2048
2021/05/27 16:28:16 [INFO] encoded CSR
2021/05/27 16:28:16 [INFO] signed certificate with serial number 456667975612415335746587662654416203938464123440
2021/05/27 16:28:16 [WARNING] This certificate lacks a "hosts" field. This makes it unsuitable for
websites. For more information see the Baseline Requirements for the Issuance and Management
of Publicly-Trusted Certificates, v.1.1.6, from the CA/Browser Forum (https://cabforum.org);
specifically, section 10.2.3 ("Information Requirements").
这些最后就是生成证书的文件
[root@master etcd]# ls *.pem
ca-key.pem ca.pem server-key.pem server.pem
这里最后一步生成证书的我执行的出错了,找了好半天错误,总结一下
https://blog.csdn.net/qq_44792624/article/details/117332764
4.3 从 Github 下载二进制文件
我这个在GitHub上找包,进网址到最下面选择tar包,下载完上传到master节点,然后解压
https://github.com/etcd-io/etcd/releases/tag/v3.4.16
tar -zxf etcd-v3.4.16-linux-amd64.tar.gz
4.4 部署 Etcd 集群
以下在node1 上操作,为简化操作,完成以后把文件拷贝到剩余节点就可以了
(1)创建工作目录并解压二进制包
[root@master ~]# mkdir /opt/etcd/{bin,cfg,ssl} -p
[root@master ~]# ll
总用量 35824
-rw-------. 1 root root 955 5月 27 19:07 anaconda-ks.cfg
-rwxr-xr-x. 1 root root 6595195 4月 17 03:17 cfssl-certinfo_linux-amd64
-rwxr-xr-x. 1 root root 2277873 4月 17 03:17 cfssljson_linux-amd64
-rwxr-xr-x. 1 root root 10376657 4月 17 03:17 cfssl_linux-amd64
drwxr-xr-x. 3 6810230 users 4096 5月 12 09:58 etcd-v3.4.16-linux-amd64
-rw-r--r--. 1 root root 17408178 5月 28 2021 etcd-v3.4.16-linux-amd64.tar.gz
drwxr-xr-x. 2 root root 4096 5月 27 14:12 rbac
[root@master ~]# tar -zxf etcd-v3.4.16-linux-amd64.tar.gz
[root@master ~]# rm -rf etcd-v3.4.16-linux-amd64.tar.gz
[root@master ~]# cd etcd-v3.4.16-linux-amd64/
[root@master etcd-v3.4.16-linux-amd64]# ll
总用量 40628
drwxr-xr-x. 14 6810230 users 4096 5月 12 09:58 Documentation
-rwxr-xr-x. 1 6810230 users 23914048 5月 12 09:58 etcd
-rwxr-xr-x. 1 6810230 users 17616480 5月 12 09:58 etcdctl
-rw-r--r--. 1 6810230 users 43094 5月 12 09:58 README-etcdctl.md
-rw-r--r--. 1 6810230 users 8431 5月 12 09:58 README.md
-rw-r--r--. 1 6810230 users 7855 5月 12 09:58 READMEv2-etcdctl.md
[root@master etcd-v3.4.16-linux-amd64]# mv etcd* /opt/etcd/bin/
[root@master etcd-v3.4.16-linux-amd64]#
(2)创建 etcd 配置文件
[root@master cfg]# pwd
/opt/etcd/cfg
[root@master cfg]# vim etcd.conf
#[Member]
ETCD_NAME="etcd-1"
ETCD_DATA_DIR="/var/lib/etcd/default.etcd"
ETCD_LISTEN_PEER_URLS="https://192.168.100.10:2380"
ETCD_LISTEN_CLIENT_URLS="https://192.168.100.10:2379"
#[Clustering]
ETCD_INITIAL_ADVERTISE_PEER_URLS="https://192.168.100.10:2380"
ETCD_ADVERTISE_CLIENT_URLS="https://192.168.100.10:2379"
ETCD_INITIAL_CLUSTER="etcd-1=https://192.168.100.10:2380,etcd-2=https://192.168.100.20:2380"
ETCD_INITIAL_CLUSTER_TOKEN="etcd-cluster"
ETCD_INITIAL_CLUSTER_STATE="new"
ETCD_NAME:节点名称,集群中唯一
ETCD_DATA_DIR:数据目录
ETCD_LISTEN_PEER_URLS:集群通信监听地址
ETCD_LISTEN_CLIENT_URLS:客户端访问监听地址
ETCD_INITIAL_ADVERTISE_PEER_URLS:集群通告地址
ETCD_ADVERTISE_CLIENT_URLS:客户端通告地址
ETCD_INITIAL_CLUSTER:集群节点地址
ETCD_INITIAL_CLUSTER_TOKEN:集群 Token
ETCD_INITIAL_CLUSTER_STATE:加入集群的当前状态,new 是新集群,existing 表示加入 已有集群
(3)systemd 管理 etcd
更多推荐
所有评论(0)