文章目录
常见的K8s按照部署方式
Mini kube
Minikube是一个工具,可以在本地快速运行一个单节点微型K8S,仅用于学习、预览K8S的一些特性使用
部署地址: https://kubernetes.io/decs/setup/minikube
Kubeadmin
Kubeadmin也是一个工具,提供kubeadm init 和kubeadm join, 用于快速部署K8S集群,相对简单
https://kubernetes.io/docs/reference/setup-tools/kubeadm/kubeadm/
二进制安装部署
生产首选,从官方下载发行版的二进制包,手动部署每个组件和自签TLS证书,组成K8S集群,新手推荐
https://github.com/kubernetes/kubernetes/releases
Kubernetes二进制部署
环境准备
服务器 | IP地址 | 部署服务 |
---|---|---|
k8s集群master01 | 192.168.111.80 | kube-apiserver kube- controller-manager kube- scheduler etcd |
k8s集群master02 | 192.168.111.70 | kube-apiserver kube- controller-manager kube- scheduler etcd |
k8s集群node01 | 192.168.111.90 | kubelet kube-proxy docker flannel |
k8s集群node02 | 192.168.111.100 | kubelet kube-proxy docker flannel |
etcd集群节点1 | 192.168.111.80 | etcd |
etcd集群节点2 | 192.168.111.90 | etcd |
etcd集群节点3 | 192.168.111.100 | etcd |
ps:etcd集群可以用3台服务器单独做,但我我们这里有限,就使用单master节点做,做一个master,两个node节点
部署etcd集群
- etcd是Coreos团队于2013年6月发起的开源项目,它的目标是构建一-个高可用的分布式键值( key-value) 数据库。etdd内部采用raft协议作为一致性算法,etcd是go语言编写的。
- etcd作为服务发现系统,有以下的特点:
- 简单:安装配置简单,而且提供了HTTP API进行交互,使用也很简单
- 安全:支持SSL证书验证
- 快速:单实例支持每秒2k+读操作
- 可靠:采用raft算法,实现分布式系统数据的可用性和一致性
etcd目前默认使用2379端口提供HTTP
API服务,2380端 口和peer通信(这两个端口已经被IANA (互联网数字分配机构)官方预留给etcd)。
即etcd默认使用2379端口对外为客户端提供通讯,使用端口2380来进行服务器间内部通讯
etcd在生产环境中一般推荐 集群方式部署。由于etcd的leader选举机制,要求至少为3台或以上的奇数台
准备签发证书环境
- CFSSL是CloudFlare 公司开源的一 款PKI/TLS 工具。CFSSL包含- -个命令行工具和-一个用于签名、验证和捆绑TLS 证书的HTTP,API服务。使用Go语言编写。
- CESSL 使用配置文件生成证书,因此自签之前,需要生成它识别的json格式的配置文件,CFSSL 提供了方便的命令行生成配置文件。
- CFSSL用来为etcd提供TLS证书,它支持签三种类型的证书:
- client证书,服务端连接客户端时携带的证书,用于客户端验证服务端身份,如kube-apiserver 访问etcd
- server证书,客户端连接服务端时携带的证书,用于服务端验证客户端身份,如etcd 对外提供服务
- peer证书,相互之间连接时使用的证书,如etcd节点之间进行验证和通信。
- 这里全部都使用同一套证书认证
master01上操作部署
关闭防火墙,修改主机名
systemctl stop firewalld
setenforce 0
hostnamectl set-hostname master01
su
将证书工具文件传入opt目录下
cd /usr/local/bin
//下载证书制作工具
wget https://pkg.cfssl.org/R1.2/cfssl_linux-amd64 -o /usr/local/bin/cfssl
wget https://pkg.cfssl.org/R1.2/cfssljson_linux-amd64 -o /usr/local/bin/cfssljson
wget https://pkg.cfssl.org/R1.2/cfssl-certinfo_linux-amd64 -o /usr/local/bin/cfssl-certinfo
或
curl -L https://pkg.cfssl.org/R1.2/cfssl_linux-amd64 -o /usr/local/bin/cfssl
curl -L https://pkg.cfssl.org/R1.2/cfssljson_linux-amd64 -o /usr/local/bin/cfssljson
curl -L https://pkg.cfssl.org/R1.2/cfssl-certinfo_linux-amd64 -o /usr/local/bin/cfssl-certinfo
chmod +x /usr/local/bin/cfssl* #给文件添加一个可执行文件
工具 | 说明 |
---|---|
cfssl | 证书签发的工具命令 |
cfssljson | 将cfssl 生成的证书( json格式)变为文件承载式证书 |
cfssl-certinfo | 验证证书的信息 |
cfssl-certinfo -cert <证书名称> #查看证书的信息
上传etcd-cert.sh和 etcd.sh到/opt/k8s目录下
//创建k8s工作目录
mkdir /op