linux cpu占用率如何看
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 < #上传 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 < #复制配置文件到其他节点scp -r /opt/etcd/ root@192.168.10.28:/opt/scp -r /opt/etcd/ root@192.168.10.29:/opt/scp /usr/lib/systemd/system/etcd.service root@192.168.10.28:/usr/lib/systemd/system/scp /usr/lib/systemd/system/etcd.service root@192.168.10.29:/usr/lib/systemd/system/#在 node01 节点上操作vim /opt/etcd/cfg/etcd#[Member]ETCD_NAME="etcd02" #修改ETCD_DATA_DIR="/var/lib/etcd/default.etcd"ETCD_LISTEN_PEER_URLS=" #修改ETCD_LISTEN_CLIENT_URLS=" #修改#[Clustering]ETCD_INITIAL_ADVERTISE_PEER_URLS=" #修改ETCD_ADVERTISE_CLIENT_URLS=" #修改ETCD_INITIAL_CLUSTER="etcd01 192.168.10.27 etcd02=start etcdsystemctl enable etcdsystemctl status etcd#在node02 节点上操作vim /opt/etcd/cfg/etcd#[Member]ETCD_NAME="etcd03" #修改ETCD_DATA_DIR="/var/lib/etcd/default.etcd"ETCD_LISTEN_PEER_URLS=" #修改ETCD_LISTEN_CLIENT_URLS=" #修改#[Clustering]ETCD_INITIAL_ADVERTISE_PEER_URLS=" #修改ETCD_ADVERTISE_CLIENT_URLS=" #修改ETCD_INITIAL_CLUSTER="etcd01 192.168.10.27etcd02=start etcdsystemctl enable etcdsystemctl status etcd systemctl daemon-reloadsystemctl restart etcd.servicesystemctl enable etcd.service systemctl status etcd.service 2.10 检查群集状态 #检查etcd群集状态#ETCDCTL_API=3表示v3版本的接口cd /opt/etcd/ssl#可查看到哪个是leaderETCDCTL_API=3 /opt/etcd/bin/etcdctl --cacert=/opt/etcd/ssl/ca.pem --cert=/opt/etcd/ssl/server.pem --key=/opt/etcd/ssl/server-key.pem --endpoints="endpoint status --write-out=tableETCDCTL_API=3 /opt/etcd/bin/etcdctl --cacert=/opt/etcd/ssl/ca.pem --cert=/opt/etcd/ssl/server.pem --key=/opt/etcd/ssl/server-key.pem --endpoints="endpoint health --write-out=table#查看etcd集群成员列表ETCDCTL_API=3 /opt/etcd/bin/etcdctl --cacert=/opt/etcd/ssl/ca.pem --cert=/opt/etcd/ssl/server.pem --key=/opt/etcd/ssl/server-key.pem --endpoints="--write-out=table member list –cert-file:识别HTTPS端使用SSL证书文件–key-file:使用此SSL密钥文件标识HTTPS客户端–ca-file:使用此CA证书验证启用https的服务器的证书–endpoints:集群中以逗号分隔的机器地址列表cluster-health:检查etcd集群的运行状况
版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们jiasou666@gmail.com 处理,核实后本网站将在24小时内删除侵权内容。
发表评论
暂时没有评论,来抢沙发吧~