Kubernetes单节点二进制部署

一、常见的K8S部署方式:

1.Minikube

Minikube是一个工具,可以在本地快速运行一个单节点微型K8S,仅用于学习、预览K8S的一些特性使用。部署地址:https://kubernetes.io/docs/setup/minikube

2.Kubeadmin

Kubeadmin也是一个工具,提供kubeadm init和kubeadm join,用于快速部署K8S集群,相对简单。
https:// kubernetes.io/docs/reference/setup-tools/kubeadm/kubeadm/

3.二进制安装部著

生产首选,从官方下载发行版的二进制包,手动部署每个组件和自签TLS证书,组成K8S集群,新手推荐。https://github.com/ kubernetes/kubernetes/releases

二、二进制部署

1

环境准备

k8s集群master01:192.168.19.11  kube-apiserver kube-controller-manager kube-scheduler etcd
k8s集群master02:192.168.19.33 (为多节点准备)

k8s集群node01:192.168.19.44   kubelet kube-proxy docker flannel
k8s集群node02: 192.168.19.55

etcd集群节点1:192.168.19.11   etcd
etcd集群节点2:192.168.19.44
etcd集群节点3:192.168.19.55

负载均衡nginx+keepalive01 (master):192.168.19.66
负载均衡nginx+keepalive02 (backup):192.168.19.77

systemetl stop firewalld
systemctl disable firewalldsetenforce 0

1.部署etcd

etcd是Coreos团队于2013年6月发起的开源项目,它的目标是构建一个高可用的分布式键值(key-value)数据库。etcd内部采用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是Cloudrlare公司开源的一款、 PKI/TLS 工具。CESSI包含一个命令行工具和一个用于签名、验证和捆绑TLS证书的HTTP API 服务。使用Go语言编写。

CFSSL使用配置文件生成证书,因此自签之前,需要生成它识别的json格式的配置文件,CFSSL提供了方便的命令行生成配置文件。CFSSL用来为 etcd提供TLS 证书,它支持签三种类型的证书:
(1)client 证书,服务端连接客户端时携带的证书,用于客户端验证服务端身份,如 kube-apiserver访问etcd;
(2)server 证书,客户端连接服务端时携带的证书,用于服务端验证客户端身份,如 etcd对外提供服务;
(3)peer 证书,相互之间连接时使用的证书,如 etcd节点之间进行验证和通信。
这里全部都使用同一套证书认证。

(1)修改主机名,关闭防火墙

# k8smaster01(192.168.19.11
hostnamectl set-hostname k8smaster01
su
systemctl stop firewalld.service 
systemctl disable firewalld.service 
setenforce 0

# k8snode01(192.168.19.44
hostnamectl set-hostname k8snode01
su
systemctl stop firewalld.service 
systemctl disable firewalld.service
setenforce 0

# k8snode02(192.168.19.55
hostnamectl set-hostname k8snode02
su
systemctl stop firewalld.service 
systemctl disable firewalld.service
setenforce 0

(2)上传证书制作工具(k8smaster01上操作)

cd /usr/local/bin
上传 cfssl  cfssl-certinfo  cfssljson
chmod +x *

注释
cfssl:证书签发的工具命令
cfssljson: cfssl生成的证书(json格式)变为文件承载式证书
cfssl-certinfo:验证证书的信息
cfssl-certinfo -cert<证书名称>    #查看证书的信息

2

#创建k8s工作目录
cd /opt
rm -rf *
mkdir k8s/

#上传etcd-cert.sh和etcd.sh到/opt/k8s/目录中
chmod +x etcd-cert.sh etcd.sh

#创建用于生成CA证书、etcd服务器证书以及私钥的目录
mkdir etcd-cert
mv etcd-cert.sh etcd-cert/
cd etcd-cert/
./etcd-cert.sh
#生成CA证书、etcd服务器证书以及私钥
ls

3

(3)启动etcd服务(k8smaster01上操作)

#etcd二进制包地址: https://github.comletcd-ioletcd/releases

#上传 etcd-v3.3.10-linux-amd64.tar.gz到/opt/k8s/目录中,解压etcd压缩包
cd /opt/k8s/
tar zxvf etcd-v3.3.10-linux-amd64.tar.gz
ls etcd-v3.3.10-linux-amd64

注释
etcd就是etcd服务的启动命令,后面可跟各种启动参数
etedctl主要为etcd服务提供了命令行操作

#创建用于存放etcd配置文件,命令文件,证书的目录
mkdir -p /opt/etcd/{
   cfg,bin,ssl}

mv etcd-v3.3.10-linux-amd64/etcd etcd-v3.3.10-linux-amd64/etcdctl /opt/etcd/bin

cp etcd-cert/*.pem /opt/etcd/ssl/
./etcd.sh etcd01 192.168.19.11 etcd02=https://192.168.19.44:2380,etcd03=https://192.168.19.55:2380
#进入卡住状态等待其他节点加入,这里需要三台etcd服务同时启动,如果只启动其中一台后,服务会卡在那里,直到集群中所有etcd节点都己启动,可忽略这个情况
#另外打开一个窗口查看etcd进程是否正常
ps -ef | grep etcd

4

#把etcd相关证书文件和命令文件全部拷贝到另外两个etcd集群节点
scp -r /opt/etcd/ root@192.168.19.44:/opt/
scp -r /opt/etcd/ root@192.168.19.55:/opt/

#把etcd服务管理文件拷贝到另外两个etcd集群节点
scp /usr/lib/systemd/system/etcd.service root@192.168.19.44:/usr/lib/systemd/system/
scp /usr/lib/systemd/system/etcd.service root@192.168.19.55:/usr/lib/systemd/system/

5
6

(4)修改node01和node02的配置文件(k8snode01和k8snode02)

# k8snode01(192.168.19.44
vim /opt/etcd/cfg/etcd
#[
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值