6.k8s主控节点-部署etcd
supervisorcfssletcdk8s主控节点-部署etcd一、准备集群证书(证书环境参考4.证书环境章节)准备ca-config.json技巧:cfssl print-defaults config能够打印配置文件模板作参考vi /etc/certs/ca-config.json{"signing": {"default": {"expiry": "175200h"},"profiles"
supervisor
cfssl
etcd
k8s主控节点-部署etcd
一、准备集群证书
(证书环境参考4.证书环境
章节)
准备ca-config.json
技巧:cfssl print-defaults config
能够打印配置文件模板作参考
vi /etc/certs/ca-config.json
{
"signing": {
"default": {
"expiry": "175200h"
},
"profiles": {
"server": {
"expiry": "175200h",
"usages": [
"signing",
"key encipherment",
"server auth"
]
},
"client": {
"expiry": "175200h",
"usages": [
"signing",
"key encipherment",
"client auth"
]
},
"peer": {
"expiry": "175200h",
"usages": [
"signing",
"key encipherment",
"server auth",
"client auth"
]
}
}
}
}
设置了三种证书配置,下面创建证书是指定需要的配置模式
server: 服务器启动需要证书
client: 客户端连接服务端需要证书
peer: 对端通信两端都需要证书
创建peer类型证书(etcd需要的双向证书为例)
- 创建证书请求文件
这里我们用etcd集群需要的双向通信证书制作做演示,结构和上面制作ca证书时的请求文件类似
技巧:cfssl print-defaults csr
能够打印csr文件模板作参考
vi etcd-peer-csr.json
(文件名叫啥无所谓,自己能分清就行)
{
"CN": "k8s-etcd",
"hosts": [
"172.10.10.11",
"172.10.10.12",
"172.10.10.21",
"172.10.10.22"
],
"key": {
"algo": "rsa",
"size": 2048
},
"name": [
{
"C": "CN",
"ST": "beijing",
"L": "beijing",
"O": "hzw",
"OU": "hzwself"
}
]
}
hosts中配置了证书通信可用主机,这里将可能部署etcd的机器都加入,否则后续主机变化只能重新签发证书
- 使用cfssl签发证书
cfssl gencert -ca=ca.pem -ca-key=ca-key.pem -config=ca-config.json -profile=peer etch-peer-csr.json
说明:
gencert:生成证书命令
-ca
、-ca-key
:指定根证书和根证书密钥
-config
、-profile
:指定配置文件和指定配置域(这里需要签双向通信证书,所以指定的是ca-config.json里的peer配置域,内容见上文)
etch-peer-csr.json
是证书请求文件
该命令不会生成证书文件,只会打印证书内容(自己手动拷贝到相应文件也是可以的),可以通过管道符使用cfssljson
工具进一步生成证书文件
[...] | cfssljson -bare etcd-peer
关于证书要注意的: 所有私钥文件建议都是
600
权限,严格控制读权限
二、安装etcd
获取etcd
https://github.com/etcd-io/etcd
本测试用的版本是etcd-v3.4.3
,不同版本时的参数可能会有点不同,可通过etcd -h看相关参数及说明
创建etcd/etcd用户和用户组
useradd -s /sbin/nologin -M etcd
创建相关目录
创建相关目录备后续使用
/opt/etcd/certs
/data/etcd
/data/logs/etcd-server
chown -R etcd.etcd /opt/etcd/certs
后面用etcd用户去启动etcd程序时,需要读取证书,主要是上面生成的私钥文件是600
权限,若不授权给etcd用户其没有读权限
chown -R etcd.etcd /data/etcd
chown -R etcd.etcd /data/logs/etcd-server
将相关目录授权给etcd用户,因为我们etcd程序使用etcd用户启动
拷贝证书
从证书环境将为etcd生成的证书拷贝到/opt/etcd/certs
下,如图
解压到/opt/etcd
[root@node22 opt]# ll /opt/
lrwxrwxrwx. 1 root root 11 3月 18 22:33 etcd -> etcd-v3.4.3
drwxr-xr-x. 5 etcd etcd 4096 3月 19 03:04 etcd-v3.4.3
启动命令
本测试用的版本是etcd-v3.4.3
,不同版本时的参数可能会有点不同,可通过etcd -h
看相关参数及说明
vi /opt/etcd/etcd-server-start.sh
授予执行权限
#!/bin/bash
./etcd --name etcd-server-10-22 \
--data-dir /data/etcd/etcd-server
--listen-peer-urls https://172.10.10.22:2380 \
# List of URLs to listen on for peer traffic.
--listen-client-urls https://172.10.10.22:2379,http://127.0.0.1:2379 \
# List of URLs to listen on for client traffic.
--quota-backend-bytes 8000000000 \
--initial-advertise-peer-urls https://172.10.10.22:2380 \
# List of this member's peer URLs to advertise to the rest of the cluster.
--advertise-client-urls https://172.10.10.22:2379,http://127.0.0.1:2379 \
# List of this member's client URLs to advertise to the public.
--initial-cluster etcd-server-10-12=https://172.10.10.12:2380,etcd-server-10-21=https://172.10.10.21:2380,etcd-server-10-22=https://172.10.10.22:2380 \
# Initial cluster configuration for bootstrapping.
--client-cert-auth \
# Enable client cert authentication.
--trusted-ca-file ./certs/ca.pem \
# Path to the client server TLS trusted CA cert file.
--cert-file ./certs/etcd-peer.pem \
# Path to the client server TLS cert file.
--key-file ./certs/etcd-peer-key.pem \
# Path to the client server TLS key file.
--peer-client-cert-auth \
# Enable peer client cert authentication.
--peer-trusted-ca-file ./certs/ca.pem \
# Path to the peer server TLS trusted CA file.
--peer-cert-file ./certs/etcd-peer.pem \
# Path to the peer server TLS cert file.
--peer-key-file ./certs/etcd-peer-key.pem \
# Path to the peer server TLS key file.
--log-outputs stdout
chmod +x /opt/etcd/etcd-server-start.sh
注意,我们这里使用的etcd版本是3.4,默认启动对原V2版本接口的支持,若要使用V2接口,启动etcd时需要通过--enable-v2
启动对v2接口的支持
三、使用supervisor后台运行etcd
快速入门
- supervisorctl常用的命令
update 更新新的配置到supervisord(不会重启原来已运行的程序)
reload,载入所有配置文件,并按新的配置启动、管理所有进程(会重启原来已运行的程序)
start xxx: 启动某个进程
restart xxx: 重启某个进程
stop xxx: 停止某一个进程(xxx),xxx为[program:theprogramname]里配置的值
stop groupworker: 重启所有属于名为groupworker这个分组的进程(start,restart同理)
stop all,停止全部进程,注:start、restart、stop都不会载入最新的配置文
reread,当一个服务由自动启动修改为手动启动时执行一下就ok
- supervisor进程配置部分说明
; [program:xx]是被管理的进程配置参数,xx是进程的名称
[program:xx]
command=/opt/apache-tomcat-8.0.35/bin/catalina.sh run ; 程序启动命令
autostart=true ; 在supervisord启动的时候也自动启动
startsecs=10 ; 启动10秒后没有异常退出,就表示进程正常启动了,默认为1秒
autorestart=true ; 程序退出后自动重启,可选值:[unexpected,true,false],默认为unexpected,表示进程意外杀死后才重启
startretries=3 ; 启动失败自动重试次数,默认是3
user=tomcat ; 用哪个用户启动进程,默认是root
priority=999 ; 进程启动优先级,默认999,值小的优先启动
redirect_stderr=true ; 把stderr重定向到stdout,默认false
stdout_logfile_maxbytes=20MB ; stdout 日志文件大小,默认50MB
stdout_logfile_backups = 20 ; stdout 日志文件备份数,默认是10
; stdout 日志文件,需要注意当指定目录不存在时无法正常启动,所以需要手动创建目录(supervisord 会自动创建日志文件)
stdout_logfile=/opt/apache-tomcat-8.0.35/logs/catalina.out
stopasgroup=false ;默认为false,进程被杀死时,是否向这个进程组发送stop信号,包括子进程
killasgroup=false ;默认为false,向进程组发送kill信号,包括子进程
安装supervisor
- 安装epel源
yum install epel-release
- 安装supervisor
yum install supervisor
启动supervisor daemon进程
systemctl start supervisord
systemctl enable supervisord
开机启
创建etcd启动配置
vi /etc/supervisord.d/etcd-server.ini
[program:etcd-server-10.22]
command=/opt/etcd/etcd-server-start.sh
numprocs=1
directory=/opt/etcd
autostart=true
autorestart=true
startsecs=30
startretries=3
exitcodes=0,2
stopsignal=QUIT
stopasgroup=false ;默认为false,进程被杀死时,是否向这个进程组发送stop信号,包括子进程
stopwaitsecs=10
user=etcd
redirect_stderr=true
stdout_logfile=/data/logs/etcd-server/etcd.stdout.log
stdout_logfile_maxbytes=64MB
stdout_logfile_backups=4
stdout_capture_maxbytes=1MB
stdout_events_enabled=false
supervisorctl status
查看进程状态
supervisorctl update
启动
supervisorctl reload
重新加载配置,并重启
四、其他补充
-
查看集群状态
./etcdctl -w table member list
所有集群都启动完毕后
./etcdctl member list
-
使用
./etcdctl put AAA
-
查看集群健康状态
./etcdctl --endpoints=https://172.10.10.22:2379 --cacert=/opt/etcd/certs/ca.pem --cert=/opt/etcd/certs/etcd-peer.pem --key=/opt/etcd/certs/etcd-peer-key.pem endpoint --cluster health
使用-w table
显示表格
更多推荐
所有评论(0)