开始改造我们之前搭建的基础集群,加上安全机制。
准备工作
1. 停止master节点的所有服务
查看已有的service
kubectl get services
删除service(例如有一个叫xxx的service)
kubectl delete service xxx
查看已有的deployments
kubectl get deploy
删除deployments
kubectl delete deploy xxx
停止master的服务
service kube-calico stop
service kube-scheduler stop
service kube-controller-manager stop
service kube-apiserver stop
service etcd stop && rm -fr /var/lib/etcd/*
2. 停止worker节点的所有服务
service kubelet stop
rm -fr /var/lib/kubelet/*
service kube-proxy stop
rm -fr /var/lib/kube-proxy/*
service kube-calico stop
3. 安装需要的工具
在所有节点上安装cfssl:
CFSSL是CloudFlare开源的一款PKI/TLS工具。 CFSSL 包含一个命令行工具 和一个用于 签名,验证并且捆绑TLS证书的 HTTP API 服务。 用Go写的。具体相关信息自行google。
下载
wget -q --show-progress --https-only --timestamping \
https://pkg.cfssl.org/R1.2/cfssl_linux-amd64 \
https://pkg.cfssl.org/R1.2/cfssljson_linux-amd64
修改权限
chmod +x cfssl_linux-amd64 cfssljson_linux-amd64
放到可执行目录
mv cfssl_linux-amd64 /usr/local/bin/cfssl
mv cfssljson_linux-amd64 /usr/local/bin/cfssljson
在worker节点上安装conntrack
apt install conntrack
4.在master上生成根证书
mkdir -p /etc/kubernetes/ca
cd /etc/kubernetes/ca
编辑ca-config.json文件,内容如下:
{
"signing": {
"default": {
"expiry": "87600h"
},
"profiles": {
"kubernetes": {
"usages": [
"signing",
"key encipherment",
"server auth",
"client auth"
],
"expiry": "87600h"
}
}
}
}
编辑ca-csr.json文件,内容如下:
{
"CN": "kubernetes",
"key": {
"algo": "rsa",
"size": 2048
},
"names": [
{
"C": "CN",
"ST": "Beijing",
"L": "XS",
"O": "k8s",
"OU": "System"
}
]
}
执行生成证书的命令:
cfssl gencert -initca ca-csr.json | cfssljson -bare ca
OK。
master节点设置
1. etcd设置
编辑/lib/systemd/system/etcd.service,内容如下:
[Unit]
Description=Etcd Server
After=network.target
After=network-online.target
Wants=network-online.target
Documentation=https://github.com/coreos
[Service]
Type=notify
WorkingDirectory=/var/lib/etcd/
ExecStart=/home/anakin/bin/etcd \
--name=192.168.32.131 \
--listen-client-urls=https://192.168.32.131:2379,http://127.0.0.1:2379 \
--advertise-client-urls=https://192.168.32.131:2379 \
--data-dir=/var/lib/etcd \
--listen-peer-urls=https://192.168.32.131:2380 \
--initial-advertise-peer-urls=https://192.168.32.131:2380 \
--cert-file=/etc/kubernetes/ca/etcd/etcd.pem \
--key-file=/etc/kubernetes/ca/etcd/etcd-key.pem \
--peer-cert-file=/etc/kubernetes/ca/etcd/etcd.pem \
--peer-key-file=/etc/kubernetes/ca/etcd/etcd-key.pem \
--trusted-ca-file=/etc/kubernetes/ca/ca.pem \
--peer-trusted-ca-file=/et