扫二维码与项目经理沟通
我们在微信上24小时期待你的声音
解答本文疑问/技术咨询/运营咨询/技术建议/互联网交流
k8s官方网站:,可自行查看相关文档说明
成都创新互联公司主要从事成都网站建设、网站建设、网页设计、企业做网站、公司建网站等业务。立足成都服务宝丰,十多年网站建设经验,价格优惠、服务专业,欢迎来电咨询建站服务:18980820575
k8s-master:Ubuntu--192.168.152.100
k8s-node01:Ubuntu--192.168.152.101
k8s-node02:Ubuntu--192.168.152.102
全部已安装docker,未安装可根据官方文档安装:
1,禁止swap分区
K8s的要求,确保禁止掉swap分区,不禁止,初始化会报错。
在每个宿主机上执行:
2,确保时区和时间正确
时区设置
3,关闭防火墙和selinux
ubuntu 查看防火墙命令,ufw status可查看状态,ubuntu20.04默认全部关闭,无需设置。
4,主机名和hosts设置(可选)
非必须,但是为了直观方便管理,建议设置。
在宿主机分别设置主机名:k8s-master,k8s-node01,k8s-node02
hosts设置
1,更改docker默认驱动为systemd
为防止初始化出现一系列的错误,请检查docker和kubectl驱动是否一致,否则kubectl没法启动造成报错。版本不一样,docker有些为cgroupfs,而kubectl默认驱动为systemd,所以需要更改docker驱动。
可查看自己docker驱动命令:
更改docker驱动,编辑 /etc/docker/daemon.json (没有就新建一个),添加如下启动项参数即可:
重启docker
需要在每台机器上安装以下的软件包:
2,更新 apt 包索引并安装使用 Kubernetes apt 仓库所需要的包
安装软件包以允许apt通过HTTPS使用存储库,已安装软件的可以忽略
3,下载公开签名秘钥、并添加k8s库
国外 :下载 Google Cloud 公开签名秘钥:
国内:可以用阿里源即可:
请注意,在命令中,使用的是Ubuntu 16.04 Xenial 版本, 是可用的最新 Kubernetes 存储库。所以而非20.04 的focal。
4,更新 apt 包索引,安装 kubelet、kubeadm 和 kubectl,并锁定其版本
锁定版本,防止出现不兼容情况,例如,1.7.0 版本的 kubelet 可以完全兼容 1.8.0 版本的 API 服务器,反之则不可以。
只需要在master上操作即可。
1,初始化错误解决(没有报错的可以跳过这条)
错误提示1:
原因:kubectl没法启动,journalctl -xe查看启动错误信息。
解决方案:k8s建议systemd驱动,所以更改docker驱动即可,编辑 /etc/docker/daemon.json (没有就新建一个),添加如下启动项参数即可:
重启docker和kubectel
错误提示2:
原因:初始化生产的文件,重新初始化,需要删除即可
错误提示3:
解决方法:重置配置
2,初始化完成
无报错,最后出现以下,表示初始化完成,根据提示还需要操作。
根据用户是root或者普通用户操作,由于大多环境不会是root用户,我也是普通用户,所以选择普通用户操作命令:
如果是root用户,执行以下命令:
初始化完成,用最后的提示命令 kubeadm join.... 在node机器上加入集群即可。
3,主节点pod网络设置
主节点支持网络插件:
这里安装Calico网络插件:
Calico官网提供三种安装方式,1)低于50个节点,2)高于50个节点,3)etcd datastore(官方不建议此方法)。
这里选择第一种:
安装完成后, kubectl get node 可查看节点状态,由NotReady变成Ready则正常,需要等几分钟完成。
1,node加入master节点
在所有node节点机器操作,统一已安装完成 kubelet、kubeadm 和 kubectl,用master初始化完成后最后提示命令加入,切记要用root用户。
加入成功后,提示如下:
再次查看kubelet服务已正常启动。
2,需注意的坑
1:加入主节点,需要 root 用户执行词条命令,才可以加入master主节点。
node在没有加入主节点master之前,kubelet服务是没法启动的,是正常情况,会报错如下:
原因是缺失文件,主节点master初始化 `kubeadm init`生成。
node节点是不需要初始化的,所以只需要用root用户`kubeadm join`加入master即可生成。
2:如果加入提示某些文件已存在,如:
原因是加入过主节点,即使没成功加入,文件也会创建,所以需要重置节点,重新加入即可,重置命令:
3,在master查看节点
加入完成后,在master节点 kubectl get node 可查看已加入的所有节点:
这里k8s集群创建完成,下一步使用可参考我的下一篇文章:k8s初步熟悉使用介绍,实践搭建nginx集群
本文介绍在Linux HA集群中的仲裁和分区概念。
集群正常工作时,所有节点都在一个分区内(partition),分区内的所有节点将选举出一个仲裁节点,这个仲裁节点负责向其他节点发送集群控制命令。当网络发生故障时,集群中的节点发现无法和仲裁节点通信,则会在可通信的范围内重新选举一个新的仲裁节点。此时集群内可能出现多个仲裁节点,每个仲裁节点的管理范围为一个分区。
下文中将通过防火墙策略的设置模拟集群网络中通信出现异常的各种情况,如:
通过防火墙策略可以精准控制两两节点之间的连通性,使我们能更准确的了解在网络连通性发生变化对集群的影响。
在所有节点上启动防火墙,并添加策略对整个管理网络192.168.56.0/24放通。
保存上述策略,之后在实验过程会使用iptables命名加入新策略模拟网络通信异常效果,如果需要恢复网络通信正常状态,直接不保存策略重启firewalld服务即可。
通过pcs status查看集群状态:
上述结果显示当前集群只有一个分区,分区内的节点包括全部3台主机,仲裁节点是ha-host3,这表示集群间的通信是完好的。下图显示当前集群状态:
在ha-host1上添加以下策略:
该策略将使得ha-host1和ha-host3之间的通信中断,在所有节点上查看集群状态:
上面的结果显示,ha-host1失去和当前仲裁节点ha-host3的联系之后,和ha-host2一起组成新的分区并选举出ha-host2作为新的仲裁节点。有趣的是ha-host2和ha-host3的通信并未中断,但是他被“优先级较高的ha-host1抢走并推举为老大”,剩下ha-host3独自留在其自身所在的分区。此时ha-host3所在的分区提示了“partition WITHOUT quorum”,表示该分区中的节点数目不超过一半。
下图显示当前集群状态:
在ha-host1上再添加策略:
使其和当前的仲裁节点ha-host2的通信中断,集群状态变为:
发现ha-host2和ha-host3一起组成了新的分区,由于ha-host1所在分区节点数不足一半,无法启动资源,虚拟ip资源vip被切换到了ha-host2上。下图显示当前集群状态:
如果再把ha-host2和ha-host3直接的通信中断,此时3个节点间两两均无法通信。每个节点都是一个分区,每个分区的主机数均不过半,因此无法启动任何资源,原先运行在ha-host2上的vip也停止了。
当前集群状态如下图:
如果没有运维人员或运维软件,但是又面临在一个集群中每台机器都执行一个命令时,总不能真的登录每一台吧。那这里就起一个简单的命令分发执行脚本。
0、确保脚本所在的机器能够免密登录到集群其他机器
SSH免密登录配置
1、将集群的IP都写入一个文件中
2、编写命令分发脚本
如果机器数量少,可以替换第三行语句为
如果机器IP配置的映射名有规律,也可以替换第三行语句为
同时后面的 $i 替换为 hadoop$i
3、测试
姓名:张昊楠 学号:21021210691
存储NAS 文件操作
df -h查看空间使用情况
警惕超大 nohup.out
ls 当前路径下的文件列表
pwd 查看当前路径
cd 进入某个文件夹
任务提交
任务提交前
qhost--查看集群负载状态
qsub / qsub-sge.pl--提交任务
qstat--查看任务状态
qdel / qmod--任务控制
任务查看
qhost -j---列出所有用户在每个节点上的任务
qhost -q---列出每个节点上每个队列的任务数
qhost -u username---列出某个用户在每个节点上的任务
提交命令
qsub -cwd -q queue.q test.sh
qsub-sge.pl --maxproc 50 --resource vf=5G --queue queue.q test.sh
任务查看2
qstat -u username---查看某个用户的任务
qstat -u *,---查看所有用户的任务
qstat –j jobs_ID---查看某个任务的详细信息
查看.e和.o文件
.e:错误信息
.o:标准输出
任务控制
qdel jobID---删除某个任务
qdel -u username---删除某个用户的所有任务
qmod -s jobID--挂起某个任务
qmod -us jobID---继续运行某个挂起的任务
按任务占用内存大小选择相应的队列
查看队列 qstat -g c
QUEUE
PE.q--并行
cloud.q--云平台
general.q--96G节点
middle.q--96G节点
great.q--大内存节点
plus.q--大内存节点
single.q--Trinity组装
single._p.q---Trinity组装(占用内存较大)
关于LVS负载均衡
一、什么是负载均衡:
负载均衡集群提供了一种廉价、有效、透明的方法,来扩展网络设备和
服务器的负载、带宽、增加吞吐量、加强网络数据处理能力,提高网络的灵活性
和可用性。
二、搭建负载均衡服务的需求:
1)把单台计算机无法承受的大规模的并发访问或者数据流量分担到多台节点设备上
分别处理,减少用户等待响应的时间,提升用户体验。
2)单个重负载的运算分担到多台节点设备上做并行处理,每个节点设备结束后,
将结果汇总,返回给用户,系统处理能力得到大幅度提升。
3)7*24的服务保证,任意一个或多个有限节点设备宕机,要求不能影响业务。
三、LVS的介绍:
LVS是Linux Virtual Server的简写,即Linux虚拟服务器,是一个虚拟的服务器
集群系统,可以在UNIX/LINUX平台下实现负载均衡集群功能。
该项目是在1998年5月由章文嵩博士组织成立的,是中国国内最早出现的自由
软件项目之一。
四、关于LVS的配置使用:
LVS负载均衡调度技术是在Linux内核中实现的,因此,被称为Linux
虚拟服务器。我们使用该软件配置LVS时候,不能直接配置内核中的ipvs,
而需要使用ipvs的管理工具ipvsadm进行管理,ipvs的管理工具ipvsadm管理ipvs。
五、LVS技术点小结:
1)真正实现负载均衡的工具是ipvs,工作在linux内核层面。
2)LVS自带的ipvs管理工具是ipvsadm。
3)keepalived实现管理ipvs及对负载均衡器的高可用。
4)Red hat工具Piranha WEB管理实现调度的工具ipvs。
六、LVS体系结构与工作原理:
1)LVS集群负载均衡接收服务的所有入站客户端计算机请求,并根据调度算法决定哪个集群节点应该处理回复请求。
负载均衡(LB)有时也被称为LVS Director(简称 Director).
2)LVS虚拟服务器的体系结构如下图,一组服务器通过高速的局域网或者地理分布
的广域网相互连接,在他们的前端有一个负载调度器(Load Balancer)。负载调度器能
无缝地将网络请求调度到真正的服务器上,从而使得服务器集群的结构对客户是透明的,
客户访问集群系统提供的网络服务就像访问一台高性能、高可用的服务器一样。客户程序
不受服务器集群的影响不需做任何修改。系统的伸缩性通过在服务集群中透明地加入和删除
一个节点来达到,通过检测节点或服务进程故障和正确的重置系统达到高可用性。由于我们的负载调度技术在
linux内核中实现的,我们称之为linux虚拟服务器(Linux Virtual Server)。
七、LVS社区提供了一个命名的约定:
名称: 缩写
虚拟IP地址(Virtual IP Address) VIP
说明:VIP为Director用于向客户端计算机提供服务的ip地址,
比如: 域名就解析到vip上提供服务。
-------------------------------------------------------------------------------
真实ip地址(Real Server ip Address) 缩写:VIP
说明:在集群下面节点上使用的ip地址,物理ip地址。
-----------------------------------------------------------------------------------
Director的ip地址(Director ip Adress) 缩写:DIP
说明:Director用于连接内外网络的ip地址,物理网卡上的IP地址,
是负载均衡上的ip。
-------------------------------------------------------------------------------------
客户端主机IP地址(Client IP Address) 缩写:CIP
说明:客户端用户计算机请求集群服务器的IP地址,该地址用作发送
给集群的请求的源ip地址。
----------------------------------------------------------------
LVS集群内部的节点称为真实服务器(Real server),也叫做集群节点。请求集群服务的
计算机称为客户端计算机。
与计算机通常在网上交换数据包的方式相同,客户端计算机、Director
和真实服务器使用IP地址彼此进行通信。
------------------------------------------------------------------------------------------
八、LVS集群的3种工作模式介绍与原理讲解
1)IP虚拟服务软件ipvs,在调度器的实现技术中,IP负载均衡技术是
效率最高的。在已用的ip负载均衡技术中有通过网络地址转换
(Network Address Translation)将一组服务器构成一个高性能的、高可用的虚拟服务器,
我们称之为VS、NAT技术(Virtual Server Network Adress Translation)。
2)在分析VS/NAT的缺点和网络服务的非对称性的基础上,我们提出通过IP隧道实现虚拟服务器的
方法VS/TUN(Virtual Server via IP Tunneling)和通过直接路由实现虚拟服务
器的方法VS/DR(Virtual Server via Director Routing),它们可以极大地提高系统的伸缩性。
3)淘宝开源的模式FULLNAT。
LVS的四种工作模式:
缩写及全拼:
NAT(Network Adress Translation)、TUN(Tunneling)、
DR(Director Routing)、FULLNAT(FULL Network address Translation)
-------------------------------------------------------------------------------------------
九、什么是ARP协议:
1) ARP协议:全称"Address Resolution Protocol",中文名地址解析协议,使用ARP协议可
实现通过IP地址获得得对应主机的物理地址(MAC地址)。
在TCP/IP的网络环境下,每个联网的主机都会被分配一个32位的ip地址,
这种互联网地址是在网际范围标识主机的一种逻辑地址。为了让报文在
物理网路上传输,还必须要知道对方目的主机的物理地址(MAC)才行。这样就存在把IP地址变成
物理地址的地址转换的问题。
在以太网环境,为了正确地目的主机传送报文,必须把目的主机的32位IP
地址转换成为目的主机48位以太网的地址(MAC地址)。这就需要在互联层有一个服务或功能将
IP地址转换为相应的物理地址(MAC地址),这个服务或者功能就是ARP协议。
所谓的“地址解析”,就是主机在发送帧之前将目标IP地址转换成目标MAC地址的过程,
ARP协议的基本功能就是通过目标设备的ip地址,查询目标设备的MAC地址,以保证主机
间互相通信的顺利进行。
ARP协议和DNS有点相像之处,不同点是:DNS是在域名和IP之间的解析,另外,ARP协议不需要
配置服务,而DNS要配置服务才行。
ARP协议要求通信的主机双方必须在同一个物理网段(即局域网)!
2)关于ARP的小结:
1.ARP全称“Address Resolution Protocol”;
2.实现局域网内通过IP地址获取主机的MAC地址;
3.MAC地址48位主机的物理地址,局域网内唯一;
4.ARP协议类似DNS服务,但不需要配置服务。
5.ARP协议是三层协议。
--------------------------------------------------------------------------------------------------------
十、ARP缓存表:
1)每台安装有TCP/IP协议的电脑都会有一个ARP缓存表(windows 命令提示符里输入arp -a即可)。
表里的ip地址与MAC地址是一一对应的。
arp常用命令:
arp -a :查所有记录
arp -d :清除
arp -s :绑定IP和MAC
2)ARP缓存表是把双刃剑:
1.主机有了arp缓存表,可以加快ARP的解析速度,减少局域网内广播风暴。
2.正是有了arp缓存表,给恶意黑客带来了攻击服务器主机的风险,这个就是arp欺骗攻击。
3.切换路由器,负载均衡器等设备时,可能会导致短时网络中断。
3)为啥用ARP协议?
OSI模型把网络工作分为七层,彼此不直接通信打交道,只通过接口。IP地址工作在第三层,
MAC地址工作在第二层。当协议在发送数据包时,需要先封装第三层IP地址,第二层MAC地址的报头,
但是协议只知道目的节点的ip地址,不知道目的节点的MAC地址,又不能跨第二、三层,所以得用ARP协议服务,
来帮助获取目的节点的MAC地址。
4)ARP在生产环境产生的问题及解决办法:
1.ARP病毒,ARP欺骗
2.高可用服务器对之间切换时要考虑ARP缓存的问题。
3.路由器等设备无缝迁移时需要考虑ARP缓存的问题,例如:更换办公室的路由器。
5)ARP欺骗原理:
ARP攻击就是通过伪造IP地址和MAC地址对实现ARP欺骗的,如果一台主机中了ARP病毒,
那么它就能在网络中产生大量的ARP通信量,很快的进行广播以至于使网络阻塞,攻击者
只要持续不断的发出伪造的ARP响应就能更改局域网中目标主机ARP缓存中的IP-MAC条目,
造成网络中断或者中间人攻击。
linux中mon节点和mgr节点是subdir=$(ls -lt | awk -v mon=$month '$6 == mon{print $NF}')。
一个 ceph 集群至少要有一个 mon,可以是一三五七等等这样的奇数个. Mgr ( Manager ) :负责跟踪运行时指标和 Ceph 集群的当前状态,包括存储利用率。
良好的界面:
Linux同时具有字符界面和图形界面。在字符界面用户可以通过键盘输入相应的指令来进行操作。它同时也提供了类似Windows图形界面的X-Window系统,用户可以使用鼠标对其进行操作。在X-Window环境中就和在Windows中相似,可以说是一个Linux版的Windows。
可以运行在掌上电脑、机顶盒或游戏机上。2001年1月份发布的Linux 2.4版内核已经能够完全支持Intel64位芯片架构。同时Linux也支持多处理器技术。多个处理器同时工作,使系统性能大大提高。
我们在微信上24小时期待你的声音
解答本文疑问/技术咨询/运营咨询/技术建议/互联网交流