论坛
潜水/灌水快乐,沉淀知识,认识更多同行。
ToB圈子
加入IT圈,遇到更多同好之人。
朋友圈
看朋友圈动态,了解ToB世界。
ToB门户
了解全球最新的ToB事件
博客
Blog
排行榜
Ranklist
文库
业界最专业的IT文库,上传资料也可以赚钱
下载
分享
Share
导读
Guide
相册
Album
记录
Doing
搜索
本版
文章
帖子
ToB圈子
用户
免费入驻
产品入驻
解决方案入驻
公司入驻
案例入驻
登录
·
注册
只需一步,快速开始
账号登录
立即注册
找回密码
用户名
Email
自动登录
找回密码
密码
登录
立即注册
首页
找靠谱产品
找解决方案
找靠谱公司
找案例
找对的人
专家智库
悬赏任务
圈子
SAAS
IT评测·应用市场-qidao123.com技术社区
»
论坛
›
软件与程序人生
›
云原生
›
【K8S 根本概念】Kubernets的架构和焦点概念及集群搭建 ...
【K8S 根本概念】Kubernets的架构和焦点概念及集群搭建
万万哇
论坛元老
|
2025-1-14 12:55:30
|
显示全部楼层
|
阅读模式
楼主
主题
1680
|
帖子
1680
|
积分
5040
马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。
您需要
登录
才可以下载或查看,没有账号?
立即注册
x
一、Kubernets
1.作用:用于自动部署扩展以及管理容器化部署的应用步伐,半开源,k8s的底层是基于谷歌go语言
开发
的,负责自动化
运维
管理多个容器化的应用的集群,容器编排框架的工具。现在使用的版本1.18-1.24,最主流的版本为1.20。
2.k8s的使用场景,为什么要有k8s:可以满足多节点部署,不再是单机部署;可以自动完成更新和部署;跨节点容器之间的通信问题;有自我修复机制,使得整个容器集群可以在用户的渴望状态下运行。
3.k8s特点:
自我修复:在节点故障时或者容器启动失败,节点故障时会自动把该节点上的容器重新部署到其它节点;容器启动失败时:k8s会自动的启动容器,一般会启动3次,如果3次启动失败就会认为服务不可用;在容器启动时,也会有检测机制,检测容器启动是否正常,确保集群内部的服务能够正常工作。
弹性伸缩:在一个容器占用机器的资源比较高时,k8s会自动的增加容器数量,在资源占用下降的时间会自动开释容器的数量;以最小的本钱运行服务。
自动发布:也叫滚动发布模式、默认模式;k8s在更新时不是一次性更新所有,而是更新一部门,然后再更新剩余的部门,如果有问题可以随时回滚。
服务发现和负载均衡:多个容器有一个同一的访问入口,内部所在和同一的对外所在,自动负载均衡所有管理的容器,无需考虑容器的IP所在。
存储编排:支持外挂存储,内部挂载就是内部存储卷;外部挂载,本地存储,也是可以公有云,NFS、ceph都可以支持。
集中化配置和密钥管理:k8s的所有配置可以加密的形式保存在集群信息中,进步集群的安全性。
任务的批量处置惩罚
二、k8s架构和焦点组件:
1.架构:主从架构,mater-slave模式就是我们所有的操作、管理、
运维
都是在主节点完成;从节点在k8s架构中叫node节点,也叫工作节点也就是负载工作的节点
2.组件:主节点
1》kube-apiserver:这是整个集群的大脑,每个组件之间的资源请求和调用操作都是通过apiserver完成的,通过api接口发送到各个组件。所有的资源对象的增编削查和监听也都是由apiserver来完成的,处置惩罚之后交给etcd进行存储。
api接口和端口的区别:
api接口:内部的组件和组件之间通信的接口,也就是步伐和步伐之间,内部调用方法的接口
端口:应用和应用之间,客户端和客户端之间的通信。
2》etcd:k8s内部的存储服务,也是分布式的键值存储体系,存储了k8s集群的配置和用户配置,以及集群内部服务的信息;只有apiserver可以和etcd通信,只有它有读写权限,其它组件要想往etcd存储信息或者读取信息必须通过APIserver;etcd分布式必须是奇数台,要么是一台,要么是三台;etcd说白了就是k8s的数据库。
3》kube-controller-manager:运行管理控制器;k8s集群当中通例任务的后台的线程,是k8s集群当中所有资源对象自动化控制的中心;在k8s集群当中,一个资源对应一个控制器,controller-manager就是管理这些控制器的。
node controller节点控制器,节点出现故障时发现和相应
replication controller副本控制器,我们创建资源对象时可以选择创建的个数(容器数量),保证资源对象声明的副本个创建的数量保持一致;
endpoints controller:端点控制器,指的就是service对应的容器,service来匹配对应的容器,监听容器的变化,端点就是袒暴露来对外访问的。
resourcequota controller:资源配额控制器,确保创建的资源对象不会超过设定体系资源量。
namespace controller:项目上进行区分,每一个命名空间都是独立的,namespace是用来管理命名空间的生命周期。
4》kube-scheduler:根据调理算法,为容器选择一个合适的node节点。node节点的资源越富裕,负载越小的node节点部署容器的排名就越高。
3.node节点组件:
1》kubelet:主节点在node节点的监控器与master节点通信,定时向apiserver报告服务在node节点上的运行情况,担当来自master的调解措施。kubelet负载节点上容器的生命周期。也就是master指令传给kubelet,kubelet完成之后传给apiserver,apiserver把node节点更新的信息保存到etcd当中。
2》kube-proxy:在每个node节点上实现容器的网络署理,是service的具体载体,负责网络规划和四层负载均衡工作原理ip+端口,通过iptables和ipvs实现服务的映射访问;apiserver通过监控kube-proxy来完成对容器的更新和端点的维护,把变化的效果保存到etcd。内部服务的负载均衡是四层署理,实现内部容器的负载均衡,k8s的每个节点都有kube-proxy。内部的IP所在:由flanner及calico这两个插件提供内部容器的IP所在。
3》docker:整个集群的最底层。
三、k8s的焦点概念:
pod:k8s内里的最小单元,一个pod就是一个正在运行的进程,pod的内里包罗着容器,可以是一个容器,也可以是多个容器,探针、调理算法、标签也在pod内;部署在同一pod当中的容器,共享网络、存储和计算资源。差别pod之间只能通过集群分配的IP所在进行通信。
Lable:标签,是k8s的特色管理方式,对资源对象进行分类,通过标签把pod--service---资源对象-控制器组件进行管理。
service:在集群当中每个pod都会设定一个IP所在,pod的消散会导致IP所在也消散,service就是来办理这个问题的焦点概念,service----网关。service用于集群的内部访问,service是四层负载均衡,只能是IP+端口
ingress:是整个k8s集群的外部通信,ingress是七层转发,IP+域名
namespace:是一种资源隔离上的方式,逻辑上的隔离,项目越来越多,集群越来越大,通过命名空间把资源分配到各个命名空间,每个命名空间之间资源不共享,使用的是分配的资源,命名空间在集群当中是唯一的,名字不能重复;default默认命名空间,不做任何特别声明,所有的资源都在默认空间;kube-system体系应用的命名空间;查询特定的资源,肯定要加上命名空间。
四、k8s部署:三台
master:192.168.127.44 etcd
node 1:192.168.127.55 docker kubeadm kubelet flannel
node 2: 192.168.127.66
1.关闭防火墙及安全机制
清空iptables策略
关闭swap交换分区
加载ipvs模块
查看时间是否同步:不一致必须做时间同步
三台主机改名
同步操作 su刷新主机名
打开/etc/hosts进行ip和主机名进行映射
调解内核参数:
安装docker
导入阿里云yum源所在
安装docker
安装docker节点
拉镜像
安装kubelet
设置开机自启
kubelet初始化当中需要的镜像
pause镜像:特别容器,整个容器的作用就是保持pod当中其它的容器的运行;我们pod起首是拉取镜像,pod当中会有一个pause,pause会在每个pod中创建一个网络命名空间;pod的生命周期结束,pause容器也会退出,开释该pod的网络命名空间。
取消同步:master对adim初始化
在node1、2节点上添加密钥token验证 加入集群
设置节点的kubelet
编辑yum文件、查看node节点状态
更改yaml文件的IP所在,查抄集群的状态(kubectl get cs)
五、pod
1.pod内部的网络通信:
pod内部容器通信:pod创建完之后集群会分配pod一个全局的唯一ip所在,所有pod内的容器共享这个IP所在;pod内部容器可以用本地通信+端口形式相互通信。
2.同一个node节点上的pod通信:
同一个节点上的pod和docker的通信是一样的,都是由doker0的网桥进行通信。
3.差别节点上pod之间通信
想办法通过主机的物理网卡IP所在进行通信,前提podIP所在是不能重复的,pod的IP和node节点的IP进行关联,以是有了CNI网络插件。pod的IP所在进行封装,通过node节点做为路由,转发到其它的node节点,其它的node节点收到数据包之后解包,把数据包转发到指定的pod
六、k8s的网络类型:
1.CNI网络插件: 分为Flannel 和calico
CNI:是一个标准接口,用于容器在运行时调用网络插件,配置容器的网络;负责设置容器的网络命名空间,IP所在,路由等网络参数
2.Flannel插件:让集群内差别节点创建的pod都有一个集群内部唯一的IP所在
flannel:是一种overlay网络,overlay是一种网络虚拟化技能,在底层的物理网络底子之上在创建一个逻辑虚拟的网络层,通过虚拟的网络层实现跨节点的pod之间的通信。
flannel数据转发的方式:udp、host-gw、vxlan
udp:基于应用层转发,配置简单,性能最差,
host-gw:性能最好,但是配置繁琐,一般不用
vxlan:主流模式,基于内核转发
(vlan:通过标识来实现广播域的分别,差别的vlan之间可以通信2--4095)
vxlan:通过vni标识数据中进行广域网的分别,通过flannel虚拟的三层网络层再搭建一个虚拟的二层的数据链路层网络,类似于三层交换机。
vxlan工作模式:flannel.1是ens33虚拟出来的虚拟网卡
mac所在是由arp广播进行确认
3.calico网络:路由维护,路由转发
flanner和calico的区别:
flanner插件:默认的所在是10.244.0.0/16
flanner三种模式:UDP\VXLAN\HOST-GW
flanner的功能简单,不具备复杂的网络策略的配置能力,小集群或者简单的网络首选
calico:BGP直接路由、路由维护、路由转发
默认网段:192.168.0.0/16
calico是一个可以对网络进行管理的插件,具备配置复杂网络配置的能力,自己的配置比较复杂,对
开发
职员,
运维
职员要求比较高。需要复杂配置的需要calico。
基于Flannel 插件创建虚拟网卡主节点
从节点:先拉包再解包
主节点:
附加自动补全命令:source <(kubectl completion bash)
附加k8s证书签发10年方法:使用update-kubeadm-cert.sh脚本编辑
七、口试题:
flanner网络你们用的是啥:vxlan,其中flanner.1是由ens33虚拟出来的虚拟网卡,虚拟网卡办理了两个问题,起首是给集群中的pod分配一个全局唯一的IP所在,使其与差别节点上的pod进行通信及与宿主机也可以通信。
免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。
回复
使用道具
举报
0 个回复
倒序浏览
返回列表
快速回复
高级模式
B
Color
Image
Link
Quote
Code
Smilies
您需要登录后才可以回帖
登录
or
立即注册
本版积分规则
发表回复
回帖并转播
回帖后跳转到最后一页
发新帖
回复
万万哇
论坛元老
这个人很懒什么都没写!
楼主热帖
markdown day 01
Linux系统调用四、lseek()函数详解 ...
Nacos注册中心-----从0开始搭建和使用 ...
ClickHouse(05)ClickHouse数据类型详解 ...
基于CSDN云和docker全家桶的微服务项目 ...
【云原生】Docker 进阶 -- 数据卷使用 ...
100天精通Python(进阶篇)——第39天 ...
应急救灾物资行业标准与规范 ...
阿里云域名购买流程以及免费证书的申请 ...
redis for windows 7.0.2安装包全网首 ...
标签云
AI
运维
CIO
存储
服务器
浏览过的版块
数据仓库与分析
移动端开发
容器及微服务
分布式数据库
SQL-Server
快速回复
返回顶部
返回列表