【云原生Kubernetes系列第三篇】二进制部署单节点Kubernetes(k8s)v1.20

网友投稿 271 2022-10-31

【云原生Kubernetes系列第三篇】二进制部署单节点Kubernetes(k8s)v1.20

一、CA证书

CA证书中包含密钥对CA证书可以对通信加密,同时标识身份的唯一性.pem :证书

1.1 制作官方颁发的证书:

① 、创建ca密钥(文件定义) ca-key.pem② 、创建ca证书(文件定义) ca.pem

1.2 制作master端的证书(用于内部加密通讯,同时为了给与Client端颁发master签名的证书)

① 创建过程:需要以下几部 设置私钥 确保安全加密 .pem 私钥签名 确保身份真实 .csr 制作证书(需要CA官方颁发) cert.pem② 创建私钥③ 私钥签名④ 使用ca证书与密钥证书签名

1.3 制作node端证书

① 由master端制作node端密钥② 对node端的证书进行签名③ 创建一个配置文件(区别于服务端,进行客户端验证)④ 生成证书

二、K8S 二进制集群部署

k8s 默认有三种部署方式:Minikube 、kubeadm、 二进制

常见的K8S按照部署方式:

●Minikube

Minikube是一个工具,可以在本地快速运行一个单节点微型K8S,仅用于学习、预览K8S的一些特性使用。部署地址:init和kubeadm join,用于快速部署K8S集群,相对简单。K8S二进制部署

​​​分为几个模块部署​​​

1、ETCD集群2、FLANNEL网络3、单master部署4、node部署5、多master部署

2.2 实验环境

主机

IP地址

组件

k8s集群master01

192.168.10.27

kube-apiserver kube-controller-manager kube-scheduler

k8s集群node01

192.168.10.28

kubelet kube-proxy docker

k8s集群node02

192.168.10.29

kubelet kube-proxy docker

etcd集群节点1

192.168.10.27

etcd

etcd集群节点2

192.168.10.28

etcd

etcd集群节点3

192.168.10.29

etcd

​​考虑到电脑性能,我将etcd部署在master和node节点上,并且我这边只搭建两个node节点​​

2.3 操作系统初始化配置

#关闭防火墙systemctl stop firewalldsystemctl disable firewalldiptables -F && iptables -t nat -F && iptables -t mangle -F && iptables -X#-X清除自定义的规则#关闭selinuxsetenforce 0sed -i 's/enforcing/disabled/' /etc/selinux/config#关闭swapswapoff -ased -ri 's/.*swap.*/#&/' /etc/fstab #根据规划设置主机名hostnamectl set-hostname master01hostnamectl set-hostname node01hostnamectl set-hostname node02#在master添加hostscat >> /etc/hosts << EOF192.168.10.27 master01192.168.10.28 node01192.168.10.29 node02EOF#调整内核参数cat > /etc/sysctl.d/k8s.conf << EOF#开启网桥模式,可将网桥的流量传递给iptables链net.bridge.bridge-nf-call-ip6tables = 1net.bridge.bridge-nf-call-iptables = 1#关闭ipv6协议net.ipv6.conf.all.disable_ipv6=1net.ipv4.ip_forward=1EOFsysctl --system#时间同步yum install ntpdate -yntpdate time.windows.com

2.4 部署 etcd 集群

etcd是Coreos团队于2013年6月发起的开源项目,它的目标是构建一个高可用的分布式键值(key-value)数据库。etcd内部采用rart协议作为致性算法,etcd是go语言编写的。

etcd作为服务发现系统,有以下的特点:

简单:安装配置简单,而且提供了HTTPAPI进行交互,使用也很简单安全:支持SSL证书验证

快速:单实例支持每秒2k+读操作

可靠:采用raft算法,实现分布式系统数据的可用性和一致性

etcd 目前默认使用2379端口提供HTTPAPI服务,2380端口和peer通信(这两个端口已经被IANA(互联网数字分配机构)官方预留给etcd)。

即etcd默认使用2379端口对外为客户端提供通讯,使用端口2380来进行服务器间内部通讯。

etcd在生产环境中一般推荐集群方式部著。由于etcd的leader选举机制,要求至少为3台或以上的奇数台。

2.5 准备签发证书环境

CFSSL是CloudFlare公司开源的一款PKI/TLS工具。CFSSL包含一个命令行工具和一个用于签名、验证和捆绑TLS证书的HTTPAPI服务。使用Go语言编写。

CFSSIL使用配置文件生成证书,因此自签之前,需要生成它识别的json格式的配置文件,CFSSL提供了方便的命令行生成配置文件。

CFSSL用来为etcd提供TLS证书,它支持签三种类型的证书:

1.client 证书,服务端连接客户端时携带的证书,用于客户端验证服务端身份,如kube-apiserver 访问 etcd; 2.server证书,客户端连接服务端时携带的证书,用于服务端验证客户端身份,如etcd对外提供服务; 3.peer证书,相互之间连接时使用的证书,如etcd节点之间进行验证和通信。

这里为了方便全部都使用同一套证书认证,生产环境中一般不这样使用。

2.6 准备cfssl证书生成工具

​​在master01节点上操作​​

linux下载两种方式:wget 源URL地址 [-o 指定路径]curl -L 源URL地址 -o 指定路径

#准备cfssl证书生成工具wget -O /usr/local/bin/cfsslwget -O /usr/local/bin/cfssljsonwget -O /usr/local/bin/cfssl-certinfo#也可以下载好上传上去chmod +x /usr/local/bin/cfssl*

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

2.7 生成Etcd证书

mkdir /opt/k8scd /opt/k8s/#上传 etcd-cert.sh 和 etcd.sh 到 /opt/k8s/ 目录中chmod +x etcd-cert.sh etcd.sh#创建用于生成CA证书、etcd 服务器证书以及私钥的目录mkdir /opt/k8s/etcd-certmv etcd-cert.sh etcd-cert/cd /opt/k8s/etcd-cert/./etcd-cert.sh #生成了CA证书、etcd服务器证书以及私钥

​​etcd-cert.sh文件解读​​

#!/bin/bash#配置证书生成策略,让 CA 软件知道颁发有什么功能的证书,生成用来签发其他组件证书的根证书#可以定义多个项目,指定功能、日期等cat > ca-config.json < ca-csr.json <:使用 CSRJSON 文件生成生成新的证书和私钥。如果不添加管道符号,会直接把所有证书内容输出到屏幕。#注意:CSRJSON 文件用的是相对路径,所以 cfssl 的时候需要 csr 文件的路径下执行,也可以指定为绝对路径。#cfssljson 将 cfssl 生成的证书(json格式)变为文件承载式证书,-bare 用于命名生成的证书文件。#-----------------------#生成 etcd 服务器证书和私钥cat > server-csr.json <

#上传 etcd-v3.4.9-linux-amd64.tar.gz 到 /opt/k8s 目录中,启动etcd服务cd /opt/k8s/tar zxvf etcd-v3.4.9-linux-amd64.tar.gzmkdir -p /opt/etcd/{cfg,bin,ssl}cd /opt/k8s/etcd-v3.4.9-linux-amd64/#etcd相关的服务管理文件移动到bin目录下mv etcd etcdctl /opt/etcd/bin/#证书文件复制到ssl文件下cp /opt/k8s/etcd-cert/*.pem /opt/etcd/ssl/cd /opt/k8s/./etcd.sh etcd01 192.168.10.27 etcd02=启动etcd服务

#上传 etcd-v3.4.9-linux-amd64.tar.gz 到 /opt/k8s 目录中,启动etcd服务cd /opt/k8s/tar zxvf etcd-v3.4.9-linux-amd64.tar.gzmkdir -p /opt/etcd/{cfg,bin,ssl}cd /opt/k8s/etcd-v3.4.9-linux-amd64/#etcd相关的服务管理文件移动到bin目录下mv etcd etcdctl /opt/etcd/bin/#证书文件复制到ssl文件下cp /opt/k8s/etcd-cert/*.pem /opt/etcd/ssl/cd /opt/k8s/./etcd.sh etcd01 192.168.10.27etcd02=> $WORK_DIR/cfg/etcd <

–cert-file:识别HTTPS端使用SSL证书文件–key-file:使用此SSL密钥文件标识HTTPS客户端–ca-file:使用此CA证书验证启用https的服务器的证书–endpoints:集群中以逗号分隔的机器地址列表cluster-health:检查etcd集群的运行状况

版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们jiasou666@gmail.com 处理,核实后本网站将在24小时内删除侵权内容。

上一篇:潘多拉魔盒已开,AI脑机接口或将让人类变得更强
下一篇:Java自动生成编号的方法步骤
相关文章

 发表评论

暂时没有评论,来抢沙发吧~