首页 > 其他分享 >( —基础— ) k8s----介绍(1),2024年这些高频面试知识点最后再发一次

( —基础— ) k8s----介绍(1),2024年这些高频面试知识点最后再发一次

时间:2024-04-03 14:32:09浏览次数:23  
标签:Node 知识点 ---- 端口 2024 API Pod kube 节点

kubectl

dashboard

部署工具

使用批量部署工具如(ansible/ saltstack)、手动二进制、apt-get/yum 等方式安装,以守护进程的方式启动在宿主机上,类似于是 Nginx 一样使用 service 脚本启动。

master,node作用


  • Master:是集群的网关和中枢枢纽,

主要作用:暴露API接口,跟踪其他服务器的健康状态、以最优方式调度负载,以及编排其他组件之间的通信。单个的Master节点可以完成所有的功能,但是考虑单点故障的痛点,生产环境中通常要部署多个Master节点,组成Cluster。

  • Node:是Kubernetes的工作节点,负责接收来自Master的工作指令,并根据指令相应地创建和销毁Pod对象,以及调整网络规则进行合理路由和流量转发。生产环境中,Node节点可以有N个。

三. master运行机制

================================================================================

1. kube-apiserver:


k8s API Server提供了k8s各类资源对象(pod,RC,Service等)的增删改查及watch等HTTP Rest接口,是整个系统的数据总线和数据中心。

apiserver 目前在master监听两个端口,

  1. 通过 --insecure-port int 监听一个非安全的127.0.0.1本地端口(默认为8080

该端口用于接收HTTP请求;

该端口默认值为8080,可以通过API Server的启动参数“–insecure-port”的值来修改默认值;

默认的IP地址为“localhost”,可以通过启动参数“–insecure-bind-address”的值来修改该IP地址;

非认证或授权的HTTP请求通过该端口访问API Server。

  1. 通过参数--bind-address=1.1.1.1 监听一个安全的端口(默认为6443

该端口默认值为6443,可通过启动参数“–secure-port”的值来修改默认值;

默认IP地址为非本地(Non-Localhost)网络端口,通过启动参数“–bind-address”设置该值;

该端口用于接收HTTPS请求;

用于基于Tocken文件或客户端证书及HTTP Base的认证;

用于基于策略的授权;

  1. kubernetes API Server功能与使用:

提供了集群管理的REST API接口(包括认证授权、数据校验以及集群状态变更);

提供其他模块之间的数据交互和通信的枢纽(其他模块通过API

Server查询或修改数据,只有API Server才直 接操作etcd);

是资源配额控制的入口;

拥有完备的集群安全机制.

curl 127.0.0.1:8080/apis #分组api #

curl 127.0.0.1:8080/api/v1 #带具体版本号的api #

curl 127.0.0.1:8080/ #返回核心api列表 #

curl 127.0.0.1:8080/version #api 版本信息 #

curl 127.0.0.1:8080/healthz/etcd #与etcd的心跳监测 #

curl 127.0.0.1:8080/apis/autoscaling/v1 #api的详细信息

启动脚本

cat /etc/systemd/system/kube-apiserver.service

[Service]

ExecStart=/usr/bin/kube-apiserver \

–bind-address=192.168.7.101 \ #外部监听端口

–insecure-bind-address=127.0.0.1 \ #本机监听端口

LimitNOFILE=65536

2. kube-controller-manager


Controller Manager作为集群内部的管理控制中心

负责集群内的Node、Pod副本、服务端点(Endpoint)、命名空间(Namespace)、服务账号(ServiceAccount)、资源定额(ResourceQuota)的管理,当某个Node意外宕机时,Controller Manager会及时发现并执行自动化修复流程,确保集群始终处于预期的工作状态。

例如你删一个

kubectl delete pods bet-test-1dsakjfhaskdj

等会会儿他就会自己创建

kubectl get pods

启动脚本

vim /etc/systemd/system/kube-controller-manager.service

[Service]

ExecStart=/usr/bin/kube-controller-manager \

–master=http://127.0.0.1:8080 \ #调用kube-api-server的本地端口进行通信

3. kube-scheduler


Scheduler负责Pod调度,在整个系统中起"承上启下"作用,

承上:负责接收Controller Manager创建的新的Pod,为其选择一个合适的Node;

启下:Node上的kubelet接管Pod的生命周期。

通过调度算法为待调度Pod列表的每个Pod从可用Node列表中选择一个最适合的Node,并将信息写入etcd中 node节点上的kubelet通过API Server监听到kubernetes Scheduler产生的Pod绑定信息,然后获取对应的 Pod清单,下载Image,并启动容器。

优选策略

  1. LeastRequestedPriority 优先从备选节点列表中选择资源消耗最小的节点(CPU+内存)。

  2. CalculateNodeLabelPriority 优先选择含有指定Label的节点。

  3. BalancedResourceAllocation 优先从备选节点列表中选择各项资源使用率最均衡的节点。

在这里插入图片描述

四. node节点运行机制

================================================================================

1. kubelet


在kubernetes集群中,每个Node节点都会启动kubelet进程,用来处理Master节点下发到本节点的任务管理Pod和其中的容器。kubelet会在API Server上注册节点信息,定期向Master汇报节点资源使用情况,并通过cAdvisor监控容器和节点资源

可以把kubelet理解成Server/Agent架构中的agent,kubelet是Node上的pod管家。

启动脚本

#kubelet cAdvisor 默认在所有接口监听 4194 端口的请求, 以下iptables限制内网访问

ExecStartPost=/sbin/iptables -A INPUT -s 10.0.0.0/8 -p tcp --dport 4194 -j ACCEPT

ExecStartPost=/sbin/iptables -A INPUT -s 172.16.0.0/12 -p tcp --dport 4194 -j ACCEPT

ExecStartPost=/sbin/iptables -A INPUT -s 192.168.0.0/16 -p tcp --dport 4194 -j ACCEPT

ExecStartPost=/sbin/iptables -A INPUT -p tcp --dport 4194 -j DROP

2. kube-proxy


kube-proxy 运行在每个节点上,监听 API Server 中服务对象的变化,再通过管理 IPtables 来实现网络的转发。

Kube-Proxy 不同的版本可支持三种工作模式

UserSpace

k8s v1.2 后就已经淘汰

IPtables

目前默认方式

IPVS--------建议

需要安装ipvsadm、ipset 工具包和加载 ip_vs 内核模块

启动脚本

cat /etc/systemd/system/kube-proxy.service

[Service]

使用 那种工作模式

–proxy-mode=iptables

3. iptables


Kube-Proxy 监听 Kubernetes Master 增加和删除 Service 以及 Endpoint 的消息。

对于每一个 Service,KubeProxy 创建相应的 IPtables 规则,并将发送到 Service Cluster IP 的流量转发到 Service 后端提供服务的 Pod 的相应端口上。

注意: 虽然可以通过 Service 的 Cluster IP 和服务端口访问到后端 Pod 提供的服务,但该 Cluster IP 是Ping 不通的。 其原因是 Cluster IP 只是 IPtables 中的规则,并不对应到一个任何网络设备。

IPVS 模式的 Cluster IP 是可以 Ping 通

自我介绍一下,小编13年上海交大毕业,曾经在小公司待过,也去过华为、OPPO等大厂,18年进入阿里一直到现在。

深知大多数前端工程师,想要提升技能,往往是自己摸索成长或者是报班学习,但对于培训机构动则几千的学费,着实压力不小。自己不成体系的自学效果低效又漫长,而且极易碰到天花板技术停滞不前!

因此收集整理了一份《2024年Web前端开发全套学习资料》,初衷也很简单,就是希望能够帮助到想自学提升又不知道该从何学起的朋友,同时减轻大家的负担。
img
img
img
img
img
img

既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,基本涵盖了95%以上前端开发知识点,真正体系化!

由于文件比较大,这里只是将部分目录大纲截图出来,每个节点里面都包含大厂面经、学习笔记、源码讲义、实战项目、讲解视频,并且后续会持续更新

如果你觉得这些内容对你有帮助,可以添加V获取:vip1024c (备注前端)
img

最后

前15.PNG

前16.PNG

由于文档内容过多,为了避免影响到大家的阅读体验,在此只以截图展示部分内容

CodeChina开源项目:【大厂前端面试题解析+核心总结学习笔记+真实项目实战+最新讲解视频】

基本涵盖了95%以上前端开发知识点,真正体系化!**

由于文件比较大,这里只是将部分目录大纲截图出来,每个节点里面都包含大厂面经、学习笔记、源码讲义、实战项目、讲解视频,并且后续会持续更新

如果你觉得这些内容对你有帮助,可以添加V获取:vip1024c (备注前端)
[外链图片转存中…(img-2aitQieo-1711720904116)]

最后

[外链图片转存中…(img-W0htYWui-1711720904116)]

[外链图片转存中…(img-BawsQcQy-1711720904117)]

由于文档内容过多,为了避免影响到大家的阅读体验,在此只以截图展示部分内容

CodeChina开源项目:【大厂前端面试题解析+核心总结学习笔记+真实项目实战+最新讲解视频】

标签:Node,知识点,----,端口,2024,API,Pod,kube,节点
From: https://blog.csdn.net/2401_84006562/article/details/137157532

相关文章

  • 如何判断JS类型,快速上手前端开发
    注意1.nulltypeofnull//“object”因为历史遗留的原因。typeofnull尝试返回为null失败了,所以要记住,typeofnull返回的是object。2.NaN特殊值NaN返回的是“number”typeofNaN//“number”3复杂数据类型而复杂数据类型里,除了函数返回了"function"其他均返回......
  • c语言---- 结构体
    1.怎么定义一个结构体:1.struct这个变量名就是跟电脑说明,我是一个结构体。2.在struct后面的名字是要大写开头的。3.在大括号结束了,一定要加分号;​​2.结构体数组就是跟之前的数组一样的,就是名字前面的变量改成了结构的,还有里面的数,跟二维数组差不多:​​3.结......
  • 09-代码随想704二分查找
    704二分查找给定一个n个元素有序的(升序)整型数组nums和一个目标值target,写一个函数搜索nums中的target,如果目标值存在返回下标,否则返回-1。示例1:输入:nums=[-1,0,3,5,9,12],target=9输出:4解释:9出现在nums中并且下标为4示......
  • js 模块化
    一、什么是模块化?1.1定义将一个复杂的程序依据一定的规则(规范)封装成几个块(文件),并进行组合在一起块的内部数据/实现是私有的,只是向外部暴露一些接口(方法)与外部其它模块通信 1.2模块化的进化过程 1.2.1全局function模式*全局函数模式:将不同的功能封装......
  • idea从零到精通07之idea数据库管理,作为移动开发程序员
    作者简介引言导航热门专栏推荐视频讲解概述一、打开Database管理界面二、配置数据库连接三、在图形化界面操作四、在控制台查询五、在控制台执行操作六、数据导出方法1,直接在结果控制台导出方法2,在Database管理区中导出七、数据结果的多种展示......
  • C语言------------指针
    指针的类型:指针:在学习指针之前,要有一个认知,那就是指针==地址;指针的基本使用:​​这里要注意三点:1.*标识符—————只产生在指针变量定义或声明的时候;2.指针的类型要和被赋值的类型一致;3.*p=*(p)这2个的意思是一样的;在scanf中,不能使用指针进行;上面的是最基......
  • MySQL数据库:第十六章:sql高级函数,和腾讯大牛的技术面谈
    CURDATE()或CURRENT_DATE()返回当前的日期CURTIME()或CURRENT_TIME()返回当前的时间DATE_ADD(date,INTERVALintkeyword)返回日期date加上间隔时间int的结果(int必须按照关键字进行格式化),如:SELECTDATE_ADD(CURRENT_DATE,INTERVAL6MONTH);DATE_FORMAT(date,fmt......
  • K11998 括号画家
    题目描述小科是一名漫画家,他有一个奇特的爱好,就是在纸上画括号。这一天,刚刚起床的他画了一排括号序列,其中包含小括号()、中括号[]和大括号{},总长度为N。这排随意绘制的括号序列显得杂乱无章,于是小科定义了什么样的括号序列是美观的:①空的括号序列是美观的;②若括号序列A是......
  • Quill文档(六):Parchment详解
    Parchment是Quill的文档模型。它是与DOM树并行的树形结构,并为内容编辑器(如Quill)提供有用的功能。Parchment树由Blots组成,这些Blots镜像了DOM节点的对应物。Blots可以提供结构、格式和/或内容。Attributors还可以提供轻量级格式信息。注意:您不应使用new直接......
  • 逆袭大厂之路——Java程序员必备金九银十跳槽面试涨薪秘籍
    JAVA集合JAVA多线程并发JAVA基础Spring原理微服务Netty与RPC网络ZookeeperKafka自我介绍一下,小编13年上海交大毕业,曾经在小公司待过,也去过华为、OPPO等大厂,18年进入阿里一直到现在。深知大多数前端工程师,想要提升技能,往往是自己摸索成长或者是......