背景:对于k8s学习者,有一个真实的环境十分重要,但要用二进制搭建一个学习环境是一件十分复杂的过程,查了一下网上的文档,大多数都是几台服务器来搭建集群的,本文以一台机器用二进制的方法搭建一个简单的k8s集群。
1、机器环境
操作系统: centos 7
虚拟机
ip:192.168.225.132
2、单机部署etcd
1)下载etcd
使用版本3.4.7 ,下载地址
https://github.com/etcd-io/etcd/releases/download/v3.4.7/etcd-v3.4.7-linux-amd64.tar.gz
2)解压后建立下图显示的目录结构
bin 存放解压出来的两个程序文件 etcd 和etcdctl,,所有执行文件需要在命令行使用chmod 777 文件名,赋予执行权限
cfg 存放配置文件
data 存放数据文件
ssl 存放自生成证书

3)安装生成https证书软件cfssl
curl -L https://pkg.cfssl.org/R1.2/cfssl_linux-amd64 -o /usr/local/bin/cfssl
curl -L https://pkg.cfssl.org/R1.2/cfssljson_linux-amd64 -o /usr/local/bin/cfssljson
curl -L https://pkg.cfssl.org/R1.2/cfssl-certinfo_linux-amd64 -o /usr/local/bin/cfssl-certinfo
chmod +x /usr/local/bin/cfssl /usr/local/bin/cfssljson /usr/local/bin/cfssl-certinfo
4)在ssl目录生成相关https证书
首先,建立如下3个配置文件
新建etcd-ca-config.json,具体内容如下:
{
"signing": {
"default": {
"expiry": "87600h"
},
"profiles": {
"www": {
"expiry": "87600h",
"usages": [
"signing",
"key encipherment",
"server auth",
"client auth"
]
}
}
}
}
新建etcd-ca-csr.json,具体内容如下:
{
"CN": "etcd CA",
"key": {
"algo": "rsa",
"size": 2048
},
"names": [
{
"C": "CN",
"L": "Beijing",
"ST": "Beijing"
}
]
}
新建etcd-server-csr.json,具体内容如下,其中标红的ip地址为需要安装的机器ip地址和本地地址
{
"CN": "etcd",
"hosts": [
"192.168.225.132",
"127.0.0.1"
],
"key": {
"algo": "rsa",
"size": 2048
},
"names": [
{
"C": "CN",
"L": "BeiJing",
"ST": "BeiJing"
}
]
}
然后,在ssl目录下执行如下2条命令:
命令1:cfssl gencert -initca etcd-ca-csr.json | cfssljson -bare etcd-ca –
命令2:cfssl gencert -ca=etcd-ca.pem -ca-key=etcd-ca-key.pem -config=etcd-ca-config.json -profile=www etcd-server-csr.json | cfssljson -bare etcd-server
最终结果如下图,表示所有https证书生成成功

5)编写配置文件,在cfg目录下新建配置文件,文件名为etcd,具体内容如下,标红的ip地址要etcd-server-csr.json厘米设定的一致
#[Member]
ETCD_NAME="etcd01"
ETCD_DATA_DIR="/root/k8s/data/etcd" #数据保存路径
ETCD_LISTEN_PEER_URLS="https://192.168.225.132:2380"
ETCD_LISTEN_CLIENT_URLS="https://192.168.225.132:2379,http://127.0.0.1:2379"
#[Clustering]
ETCD_INITIAL_ADVERTISE_PEER_URLS="https://192.168.225.132:2380"
ETCD_ADVERTISE_CLIENT_URLS="https://192.168.225.132:2379"
#ETCD_INITIAL_CLUSTER="etcd01=https://192.168.225.132:2380"
ETCD_INITIAL_CLUSTER_TOKEN="etcd-cluster-0"
ETCD_INITIAL_CLUSTER_STATE="new"
#具体https证书路径
ETCD_CERT_FILE="/root/k8s/ssl/etcd-server.pem"
ETCD_KEY_FILE="/root/k8s/ssl/etcd-server-key.pem"
ETCD_TRUSTED_CA_FILE="/root/k8s/ssl/etcd-ca.pem"
ETCD_CLIENT_CERT_AUTH="true"
ETCD_PEER_CERT_FILE="/root/k8s/ssl/etcd-server.pem"
ETCD_PEER_KEY_FILE="/root/k8s/ssl/etcd-server-key.pem"
ETCD_PEER_TRUSTED_CA_FILE="/root/k8s/ssl/etcd-ca.pem"
ETCD_PEER_CLIENT_CERT_AUTH="true"
6)编写服务启动文件,注意标红部分
使用命令:vi /usr/lib/systemd/system/etcd.service,录入如下配置内容:
[Unit]
Description=Etcd Server
After=network.target
After=network-online.target
Wants=network-online.target
[Service]
Type=notify
User=root
EnvironmentFile=-/root/k8s/cfg/etcd #配置文件所在路径
WorkingDirectory=/var/lib/etcd/ #手工预先建立的目录
ExecStart=/root/k8s/bin/etcd #程序执行文件所在目录
Restart=on-failure
LimitNOFILE=65536
单机部署K8s

本文详细介绍如何在单台CentOS 7虚拟机上,通过二进制方式部署Kubernetes (K8s) 集群,包括安装etcd、配置HTTPS证书、部署K8s master和node组件,以及验证部署过程。
最低0.47元/天 解锁文章
885





