【云原生K8s】二进制部署单master K8s+etcd集群

这篇具有很好参考价值的文章主要介绍了【云原生K8s】二进制部署单master K8s+etcd集群。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

一、实验设计

                                                mater节点
master01 192.168.190.10 kube-apiserver kube-controller-manager kube-scheduler etcd
                                                node节点
node01 192.168.190.20 kubelet kube-proxy docker (容器引擎)
node02 192.168.190.30 kubelet kube-proxy docker (容器引擎)
                                              etcd  cluster集群
etcd节点1                                    192.168.190.10   (mater01)
etcd节点2                                    192.168.190.20     (node01)
etcd节点3                                    192.168.190.30   (node02)

【云原生K8s】二进制部署单master K8s+etcd集群,云原生,kubernetes,容器

 二、操作系统初始化配置

关闭防火墙
systemctl stop firewalld
systemctl disable firewalld
iptables -F && iptables -t nat -F && iptables -t mangle -F && iptables -X

关闭selinux
setenforce 0
sed -i 's/enforcing/disabled/' /etc/selinux/config

关闭swap
swapoff -a
sed -ri 's/.*swap.*/#&/' /etc/fstab 

根据规划设置主机名
hostnamectl set-hostname master01
hostnamectl set-hostname node01
hostnamectl set-hostname node02

在master添加hosts
cat >> /etc/hosts << EOF
192.168.80.10 master01
192.168.80.11 node01
192.168.80.12 node02
EOF

调整内核参数
cat > /etc/sysctl.d/k8s.conf << EOF
#开启网桥模式,可将网桥的流量传递给iptables链
net.bridge.bridge-nf-call-ip6tables = 1
net.bridge.bridge-nf-call-iptables = 1
#关闭ipv6协议
net.ipv6.conf.all.disable_ipv6=1
net.ipv4.ip_forward=1
EOF

sysctl --system

时间同步
yum install ntpdate -y
ntpdate time.windows.com

【云原生K8s】二进制部署单master K8s+etcd集群,云原生,kubernetes,容器

【云原生K8s】二进制部署单master K8s+etcd集群,云原生,kubernetes,容器

 三、部署 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 是 CloudFlare 公司开源的一款 PKI/TLS 工具。 CFSSL 包含一个命令行工具和一个用于签名、验证和捆绑 TLS 证书的 HTTP API 服务。使用Go语言编写。
CFSSL 使用配置文件生成证书,因此自签之前,需要生成它识别的 json 格式的配置文件,CFSSL 提供了方便的命令行生成配置文件。
CFSSL 用来为 etcd 提供 TLS 证书,它支持签三种类型的证书:
1、client 证书,服务端连接客户端时携带的证书,用于客户端验证服务端身份,如 kube-apiserver 访问 etcd;
2、server 证书,客户端连接服务端时携带的证书,用于服务端验证客户端身份,如 etcd 对外提供服务;
3、peer 证书,相互之间连接时使用的证书,如 etcd 节点之间进行验证和通信。
这里全部都使用同一套证书认证。

//在 master01 节点上操作

#准备cfssl证书生成工具
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

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

### 生成Etcd证书 ###
mkdir /opt/k8s
cd /opt/k8s/

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

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

ls
ca-config.json  ca-csr.json  ca.pem        server.csr       server-key.pem
ca.csr          ca-key.pem   etcd-cert.sh  server-csr.json  server.pem

#上传 etcd-v3.4.9-linux-amd64.tar.gz 到 /opt/k8s 目录中,启动etcd服务
cd /opt/k8s/
tar zxvf etcd-v3.4.9-linux-amd64.tar.gz
ls etcd-v3.4.9-linux-amd64
Documentation  etcd  etcdctl  README-etcdctl.md  README.md  READMEv2-etcdctl.md
------------------------------------------------------------------------------------------
etcd就是etcd 服务的启动命令,后面可跟各种启动参数
etcdctl主要为etcd 服务提供了命令行操作
------------------------------------------------------------------------------------------

【云原生K8s】二进制部署单master K8s+etcd集群,云原生,kubernetes,容器

 【云原生K8s】二进制部署单master K8s+etcd集群,云原生,kubernetes,容器

2. 创建用于存放 etcd 配置文件,命令文件,证书的目录

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

cd /opt/k8s/etcd-v3.4.9-linux-amd64/
mv etcd etcdctl /opt/etcd/bin/
cp /opt/k8s/etcd-cert/*.pem /opt/etcd/ssl/

cd /opt/k8s/
./etcd.sh etcd01 192.168.190.10 etcd02=https://192.168.190.20:2380,etcd03=https://192.168.190.30:2380
#进入卡住状态等待其他节点加入,这里需要三台etcd服务同时启动,如果只启动其中一台后,服务会卡在那里,直到集群中所有etcd节点都已启动,可忽略这个情况

#可另外打开一个窗口查看etcd进程是否正常
ps -ef | grep etcd

【云原生K8s】二进制部署单master K8s+etcd集群,云原生,kubernetes,容器

【云原生K8s】二进制部署单master K8s+etcd集群,云原生,kubernetes,容器文章来源地址https://www.toymoban.com/news/detail-629316.html

 3.把etcd相关证书文件、命令文件和服务管理文件全部拷贝到另外两个etcd集群节点

把etcd相关证书文件、命令文件和服务管理文件全部拷贝到另外两个etcd集群节点
scp -r /opt/etcd/ root@192.168.190.20:/opt/
scp -r /opt/etcd/ root@192.168.190.30:/opt/
scp /usr/lib/systemd/sys

到了这里,关于【云原生K8s】二进制部署单master K8s+etcd集群的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 二进制搭建k8s集群 master和etcd

    etcd作为服务发现系统,有以下的特点: 简单:安装配置简单,而且提供了HTTP API进行交互,使用也很简单。 安全:支持SSL证书验证。 快速:单实例支持每秒2k+读操作。 可靠:采用raft算法,实现分布式系统数据的可用性和一致性。 etcd目前默认使用2379端口提供HTTP API服务,

    2024年02月12日
    浏览(40)
  • 【云原生】K8S二进制搭建二:部署CNI网络组件

    解决了什么问题? 容器镜像(带有应用程序规范的文件)必须以标准化,安全和隔离的方式启动 标准化,因为无论它们在何处运行,都需要标准的操作规则。 安全,因为你不希望任何不应该访问它的人,对它操作。 隔离,因为你不希望应用程序影响其他应用,或受其他应用

    2024年02月10日
    浏览(37)
  • 【云原生】二进制部署k8s集群(中)搭建node节点

    在上文已经成功部署了etcd分布式数据库、master01节点, 本文将承接上文的内容,继续部署Kubernetes集群中的 worker node 节点和 CNI 网络插件 kubelet 采用 TLS Bootstrapping 机制,自动完成到 kube-apiserver 的注册,在 node 节点量较大或者后期自动扩容时非常有用。   Master apiserver 启用 T

    2024年02月09日
    浏览(51)
  • 二进制安装K8S(单Master集群架构)

    k8s集群master01:192.168.154.10 kube-apiserver kube-controller-manager kube-scheduler etcd k8s集群node01:192.168.154.11 kubelet kube-proxy docker k8s集群node02:192.168.154.12 etcd集群节点1:192.168.154.10 etcd etcd是CoreOS团队于2013年6月发起的开源项目,它的目标是构建一个高可用的分布式键值(key-value)数据库。

    2024年02月10日
    浏览(44)
  • 【云原生】K8S二进制搭建一

    集群 IP 组件 k8s集群master01 192.168.243.100 kube-apiserver kube-controller-manager kube-scheduler etcd k8s集群master02 192.168.243.104 k8s集群node01 192.168.243.102 kubelet kube-proxy docker k8s集群node02 192.168.243.103 etcd集群节点1 192.168.243.100 etcd etcd集群节点2 192.168.243.102 etcd集群节点3 192.168.243.103 etcd是CoreOS团队于

    2024年02月09日
    浏览(32)
  • 【云原生】K8S二进制搭建上篇

    集群 IP 组件 k8s集群master01 192.168.243.100 kube-apiserver kube-controller-manager kube-scheduler etcd k8s集群master02 192.168.243.104 k8s集群node01 192.168.243.102 kubelet kube-proxy docker k8s集群node02 192.168.243.103 etcd集群节点1 192.168.243.100 etcd etcd集群节点2 192.168.243.102 etcd集群节点3 192.168.243.103 etcd是CoreOS团队于

    2024年02月14日
    浏览(35)
  • [云原生] 二进制安装K8S一部分

    目前Kubernetes最新版本是v1.25,但大部分公司一般不会使用最新版本。 目前公司使用比较多的:老版本是v1.15,因为v1.16改变了很多API接口版本,国内目前使用比较多的是v1.18、v1.20。  组件部署: mater节点 mater01 192.168.136.100 kube-apiserver kube-controller-manager kube-scheduler etcd        

    2024年02月22日
    浏览(31)
  • 【云原生】K8S二进制搭建三:高可用配置

    在所有 node 节点上操作 在 master01 节点上操作 初始化环境 初始化环境看这里 在 master01 节点上测试 仪表板是基于Web的Kubernetes用户界面。您可以使用仪表板将容器化应用程序部署到Kubernetes集群,对容器化应用程序进行故障排除,并管理集群本身及其伴随资源。您可以使用仪表

    2024年02月14日
    浏览(40)
  • k8s二进制部署--部署高可用

    notready是因为没有网络,因此无法创建pod 在同一个pod中的容器共享资源和网络,使用同一个网络命名空间。 每个pod都有一个全局的真实IP地址,同一个node之间的不同pod可以直接使用对方pod的ip地址进行通信。 pod1和pod2是通过docker0的网桥来进行通信。 Pod 地址与 docker0 在同一网

    2024年02月03日
    浏览(41)
  • k8s的二进制部署(源码包部署)

    实验条件: 主机名 IP地址 组件 作用 master01 20.0.0.17 kube-apiserver、kube-controller-manager、kube-scheduler、etcd k8s部署 master02 20.0.0.27 kube-apiserver、kube-controller-manager、kube-scheduler node01 20.0.0.37 kubelet、kube-proxy、etcd node02 20.0.0.47 kubelet、kube-proxy、etcd nginx01 20.0.0.11 nginx、keepalived 负载均衡

    2024年02月04日
    浏览(53)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包