Linux运维容器篇 k8s单节点二进制部署 ECTD部署+CA证书制作
Posted 鹧鸪鹄
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Linux运维容器篇 k8s单节点二进制部署 ECTD部署+CA证书制作相关的知识,希望对你有一定的参考价值。
文章目录
一、环境配置
主master节点 192.168.30.132 组件 kube-apiserver kube-controller-manager kube-scheduler etcd
从节点slave1 192.168.30.133 组件 kubelet kube-proxy docker flannel etcd
从节点slave2 192.168.30.134 组件 kubelet kube-proxy docker flannel etcd
从节点默认安装docker 主节点不用安装
#docker部署
yum install -y yum-utils device-mapper-persistent-data lvm2
cd /etc/yum.repos.d/
yum-config-manager --add-repo https://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
yum install -y docker-ce
systemctl stop firewalld
systemctl disable firewalld
setenforce 0
systemctl start docker
systemctl enable docker
#镜像加速
sudo mkdir -p /etc/docker
sudo tee /etc/docker/daemon.json <<-'EOF'
> {
> "registry-mirrors": ["https://xxxxxx.mirror.aliyuncs.com"]
> }
> EOF
{
"registry-mirrors": ["https://xxxxxx.mirror.aliyuncs.com"]
}
sudo systemctl daemon-reload
sudo systemctl restart docker
vim /etc/sysctl.conf
sysctl -p
systemctl restart docker
二、制作CA证书
1.传入脚本
etcd-cert.sh 是证书制作的脚本
etcd.sh etcd启动脚本
mkdir k8s
cd k8s
ls
rz -E
ls
etcd-cert.sh etcd.sh
cat etcd-cert.sh
2.创建CA证书
在k8s目录下创建etcd-cert 放k8s的证书
将工具放入usr/local/bin目录下 让系统识别 +x 给予权限
三个工具
cfssl是生成证书的工具'
cfssl-certinfo查看证书信息
cfssljson通过传入json文件生成证书
cd /etcd-cert 开始创建
cat etcd-cert.sh
cat > ca-config.json <<EOF #CA证书配置文件(用于申请授权)
{
"signing": { #键名称
"default": {
"expiry": "87600h" #证书有效期(10年)->证书默认时间是多久1年,1年k8s做了更新,把你的证书续一年
},
"profiles": { #简介
"www": { #名称
"expiry": "87600h",
"usages": [ #使用方法
"signing", #键
"key encipherment", #密钥验证(密钥验证要设置在CA证书中)
"server auth", #服务器端验证
"client auth" #客户端验证
]
}
}
}
}
EOF
cat > ca-csr.json <<EOF #CA签名文件
{
"CN": "etcd CA", #CA签名定义的对象etcd集群(三个节点均需要)
"key": {
"algo": "rsa", #使用rsa非对称密钥的形式
"size": 2048 #密钥长度为2048
},
"names": [ #在证书中定义信息(标准格式)
{
"C": "CN", #名称
"L": "Beijing",
"ST": "Beijing"
}
]
}
EOF
cfssl gencert -initca ca-csr.json | cfssljson -bare ca -
生成证书,创建,初始化ca,使用到ca的签名文件;使用cfssljson格式创建一个ca证书
3 指定节点通讯证书
cd etcd-cert/
cat > server-csr.json <<EOF
cat > server-csr.json <<EOF
> {
> "CN": "etcd",
> "hosts": [
> "192.168.30.132", 三个etcd的地址
> "192.168.30.133",
> "192.168.30.134"
> ],
> "key": {
> "algo": "rsa",
> "size": 2048
> },
> "names": [
> {
> "C": "CN",
> "L": "BeiJing",
> "ST": "BeiJing"
> }
> ]
> }
> EOF
cfssl gencert -ca=ca.pem -ca-key=ca-key.pem -config=ca-config.json -profile=www server-csr.json | cfssljson -bare server
制作证书 server证书的生成依赖于ca证书,server构建集群之间的彼此通讯
三 部署etcd集群
1 安装etcd包并传入证书
tar zxvf etcd-v3.3.10-linux-amd64.tar.gz
cd /root/k8s/etcd-v3.3.10-linux-amd64/
ls
mkdir -p /opt/etcd/{cfg,bin,ssl}
mv etcd etcdctl /opt/etcd/bin/
cp /root/k8s/etcd-cert/*.pem /opt/etcd/ssl/
ls /opt/etcd/ssl/
ca-key.pem ca.pem server-key.pem server.pem
配置etcd启动脚本并生成cfg文件
'//此时还缺cfg的配置文件,以及用来管理的启动脚本'
vim /root/k8s/etcd.sh '//撰写一个启动脚本'
#!/bin/bash
# example: ./etcd.sh etcd01 192.168.78.55 etcd02=https://192.168.78.66:2380,etcd03=https://192.168.78.77:2380
'//命令使用示例'
ETCD_NAME=$1 '//位置变量:节点名称'
ETCD_IP=$2 '//节点ip'
ETCD_CLUSTER=$3 '//etcd集群,名称、ip地址及端口'
WORK_DIR=/opt/etcd '//工作目录'
cat <<EOF >$WORK_DIR/cfg/etcd '//生成etcd配置文件'
#[Member]
ETCD_NAME="${ETCD_NAME}" '//etcd名称,调用变量'
ETCD_DATA_DIR="/var/lib/etcd/default.etcd" '//数据存储路径'
ETCD_LISTEN_PEER_URLS="https://${ETCD_IP}:2380" '//监听集群,node节点的ip及端口,首先开启自身2380端口'
ETCD_LISTEN_CLIENT_URLS="https://${ETCD_IP}:2379" '//监听2379业务端口'
#[Clustering] '//构建集群'
ETCD_INITIAL_ADVERTISE_PEER_URLS="https://${ETCD_IP}:2380" '//暴露本地2380'
ETCD_ADVERTISE_CLIENT_URLS="https://${ETCD_IP}:2379" '//其他集群2379'
ETCD_INITIAL_CLUSTER="etcd01=https://${ETCD_IP}:2380,${ETCD_CLUSTER}" '//本地地址及2380端口+集群(三个节点统一加入进来)'
ETCD_INITIAL_CLUSTER_TOKEN="etcd-cluster" '//token名称'
ETCD_INITIAL_CLUSTER_STATE="new" '//new新建状态'
EOF
cat <<EOF >/usr/lib/systemd/system/etcd.service '//构建启动脚本'
[Unit]
Description=Etcd Server
After=network.target '//etcd启动依赖于网络基本组件的启动'
After=network-online.target '//网络需要先稳定运行才能启动etcd'
Wants=network-online.target '//以上三段为对网络的定义'
[Service]
Type=notify '//触发调用'
EnvironmentFile=${WORK_DIR}/cfg/etcd '//定义变量,指定etcd配置文件'
ExecStart=${WORK_DIR}/bin/etcd \\ '//启动文件指定启动脚本'
--name=\\${ETCD_NAME} \\ '//名称,调用变量'
--data-dir=\\${ETCD_DATA_DIR} \\ '//数据存放'
--listen-peer-urls=\\${ETCD_LISTEN_PEER_URLS} \\ '//匹配监听地址'
--listen-client-urls=\\${ETCD_LISTEN_CLIENT_URLS},http://127.0.0.1:2379 \\ '//监听地址、'
--advertise-client-urls=\\${ETCD_ADVERTISE_CLIENT_URLS} \\
--initial-advertise-peer-urls=\\${ETCD_INITIAL_ADVERTISE_PEER_URLS} \\
--initial-cluster=\\${ETCD_INITIAL_CLUSTER} \\
--initial-cluster-token=\\${ETCD_INITIAL_CLUSTER_TOKEN} \\ '//令牌,新创建的状态'
--initial-cluster-state=new \\
--cert-file=${WORK_DIR}/ssl/server.pem \\ '//指向证书,匹配'
--key-file=${WORK_DIR}/ssl/server-key.pem \\
--peer-cert-file=${WORK_DIR}/ssl/server.pem \\
--peer-key-file=${WORK_DIR}/ssl/server-key.pem \\
--trusted-ca-file=${WORK_DIR}/ssl/ca.pem \\
--peer-trusted-ca-file=${WORK_DIR}/ssl/ca.pem
Restart=on-failure
LimitNOFILE=65536 '//进程上限'
[Install]
WantedBy=multi-user.target '//属于多用户登录模式'
EOF
systemctl daemon-reload '//加载系统参数,开机自启动及重复服务'
systemctl enable etcd
systemctl restart etcd
'//执行完脚本后会生成etcd配置文件与etcd.service启动文件'
启动启动脚本
bash etcd.sh etcd01 192.168.30.132 etcd02=https://192.168.30.133:2380,etcd03=https://192.168.30.134:2380
此时会卡住 因为两个node节点未部署 所以会报错 先不管他
配置node节点配置
先拷贝文件到node节点修改
etcd工作目录拷贝至另外两个节点,-r表示递归复制
scp -r /opt/etcd/ root@192.168.30.133:/opt/
scp -r /opt/etcd/ root@192.168.30.134:/opt/
拷贝启动脚本
scp /usr/lib/systemd/system/etcd.service root@192.168.30.133:/usr/lib/systemd/system/
scp /usr/lib/systemd/system/etcd.service root@192.168.30.133:/usr/lib/systemd/system/
修改node节点的配置文件 两个都要修改
vim /opt/etcd/cfg/etcd
#[Member]
ETCD_NAME="etcd02" '//修改etcd名称'
ETCD_DATA_DIR="/var/lib/etcd/default.etcd"
ETCD_LISTEN_PEER_URLS="https://192.168.30.133:2380" '//监听集群,这里为本机ip地址(node)'
ETCD_LISTEN_CLIENT_URLS="https://192.168.78.133:2379" '//改为本机ip'
#[Clustering]
ETCD_INITIAL_ADVERTISE_PEER_URLS="https://192.168.30.133:2380" '//暴露本地ip,修改为本机ip'
ETCD_ADVERTISE_CLIENT_URLS="https://192.168.30.133:2379" '//修改为本机ip'
ETCD_INITIAL_CLUSTER="etcd01=https://192.168.30.132:2380,etcd02=https://192.168.30.133:2380,etcd03=https://192.168.30.134:2380"
ETCD_INITIAL_CLUSTER_TOKEN="etcd-cluster"
ETCD_INITIAL_CLUSTER_STATE="new"
systemctl start etcd.service && systemctl enable etcd.service 启动
systemctl status etcd.service 查看状态
主节点检查节点健康状态
cd /opt/etcd/ssl
/opt/etcd/bin/etcdctl --ca-file=ca.pem --cert-file=server.pem --key-file=server-key.pem --endpoints="https://192.168.30.132:2379,https://192.168.30.133:2379,https://192.168.30.134:2379" cluster-health
etcdctl管理etcd,后面指定证书,注意为相对路径
以上是关于Linux运维容器篇 k8s单节点二进制部署 ECTD部署+CA证书制作的主要内容,如果未能解决你的问题,请参考以下文章
Linux运维容器篇 k8s单节点二进制部署 ECTD部署+CA证书制作
Linux运维容器篇 k8s单节点二进制部署 ECTD部署+CA证书制作
K8S——单master节点和基于单master节点的双master节点二进制部署
K8S——单master节点和基于单master节点的双master节点二进制部署(本机实验,防止卡顿,所以多master就不做3台了)
K8S——单master节点和基于单master节点的双master节点二进制部署(本机实验,防止卡顿,所以多master就不做3台了)
云原生Kubernetes系列第三篇二进制部署单节点Kubernetes(k8s)v1.20(不要因为别人都在交卷,自己就乱写答案)