kubernetes搭建 一、基础环境和证书
一、基本环境
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
- kubernetes 环境搭建 及 基础架构介绍 及 一个进销存管理系统 简单搭建
- [Selenium With C#基础教程] Lesson-01环境搭建
- openstack 入门 【准备篇】二:基础环境的搭建和配置【centos】 M版本
- Python基础之Windows下Python3.x环境搭建
- 用Jenkins自动化搭建测试环境_Jenkins基础配置
- kubernetes环境搭建(手动篇)
- JavaScript语言基础-环境搭建
- Android学习指南基础--第一讲:Android开发环境的搭建【附件有图】
- 【1】windows下IOS开发基础环境搭建
- struts2环境搭建以及基础总结
- solr6.6教程-基础环境搭建(二)
- React-Native从零到有(1)——基础环境搭建
- DSP 基础学习 1:搭建环境与CCS6创建工程模板
- 【JAVA零基础入门系列】Day1 开发环境搭建
- 黑马程序员_java基础笔记(01)...java的环境搭建
- 黑马程序员——java基础——开发环境搭建
- jdk1.8+zookeeper+dubbo+spring+springmvc基础环境搭建
- java简介、环境搭建、入门及计算机基础
- 搭建wamp环境,数据库基础知识
- kubernetes环境搭建