教你一次性成功安装K8S集群(基于一主两从模式)
2020-12-01 07:00:10作者个人研发的在高并发场景下,提供的简单、稳定、可扩展的延迟消息队列框架,具有精准的定时任务和延迟队列处理功能。自开源半年多以来,已成功为十几家中小型企业提供了精准定时调度方案,经受住了生产环境的考验。
作者个人研发的在高并发场景下,提供的简单、稳定、可扩展的延迟消息队列框架,具有精准的定时任务和延迟队列处理功能。自开源半年多以来,已成功为十几家中小型企业提供了精准定时调度方案,经受住了生产环境的考验。为使更多童鞋受益,现给出开源框架地址:
PS: 欢迎各位Star源码,也可以pr你牛逼哄哄的代码。
写在前面
研究K8S有一段时间了,最开始学习K8S时,根据网上的教程安装K8S环境总是报错。所以,我就改变了学习策略,先不搞环境搭建了。先通过官网学习了K8S的整体架构,底层原理,又硬啃了一遍K8S源码。别问我为哈这样学,只是我觉得对我个人来说,这样学能让我更好的理解整套云原生体系。这不,这次,我总结了如何一次性成功安装K8S集群的方法。我们今天先来说说如何基于一主两从模式搭建K8S集群。后面,我们再上如何完全无坑搭建K8S高可用集群的方案。
文章和搭建环境所需要的yml文件已收录到:和。如果文件对你有点帮助,别忘记给个Star哦!
集群规划
主机名 | 节点 | 操作系统版本 |
---|---|---|
192.168.175.101 | CentOS 8.0.1905 | |
192.168.175.102 | CentOS 8.0.1905 | |
192.168.175.103 | CentOS 8.0.1905 |
基础配置
在三台 服务器 上的/etc/hosts文件中添加如下配置项。
检查系统环境
分别在三台服务器上检查系统的环境。
1.查看服务器操作系统版本
安装Docker和K8S集群的服务器操作系统版本需要在CentOS 7以上。
2.查看服务器的主机名
注意:集群中服务器的主机名不能是localhost。
3.查看服务器的CPU核数
注意:集群中服务器的CPU核数不能少于2个。
4.查看服务器网络
以binghe101(Master)服务器为例。在服务器上执行 ip route show 命令来查看服务器的默认网卡,如下所示。
在上面的输出信息中有如下一行标注了binghe101服务器所使用的默认网卡。
可以看到,binghe101服务器使用的默认网卡为ens33。
接下来,使用ip address命令查看服务器的IP地址,如下所示。
可以看到,binghe101服务器上的默认网卡的IP地址为192.168.175.101,K8S将使用此 IP 地址与集群内的其他节点通信。集群中所有K8S所使用的IP地址必须可以互通。
Docker安装
分别在三台服务器上安装Docker并配置阿里云镜像加速器。
1.安装Docker
新建auto_install_docker.sh脚本文件
文件的内容如下所示。
或者指定Docker的版本进行安装,此时auto_install_docker.sh脚本文件的内容如下所示。
使用如下命令赋予auto_install_docker.sh文件可执行权限。
接下来,直接运行auto_install_docker.sh脚本文件安装Docker即可。
2.配置阿里云镜像加速器
新建脚本文件aliyun_docker_images.sh。
文件内容如下所示。
为aliyun_docker_images.sh脚本文件赋予可执行权限,如下所示。
执行aliyun_docker_images.sh脚本文件配置阿里云镜像加速器。
系统设置
分别在三台服务器上进行系统设置。
1.安装nfs-utils
2.关闭防火墙
3.关闭 SeLinux
4.关闭 swap
5.修改 /etc/sysctl.conf
新建sys_config.sh脚本文件。
sys_config.sh脚本文件的内容如下所示,
执行如下命令赋予sys_config.sh文件可执行权限。
执行sys_config.sh脚本文件。
安装K8S
分别在三台服务器上安装K8S。
1.配置K8S yum源
新建k8s_yum.sh脚本文件。
文件的内容如下所示。
赋予k8s_yum.sh脚本文件的可执行权限。
执行k8s_yum.sh文件。
2.卸载旧版本的K8S
3.安装kubelet、kubeadm、kubectl
4.修改docker Cgroup Driver为systemd
5.重启 docker,并启动 kubelet
综合安装脚本
综上,上述安装Docker、进行系统设置,安装K8S的操作可以统一成auto_install_docker_k8s.sh脚本。脚本的内容如下所示。
注意:我安装的K8S版本是1.18.2,大家在安装K8S时,也可以选择其他版本进行安装
赋予auto_install_docker_k8s.sh脚本文件可执行权限。
执行auto_install_docker_k8s.sh脚本文件。
注意:需要在每台服务器上执行auto_install_docker_k8s.sh脚本文件。
初始化Master节点
只在binghe101服务器上执行的操作。
1.初始化Master节点的网络环境
2.初始化Master节点
在binghe101服务器上创建init_master.sh脚本文件,文件内容如下所示。
赋予init_master.sh脚本文件可执行权限。
执行init_master.sh脚本文件。
3.查看Master节点的初始化结果
(1)确保所有容器组处于Running状态
如下所示。
(2) 查看 Master 节点初始化结果
如下所示。
初始化Worker节点
1.获取join命令参数
在Master节点上执行如下命令获取join命令参数。
具体执行如下所示。
其中,有如下一行输出。
这行代码就是获取到的join命令。
注意:join命令中的token的有效时间为 2 个小时,2小时内,可以使用此 token 初始化任意数量的 worker 节点。
2.初始化Worker节点
针对所有的 worker 节点执行,在这里,就是在binghe102服务器和binghe103服务器上执行。
创建init_worker.sh脚本文件,文件内容如下所示。
其中,kubeadm join…就是master 节点上 kubeadm token create 命令输出的join。
赋予init_worker.sh脚本文件文件可执行权限,并执行init_worker.sh脚本文件。

3.查看初始化结果
在Master节点执行如下命令查看初始化结果。
如下所示。
注意:kubectl get nodes命令后面加上-o wide参数可以输出更多的信息。
重启K8S集群引起的问题
1.Worker节点故障不能启动
Master 节点的 IP 地址发生变化,导致 worker 节点不能启动。需要重新安装K8S集群,并确保所有节点都有固定的内网 IP 地址。
2.Pod崩溃或不能正常访问
重启服务器后使用如下命令查看Pod的运行状态。
发现很多 Pod 不在 Running 状态,此时,需要使用如下命令删除运行不正常的Pod。
注意:如果Pod 是使用 Deployment、StatefulSet 等控制器创建的,K8S 将创建新的 Pod 作为替代,重新启动的 Pod 通常能够正常工作。
envi中监督分类和非监督分类有什么区别?各是怎么定义的
监督百分类是需要学习训练的分类方法,如最大似然分类,人工神经网络分类,即是需要事先为度每类地物在遥感图像上采集样本数问据,之后通过学习训练过程才答来分类;非监督分类不需要人工采集地物样本点数据,多是通过聚类的方法来自动分类,主要版有isodata,k均值等.总体权来说,监督分类的效果要优于非监督分类.
关于云计算和云存储的意思?
云计算具体指的是IT基础设施的交付和使用模式,指通过网络以按需、易扩展的方式获得所需服务,这种服务可以是IT和软件、互联网相关,也可是其他服务。 这是云计算的一个核心的概念,其实简单的理解就是将大量用网络连接的计算资源统一管理和调度,构成一个计算资源池向用户按需服务。 提供资源的网络被称为“云”。 这种“云”服务,我们可以随时的享用,只是这种服务有偿的。 云存储官方定义是一个以数据存储和管理为核心的云计算系统。 即是指通过集群应用、网格技术或分布式文机房集中监控系统件系统等功能,将网络中大量各种不同类型的存储设备通过应用软件集合起来协同工作,共同对外提供数据存储和业务访问功能的一个系统。 坚果云企业网盘云存储不同于传统的“网盘”和“云存储”服务,坚果云为用户提供随着时间推移,增大空间的云存储服务。
云主机和云服务器是不是同一个东西啊?
云计算服务器(又称云服务器或云主机)主要是面向中小企业用户与高端用户提供基于互联网的基础设施服务,是云计算服务体系中的一项主机产品,该产品可以有效的解决了传统物理主机与 VPS 服务中,存在的管理难度大,业务扩展性弱的缺陷。在实际应用中的云主机具有三个方面的弹性能力:
主机服务配置与业务规模可以根据用户的需要进行配置,并可灵活的进行调整;
用户申请的主机服务可以实现快速供应和部署(实时在线开通),实现了集群内弹性可伸缩;
计费方式灵活,用户不需要支付押金,且有多种支付方式供用户选择。
发表评论