Kubenetes二进制部署
常见的K8s按照部署方式
- Minikube
Minikube是一个工具,可以在本地快速运行一个单节点微型K8s,仅用于学习、预览K8s的一些特性使用。
部署地址: https ://kubernetes.ioldocs/setup/minikube
- Kubeadmin
Kubeadmin也是一个工具,提供kubeadm init和kubeadm join,用于快速部署K8s集群,相对简单。
https://kubernetes.io/docs/referencelsetup-tools/kubeadm/kubeadm/
- 二进制安装部署
生产首选,从官方下载发行版的二进制包,手动部署每个组件和自签TLS证书,组成K8s集群,新手推荐。
https://github.com/kubernetes/kubernetes/releases
准备环境
k8s集群master01:192.168.121.20 kube-apiserver kube-controller-manager kube-scheduler etcd
k8s集群node01:192.168.121.19 kubelet kube-proxy docker flannel
k8s集群node02:192.168.121.18
etcd集群节点1:192.168.121.17 etcd
etcd集群节点2:192.168.121.16
etcd集群节点3:192.168.121.15
负载均衡nginx+keeplive01(master):192.168.121.14
负载均衡nginx+keeplive01(backup):192.168.121.13
systemctl stop firewalld
systemctl disable firewalld
setenforce 0
etcd概念
etcd是CoreOS团队于2013年6月发起的开源项目,它的目标是构建一个高可用的分布式键值对数据库。etcd内部采用raft协议作为一致性算法,etcd是go语言编写的。
etcd作为服务发现系统,有以下特点
- 简单:安装配置简单,提供HTTP API进行交互
- 安全:支持SSL证书验证
- 快速:单实例支持每秒2k+读写操作
- 可靠:采用raft算法,实现分布式系统数据的可用性和一致性
etcd目前默认使用2379端口对外提供HTTP服务,使用2380端口进行内部通讯。
etcd在生产环境中一般推荐集群方式部署。由于etcd的leader选举机制,要求至少3台或以上的奇数台。
准备签发证书环境
CFSSL使用配置文件生成证书,因此自签之前,需要生成它识别的json格式的配置文件,CFSSL提供了方便的命令行生成配置文件。CFSSL用来为etcd提供TLS证书,它支持签三种类型的证书:
- 1、client证书:服务端连接客户端携带的证书,用于客户端验证服务端身份
- 2、server证书:客户端连接服务端时携带的证书,用于服务端验证客户端身份
- 3、peer证书:互相之间连接时使用的证书,如etcd节点之间验证和通信
一、搭建etcd集群
(一)在master01节点上操作
1、下载证书制作工具
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 -0 /usr/local/bin/cfssljson
wget https://pkg.cfssl.org/R1.2/cfssl-certinfo_linux-amd64 -0 /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: