[云原生k8s] k8s的CA证书创建和使用

目录

引言:

一、部署步骤

二、实验环境

2.1、所有节点,关闭防火墙、selinux、swap交换分区

2.2、修改主机名,并写入三台服务器得hosts中

2.3、调整内核参数

三、Etcd集群部署

3.1、准备cfssl证书生成工具

3.2、生成Etcd证书

自签证书颁发机构(CA)

生成证书:

使用自谦CA签发Etcd HTTPS证书

创建证书申请文件

3.3、从github仓库下载etcd二进制文件

3.4、部署Etcd集群

创建工作目录并解压二进制包

创建etcd配置文件

systemd管理etcd

拷贝给个生成的证书

将上面master节点所有生成的文件拷贝到节点 1 和节点 2上

成功拷贝过来了

启动并设置开机自启


引言:

        目前生产部署Kubernetes集群主要有两种方式:

(1)kubeadm
Kubeadm 是一个 K8s 部署工具,提供 kubeadm init 和 kubeadm join,用于快速部 署 Kubernetes 集群。
官方地址:https://kubernetes.io/docs/reference/setup-tools/kubeadm/kubeadm/
(2)二进制
从 github 下载发行版的二进制包,手动部署每个组件,组成 Kubernetes 集群。
Kubeadm 降低部署门槛,但屏蔽了很多细节,遇到问题很难排查。如果想更容易可 控,推荐使用二进制包部署 Kubernetes 集群,虽然手动部署麻烦点,期间可以学习很 多工作原理,也利于后期维护。

一、部署步骤

在所有节点上安装Dcoker和kubeadm

部署Kubernetes Master

部署Kubernetes Node,将节点加入Kubernetes集群中

部署Dashboard Web页面,可视化查看Kubernetes资源

二、实验环境

服务器类型IP地址
master192.168.100.6
node01192.168.100.8
node02192.168.100.10

2.1、所有节点,关闭防火墙、selinux、swap交换分区

#所有节点,关闭防火墙规则,关闭selinux,关闭swap交换
systemctl stop firewalld
systemctl disable firewalld
setenforce 0
iptables -F && iptables -t nat -F && iptables -t mangle -F && iptables -X
swapoff -a        #交换分区必须要关闭
sed -ri 's/.*swap.*/#&/' /etc/fstab    #永久关闭swap分区,&符号在sed命令中代表上次匹配的结果

2.2、修改主机名,并写入三台服务器得hosts中

2.3、调整内核参数

将桥接得IPV4流量传递到iptables链(三台都执行)

#调整内核参数
 
cat > /etc/sysctl.d/kubernetes.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  (立即生效)

三、Etcd集群部署

Etcd 是一个分布式键值存储系统,Kubernetes 使用 Etcd 进行数据存储,所以先准备 一个 Etcd 数据库,为解决 Etcd 单点故障,应采用集群方式部署,这里使用 3 台组建集 群,可容忍 1 台机器故障,当然,你也可以使用 5 台组建集群,可容忍 2 台机器故障。

每台都需要安装etcd

3.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

3.2、生成Etcd证书

自签证书颁发机构(CA)

#创建工作目录
mkdir -p ~/TLS/{etcd,k8s}
cd TLS/etcd

生成证书:

cfssl gencert -initca ca-csr.json | cfssljson -bare ca -

 ls *pem

使用自谦CA签发Etcd HTTPS证书

创建证书申请文件

cat > server-csr.json<< EOF
{
"CN": "etcd",
"hosts": [
"192.168.100.6",
"192.168.100.8",
"192.168.100.10"
],
"key": {
"algo": "rsa",
"size": 2048
},
"names": [
{
"C": "CN",
"L": "BeiJing",
"ST": "BeiJing"
}
]
}
EOF

注:上述文件 hosts 字段中 IP 为所有 etcd 节点的集群内部通信 IP,一个都不能少!为了 方便后期扩容可以多写几个预留的 IP。

3.3、从github仓库下载etcd二进制文件

wget https://github.com/etcd-io/etcd/releases/download/v3.4.9/etcd-v3.4.9linux-amd64.tar.gz

3.4、部署Etcd集群

以下在节点master上操作,为简化操作,待会将节点1生成的所有文件拷贝到node1和2上

创建工作目录并解压二进制包

mkdir -p /opt/etcd/{bin,cfg,ssl} 
tar zxvf etcd-v3.4.9-linux-amd64.tar.gz
mv etcd-v3.4.9-linux-amd64/{etcd,etcdctl} /opt/etcd/bin/

创建etcd配置文件

cat > /opt/etcd/cfg/etcd.conf << EOF
#[Member]
ETCD_NAME="etcd-1"
ETCD_DATA_DIR="/var/lib/etcd/default.etcd"
ETCD_LISTEN_PEER_URLS="https://192.168.100.6:2380"
ETCD_LISTEN_CLIENT_URLS="https://192.168.100.6:2379"
#[Clustering]
ETCD_INITIAL_ADVERTISE_PEER_URLS="https://192.168.100.6:2380"
ETCD_ADVERTISE_CLIENT_URLS="https://192.168.100.6:2379"
ETCD_INITIAL_CLUSTER="etcd-1=https://192.168.100.6:2380,etcd-2=https://192.168.100.8:2380,etcd-3=https://192.168.100.10:2380"
ETCD_INITIAL_CLUSTER_TOKEN="etcd-cluster"
ETCD_INITIAL_CLUSTER_STATE="new"
EOF

 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 表示加入 已有集群

systemd管理etcd

cat > /usr/lib/systemd/system/etcd.service << EOF
[Unit]
Description=Etcd Server
After=network.target
After=network-online.target
Wants=network-online.target
[Service]
Type=notify
EnvironmentFile=/opt/etcd/cfg/etcd.conf
ExecStart=/opt/etcd/bin/etcd \
--cert-file=/opt/etcd/ssl/server.pem \
--key-file=/opt/etcd/ssl/server-key.pem \
--peer-cert-file=/opt/etcd/ssl/server.pem \
--peer-key-file=/opt/etcd/ssl/server-key.pem \
--trusted-ca-file=/opt/etcd/ssl/ca.pem \
--peer-trusted-ca-file=/opt/etcd/ssl/ca.pem \
--logger=zap
Restart=on-failure
LimitNOFILE=65536
[Install]
WantedBy=multi-user.target
EOF

拷贝给个生成的证书

把刚才生成的证书拷贝到配置文件中的路径:

cp ~/TLS/etcd/ca*pem ~/TLS/etcd/server*pem /opt/etcd/ssl/

将上面master节点所有生成的文件拷贝到节点 1 和节点 2上

scp -r /opt/etcd/ root@192.168.100.8:/opt/
scp /usr/lib/systemd/system/etcd.service root@192.168.100.8:/usr/lib/systemd/system/
scp -r /opt/etcd/ root@192.168.100.10:/opt/
scp /usr/lib/systemd/system/etcd.service root@192.168.100.10:/usr/lib/systemd/system/

成功拷贝过来了

启动并设置开机自启

注意这里需要先启动从节点的etcd,再启动主

systemctl daemon-reload
systemctl start etcd
systemctl enable etcd

测试一下集群是否健康

ETCDCTL_API=3 /opt/etcd/bin/etcdctl --cacert=/opt/etcd/ssl/ca.pem --cert=/opt/etcd/ssl/server.pem --key=/opt/etcd/ssl/server-key.pem --endpoints="https://192.168.100.6:2379,https://192.168.100.8:2379,https://192.168.100.10:2379" endpoint health 

总体来说CA证书的创建就是这样

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值