您的位置:首页 > 运维架构 > Kubernetes

kubernetes搭建 一、基础环境和证书

2019-03-26 11:12 337 查看

一、基本环境

k8s-master 10.0.0.101
k8s-node1 10.0.0.102
k8s-node2 10.0.0.103
glusterfs-node1 10.0.0.104
glusterfs-node2 10.0.0.105
registry 10.0.0.106
nfs 10.0.0.31

在各个机器上修改一下yum源

mv /etc/yum.repos.d/CentOS-Base.repo /etc/yum.repos.d/CentOS-Base.repo.backup
wget -O /etc/yum.repos.d/CentOS-Base.repo http://mirrors.aliyun.com/repo/Centos-7.repo
yum clean all
yum makecache
systemctl stop firewalld & systemctl disable firewalld

添加阿里云的Docker仓库:

yum-config-manager --add-repo http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
yum makecache

关闭swap,在安装K8s集群时,Linux的Swap内存交换机制是一定要关闭的,否则会因为内存交换而影响性能以及稳定性,编辑 /etc/fastab,注释掉包含swap的那一行,重启后可永久关闭。

[root@k8s-master-101 ~]# cat /etc/fstab

#
# /etc/fstab
# Created by anaconda on Wed Sep 19 08:19:17 2018
#
# Accessible filesystems, by reference, are maintained under '/dev/disk'
# See man pages fstab(5), findfs(8), mount(8) and/or blkid(8) for more info
#
UUID=ca8ea0be-c2bc-46a0-9aa1-fad6566d8e09 /                       xfs     defaults        0 0
UUID=26cfac22-eb00-4c43-bb88-89f2818aa569 /boot                   xfs     defaults        0 0
#UUID=cef36fc7-b4e6-46d0-ae13-7eaafb2d7fbf swap                    swap    defaults

然后top查看

[root@k8s-master-101 ~]# top
top - 18:02:41 up  2:47,  1 user,  load average: 0.15, 0.23, 0.28
Tasks: 233 total,   1 running, 232 sleeping,   0 stopped,   0 zombie
%Cpu(s):  0.8 us,  2.5 sy,  0.0 ni, 96.4 id,  0.0 wa,  0.0 hi,  0.3 si,  0.0 st
KiB Mem :  3861512 total,  1797128 free,   872572 used,  1191812 buff/cache
KiB Swap:        0 total,        0 free,        0 used.  2451592 avail Mem

安装最新版Docker:

yum install docker-ce -y
[root@k8s-master-101 ~]# docker --version
Docker version 18.09.3, build 774a1f4

systemctl start docker
systemctl enable docker

二、证书

创建生成证书的目录,下载相关工具

mkdir /root/ssl
cd /root/ssl
wget https://pkg.cfssl.org/R1.2/cfssl_linux-amd64        #用于生成证书
wget https://pkg.cfssl.org/R1.2/cfssljson_linux-amd64     #用于导入json数据
wget https://pkg.cfssl.org/R1.2/cfssl-certinfo_linux-amd64    #用于查看证书信息
chmod +x cfssl-certin
4000
fo_linux-amd64 cfssljson_linux-amd64 cfssl_linux-amd64    #添加执行权限

#移动到/usr/local/bin
mv cfssl_linux-amd64 /usr/local/bin/cfssl
mv cfssljson_linux-amd64 /usr/local/bin/cfssljson
mv cfssl-certinfo_linux-amd64 /usr/local/bin/cfssl-certinfo

可以创建模板文件然后修改
cfssl print-defaults config > config.json #证书模板文件
cfssl print-defaults csr > csr.json #请求颁发证书的一个模板文件

组件及使用的证书

组件 使用的证书
etcd ca.pem server.pem server-key.pem
kube-apiserver ca.pem server.pem server-key.pem
kubelet ca.pem ca-key.pem
kube.proxy ca.pem kube-proxy.pem kube-proxy-key.pem
kubectl ca.pem admin.pem admin-key.pem
flannel ca.pem server.pem server-key.pem

新建CA配置文件

[root@k8s-master-101 ssl]# vim ca-config.json
{
"signing": {
"default": {
"expiry": "87600h"
},
"profiles": {
"kubernetes": {
"expiry": "87600h",
"usages": [
"signing",
"key encipherment",
"server auth",
"client auth"
]
}
}
}
}
字段说明

ca-config.json:可以定义多个 profiles,分别指定不同的过期时间、使用场景等参数;后续在签名证书时使用某个 profile;
signing:表示该证书可用于签名其它证书;生成的 ca.pem 证书中 CA=TRUE;
server auth:表示client可以用该 CA 对server提供的证书进行验证;
client auth:表示server可以用该CA对client提供的证书进行验证;

新建CA证书签发请求文件

[root@k8s-master-101 ssl]# vim ca-csr.json
{
"CN": "kubernetes",
"key": {
"algo": "rsa",
"size": 2048
},
"names": [
{
"C": "CN",
"L": "Shenzhen",
"ST": "Guangzhou",
"O": "k8s",
"OU": "System"
}
]
}

生成CA证书和私钥 这一步后将生成ca-key.pem ca.pem ca-csr这三个文件

cfssl gencert -initca ca-csr.json | cfssljson -bare ca –
[root@k8s-master-101 ssl]# ls ca*
ca-config.json  ca.csr  ca-csr.json  ca-key.pem  ca.pem

新建server证书签发请求文件,这里的10.10.10.1是后面service分配的地址段,一定要指定,根据自己的环境,否则后面service无法通信。
这个server证书是后面的master的API和etcd集群使用的,这里如果严谨一点的话应该分开做证书的,再做一个etcd的证书,不过放一起好像也没什么问题就是了。如果分开做的话,在etcd的证书里指定etcd集群的IP地址(这里etcd用的是master节点和node节点的IP地址),在api的证书里指定127.0.0.1,以及master节点地址还有service分配的地址段。

[root@k8s-master-101 ssl]# vim server-csr.json
{
"CN": "kubernetes",
"hosts": [
"127.0.0.1",
"10.10.10.1",
"10.0.0.101",
"10.0.0.102",
"10.0.0.103",
"kubernetes",
"kubernetes.default",
"kubernetes.default.svc",
"kubernetes.default.svc.cluster",
"kubernetes.default.svc.cluster.local"
],
"key": {
"algo": "rsa",
"size": 2048
},
"names": [
{
"C": "CN",
"L": "Shenzhen",
"ST": "Guangzhou",
"O": "k8s",
"OU": "System"
}
]

生成server证书和私钥,这一步后生成了server-key.pem 和server.pem

cfssl gencert -ca=ca.pem -ca-key=ca-key.pem -config=ca-config.json -profile=kubernetes server-csr.json | cfssljson -bare server

[root@k8s-master-101 ssl]# ls server*
server.csr  server-csr.json  server-key.pem  server.pem

新建admin证书签发请求文件

[root@k8s-master-101 ssl]# vim admin-csr.json
{
"CN": "admin",
"hosts": [],
"key": {
"algo": "rsa",
"size": 2048
},
"names": [
{
"C": "CN",
"L": "Shenzhen",
"ST": "Guangzhou",
"O": "system:masters",
"OU": "System"
}
]
}

生成admin证书和私钥,这一步后生成了admin-key.pem和admin.pem两个文件

cfssl gencert -ca=ca.pem -ca-key=ca-key.pem -config=ca-config.json -profile=kubernetes admin-csr.json | cfssljson -bare admin

[root@k8s-master-101 ssl]# ls admin*
admin.csr  admin-csr.json  admin-key.pem  admin.pem

新建kube-proxy证书签发请求文件

[root@k8s-master-101 ssl]# cat kube-proxy-csr.json
{
"CN": "system:kube-proxy",
"hosts": [],
"key": {
"algo": "rsa",
"size": 2048
},
"names": [
{
"C": "CN",
"L": "Shenzhen",
"ST": "Guangzhou",
"O": "k8s",
"OU": "System"
}
]
}

生成kube-proxy证书和私钥,这一步后生成了kube-proxy-key.pem 和kube-proxy.pem

cfssl gencert -ca=ca.pem -ca-key=ca-key.pem -config=ca-config.json -profile=kubernetes kube-proxy-csr.json | cfssljson -bare kube-proxy

[root@k8s-master-101 ssl]# ls kube-proxy*
kube-proxy.csr  kube-proxy-csr.json  kube-proxy-key.pem  kube-proxy.pem

证书生成完了,查看一下现在有这些文件

[root@k8s-master-101 ssl]# ll
总用量 68
-rw-r--r--. 1 root root 1013 3月   8 00:23 admin.csr
-rw-r--r--. 1 root root  232 3月   8 00:22 admin-csr.json
-rw-------. 1 root root 1675 3月   8 00:23 admin-key.pem
-rw-r--r--. 1 root root 1407 3月   8 00:23 admin.pem
-rw-r--r--. 1 root root  294 3月   8 00:18 ca-config.json
-rw-r--r--. 1 root root 1005 3月   8 00:19 ca.csr
-rw-r--r--. 1 root root  267 3月   8 00:18 ca-csr.json
-rw-------. 1 root root 1679 3月   8 00:19 ca-key.pem
-rw-r--r--. 1 root root 1367 3月   8 00:19 ca.pem
-rw-r--r--. 1 root root 1013 3月   8 00:23 kube-proxy.csr
-rw-r--r--. 1 root root  233 3月   8 00:23 kube-proxy-csr.json
-rw-------. 1 root root 1679 3月   8 00:23 kube-proxy-key.pem
-rw-r--r--. 1 root root 1411 3月   8 00:23 kube-proxy.pem
-rw-r--r--. 1 root root 1265 3月   8 00:22 server.csr
-rw-r--r--. 1 root root  553 3月   8 00:22 server-csr.json
-rw-------. 1 root root 1679 3月   8 00:22 server-key.pem
-rw-r--r--. 1 root root 1635 3月   8 00:22 server.pem

pem结尾的为所需要的证书和私钥

[root@k8s-master-101 ssl]# ll *pem
-rw-------. 1 root root 1675 3月   8 00:23 admin-key.pem
-rw-r--r--. 1 root root 1407 3月   8 00:23 admin.pem
-rw-------. 1 root root 1679 3月   8 00:19 ca-key.pem
-rw-r--r--. 1 root root 1367 3月   8 00:19 ca.pem
-rw-------. 1 root root 1679 3月   8 00:23 kube-proxy-key.pem
-rw-r--r--. 1 root root 1411 3月   8 00:23 kube-proxy.pem
-rw-------. 1 root root 1679 3月   8 00:22 server-key.pem
-rw-r--r--. 1 root root 1635 3月   8 00:22 server.pem
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: