
Kubernetes知识点汇总
总结了Kubernetes的常见知识点
a_j58
这个作者很懒,什么都没留下…
展开
-
kubernetes知识点总结(一)
虽然swap分区可以在磁盘上增加系统的可用内存量,但内存页面和虚拟页面交换过程中会给系统带来额外的磁盘I/O负载,因此,swap分区的使用会在高负载情况下导致系统的整体性能下降,严重时还可能导致应用程序的崩溃。Calico本身是一个三层虚拟网络方案,它将每个节点都当作是路由器,将每个节点的容器都当作是节点路由器的一个终端并为其分配一个IP地址,各节点通过BGP学习生成路由规则,从而将不同节点上的容器连接起来。Pod包含一个或多个容器,这些容器共享存储,网络,以及如何运行容器的声明。原创 2025-01-17 21:02:29 · 462 阅读 · 0 评论 -
kubernetes知识点总结(二)
但通过镜像pod,api-server仍然可以监控静态pod的状态,所以不能用标准的kubernetes API操作来创建,管理这些pod,需要直接在节点上操作文件系统来管理这些pod。Deployment能够为pod和replicaset提供声明式的更新能力,deployment会更改RS的实际状态,使其变为期望状态。Deployment提供了更高级的更新策略,如滚动升级和回滚,而Replicaset并不支持。Deployment提供了更高层次的声明API,使应用的状态更容易管理和跟踪。原创 2024-12-24 17:18:23 · 234 阅读 · 0 评论 -
kubernetes知识点总结(三)
这意味着,与iptables模式下的kube-proxy相比,IPVS模式下的重定向通信的延时要更短,并且在同步代理规则时具有更好的性能。当有新节点加入集群时,如果该节点匹配daemonset的标签选择器,就会为其新增一个pod,如果该节点从集群中删除时,对应的pod也会被回收。Service API是将一个或一组pod中的网络应用程序公开为网络服务的方法,每个Service对象定义端点的一个逻辑集合以及如何访问到pod的策略。Job负责批量处理短暂的一次性任务,仅执行一次,并保证处理的pod成功结束。原创 2024-12-26 20:43:54 · 452 阅读 · 0 评论 -
Kubernetes知识点总结(四)
在Headless类型的Service中,pod创建时不会直接返回pod的Service IP,也就是不提供Pod的ClusterIP,而是返回众多pod的IP,这就需要进入pod内部用集群内的DNS进行访问测试。Ingress是对集群中服务的外部访问进行管理的API对象,公开了从集群外部到集群内服务的HTTP和HTTPS路由。例如,创建一个服务,对外提供8000端口,并将流量引流到后端80端口上,所以在主机shell中,就不能直接使用pod的IP访问服务,需要在ClusterIP后添加8000端口。原创 2024-12-30 22:11:16 · 154 阅读 · 0 评论 -
kubernetes知识点总结(五)
EmptyDir卷起初是空的,尽管pod中的容器挂载到emptyDir卷的路径可能不同,但这些容器都可以读写emptyDir中相同的文件。Kubernetes支持很多类型的卷,临时卷的生命周期与pod相同,但持久卷有比pod更长的存活期。当pod被删除时,临时卷也会被删除。Readiness probes可以知道容器什么时候准备好了并可以开始接受请求流量,只有当一个pod内的所有容器都准备好了,才能把这个pod看作就绪。其一: 当容器崩溃时,kubelet会以干净的状态重启容器,原有容器的文件会丢失。原创 2025-01-10 19:57:25 · 260 阅读 · 0 评论 -
kubernetes知识点总结(六)
PV是集群中的一块存储,PV持久卷和节点一样,都是集群资源,它和普通的Volume类似,也是用卷插件来实现,只是它独立于任何使用PV的pod的生命周期,这意味着,即使使用它的pod已经被删除,PV依旧存在。-Delete: 对于支持Delete回收策略的卷插件,删除动作会将PV对象从k8s中移除,同时也会从外部基础设施(如AWS EBS 或 GCE PD卷)中移除所关联的存储资源。hostPath卷能够将主机节点文件系统上的文件或目录直接挂载到pod上,但要避免使用,它会限制pod的迁移性。原创 2025-01-11 19:47:17 · 219 阅读 · 0 评论 -
kubernetes知识点总结(七)
Configmap是一个API对象,用于将非机密性的数据保存到键值对中,使用时,pod可以将其用作环境变量,命令行参数或存储卷中的配置文件,用ConfigMap将应用程序的配置数据与代码分开。节点亲和性是pod的一种属性,它使pod被吸引到一类特定的节点(可能是一种偏好,也有可能是硬性要求),概念上类似于节点选择器,可根据节点上的标签来约束pod可以调度到哪些节点上。(1)使用节点选择器(nodeSelector),为节点打上标签,并在pod配置中指定这些标签作为节点选择器。容忍度是应用与pod上的。原创 2025-01-12 20:30:45 · 211 阅读 · 0 评论 -
Kubernetes知识点总结(八)
Service Account(服务账号)为pod中运行的进程提供身份标志,并映射到ServiceAccount对象,当应用向API服务器执行身份认证时,应用会将自己标识为某个用户,k8s能够识别用户的概念,但k8s自身并不提供User API。基于角色(Role)的访问控制(RBAC)是基于组织中用户的角色来调节对计算机或网络资源的访问的一种方法。Networkpolicy(网络策略)是一种以应用为中心的结构,定义了如何允许pod间的网络通信,Networkpolicy适用于一端或两端与pod的连接。原创 2025-01-13 19:15:40 · 233 阅读 · 0 评论 -
Kubernetes知识点总结(九)
Pod在被NetworkPolicy选中时进入隔离状态,一旦名字空间有NetworkPolicy选择了特定的pod,它就会拒绝NetworkPolicy所不允许的连接。为了允许两个pod之间的数据流,源端的出站规则和目标端的入站规则都需要允许该流量传输。如果有多个策略选择了一个pod,则pod受限于这些规则的并集。Etcd是一个一致且高可用的键值存储,用作k8s所有集群的后备存储。注意事项:务必使用静态控制平面和etcd pod或外部pod。默认情况下,pod是非隔离的,他接受任何来源的流量。原创 2025-01-14 19:00:17 · 192 阅读 · 0 评论 -
k8s 面试题总结(一)
写流程读流程。原创 2025-01-15 19:20:34 · 254 阅读 · 0 评论 -
k8s面试题总结(二)
主动关闭方收到被动关闭方的FIN包后,会发送一个ACK包作为响应,并进入TIME_WAIT状态,等待一段时间以确保被动关闭方接收到ACK包。如果尝试将四次挥手简化为三次,比如合并某一方的FIN和ACK包,则可能导致数据丢失的风险,因为这可能意味着一端在未完全确认另一端是否已完成数据发送的情况下就关闭了连接。:三次握手的主要目的是让客户端和服务器互相确认对方的存在,并同步双方初始序列号(ISN),这对于后续的数据传输至关重要。通过这三次握手,客户端和服务器都确认对方的存在,并准备好了开始数据传输。原创 2025-01-16 20:38:01 · 563 阅读 · 0 评论 -
Kubernetes常见问答(一)
使用kubectl drain [node_name] --ignore-daemonsets将节点上的Pod驱逐出去,并将其部署到其他节点上。使用systemctl status kube-apiserver命令检查API Server运行状态,确认是否存在故障或错误。使用kubectl cluster-info 命令查看集群状态,判断是否存在API Server不可用的情况。检查Kubernetes API Server和kubelet之间的连接是否正常。检查Pod的定义是否正确。原创 2025-02-03 21:13:31 · 312 阅读 · 0 评论 -
Kubernetes知识点总结(十)
被当作 Pod 中所有容器的“父容器”,pause 在 Pod 中作为共享 Linux Namespace 的基础,同时。每个 Pod 都有一个特殊的被称为“根容器”的 pause 容器,pause 容器有时候也称为 infra 容器,提供 PID Namespace 共享,为每个 Pod 提供 1 号进程,并收集 Pod 内的僵停进程。(名字空间)提供了一种机制,将同一集群中的资源划分为相互隔离的组,:所有的客户端(包括未经身份验证的客户端)都可以读取该名字空间。中运行的容器不会受到影响,直到超时发生。原创 2025-02-17 19:44:58 · 582 阅读 · 0 评论 -
K8s面试题总结(三)
① Minikube 是一种可以在本地轻松运行一个单节点 Kubernetes 群集的工具。② Kubectl 是一个命令行工具,可以使用该工具控制Kubernetes 集群管理器,如检查群集资源,创建、删除和更新组件,查看应用程序。③ Kubelet存在于每个节点上,负责与API-Server进行通信,监控并管理pod中的容器。原创 2025-02-24 15:39:06 · 194 阅读 · 0 评论 -
K8s面试题总结(四)
因为 kube-proxy 监听的端口在用户空间,所以需要一层 iptables 把访问服务的连接重定向给 kube-proxy 服务,这里就存在内核态到用户态的切换,代价很大,因此就有了iptables。① kube-proxy 不再负责转发,数据包的走向完全由iptables规则决定,这样的过程不存在内核态到用户态的切换,效率明显会高很多。② 但是随着 service 的增加,iptables 规则会不断增加,导致内核十分繁忙(等于在读一张很大的没建索引的表)。原创 2025-02-25 17:47:23 · 167 阅读 · 0 评论 -
k8s面试题总结(五)
CPU 与 Memory 是被 Pod 使用的,因此在配置 Pod 时可以通过参数 CPU Request 及 Memory Request 为其中的每个容器指定所需使用的 CPU 与 Memory 量,Kubernetes 会根据 Request 的值去查找有足够资源的 Node 来调度此 Pod。通常,一个程序所使用的 CPU 与 Memory是一个动态的量,确切地说,是一个范围跟它的负载密切相关:负载增加时,CPU 和 Memory 的使用量也会增加。需要一个完整的操作系统环境来支持该应用。原创 2025-02-26 23:42:19 · 169 阅读 · 0 评论 -
k8s面试题总结(六)
Docker 可以将应用程序及其依赖打包成一个轻量级的、可移植的容器镜像。:Docker 提供了一个运行时环境,用于在主机上运行容器。kubernetes是一个容器编排平台,主要用于管理大规模的容器化应用程序。:Kubernetes 需要依赖(如 Docker)来创建和运行容器。:Kubernetes 在 Docker 的基础上提供了更高层次的抽象,用于管理大规模的容器化应用程序。原创 2025-03-01 14:13:20 · 382 阅读 · 0 评论 -
k8s面试题总结(七)
(3)Scheduler调度服务会查看etcd数据库信息,判断这条信息是不是新来的,若是新来的就选择一个最合适的节点,将pod调度到节点上面,将调度信息更新到etcd数据库中。(2)K8s中的api-server接收到请求后,不是直接创建pod,而是生成一个创建pod信息的yaml文件,将yaml文件写入到etcd数据库中,添加一条记录。:普通 Service 会分配一个虚拟的 Cluster IP,用于负载均衡和代理流量,而 Headless Service 不会分配 Cluster IP。原创 2025-03-02 19:29:50 · 428 阅读 · 0 评论 -
k8s面试题总结(八)
这是因为k8s组件kubelet服务配置文件里没有配置本地监听端口或设置为了0,可以在本地kubelet服务配置文件中,将端口改成kubelet服务对应的端口,或注释里面的port=0。首先在pod的yaml文件里定义一个emptyDir空目录,挂载宿主机的临时目录,pod中的两个容器,同时挂载同一个名字,将资源挂载到自己容器的相应路径,这样两个容器就可以共享该数据资源了。有三种,分别是:nodeSelector、nodeAffinity、nodeName(一般不经过调度器,很少用)NodeSelector原创 2025-03-03 16:10:20 · 499 阅读 · 0 评论 -
k8s面试题总结(九)
Kubectl delete pod 名称 --force --grace-period=0(立即删除pod而不等待默认的优雅停机时长)(4)多阶段构建镜像,一个Dockerfile中,有两个基础镜像,上面基础镜像运行过程中的产物镜像,被下面的步骤接着引用。(1)Pod被其他资源(如Deployment,ReplicaSet)引用,无法删除pod。解决:先对节点进行诊断和修复,恢复到正常状态,再尝试删除pod。解决:先删除引用该pod的资源,再删除pod。解决:先解决pod的异常状态,再尝试删除。原创 2025-03-04 23:54:23 · 295 阅读 · 0 评论 -
k8s面试题总结(十)
Shuffing: 将映射器输出的所有的键值对都收集起来,并根据键进行排序,排序后的键值对被分发给不同的Reducer。Mappping:每个分片(spilt)会被发送到一个或多个映射器,以键值对的方式存储每个单词以及它出现的次数。一个文件的大小为10K,一亿个文件为1TB,但他会消耗20GB的内存,所占内存太大。Spiltting:首先我们对所有的数据进行分片(splitting),如图,它被分为了三个部分。Reducing: 归约阶段,将相同键的键值对进行合并,得到最终的计数。最后,即可得到最终结果。原创 2025-03-06 14:52:16 · 1086 阅读 · 0 评论 -
K8s面试题总结(十一)
在Kubernetes中创建Deployment,指定镜像地址。将Docker镜像推送到镜像仓库(如Docker Hub)。原创 2025-03-08 00:09:58 · 390 阅读 · 0 评论 -
k8s面试题总结(十二)
静态pod通常用于在k8s启动前启动一些核心服务(如网路插件CNI,DNS服务等),它能确保这些关键服务在kubelet启动时运行,不受API-Server服务的可用性以及网络故障的影响。Raft保证了数据的高可用性和一致性,确保在集群中的节点保持相同的数据状态。在etcd集群中,节点之间通过Raft一致性算法实现数据同步。原创 2025-03-09 17:01:46 · 791 阅读 · 0 评论 -
k8s面试题总结(十三)
Service维护一个叫endpoint的资源列表,endpoint资源对象保存着service关联的pod的ip和端口。通过维护一套通用的Helm Charts,可以在不同的集群之间重复使用这些配置来部署相同的应用程序。命名空间是一种在Kubernetes集群中创建多个虚拟集群的机制,它可以用于隔离和管理不同的应用程序,团队或环境。标签作用:通过为资源对象添加标签,可以更灵活地组织以及管理它们,可以根据标签进行筛选。标签:k8s中的标签是键值对,用于对资源对象进行分类和标识。原创 2025-03-10 21:28:02 · 512 阅读 · 0 评论 -
k8s面试题总结(十四)
另一方面,如果您的关注点更多是日志管理和分析,特别是对大规模日志数据的搜索、过滤和可视化,那么ELK Stack是更适合的解决方案。Helm:Helm Charts有公用的模板yaml文件,通过传递不同的变量,快速拉起一套新的服务,可在不同的环境中复用,并且可以共享和分发到Helm仓库。K8s提供了多种监控和日志记录解决方案,如Prometheus,ELK堆栈等,这些工具可以用于监控集群的性能指标和应用程序日志。Helm是一个k8s的包管理工具,它简化了应用程序在k8s集群中的部署,管理和维护。原创 2025-03-11 23:27:14 · 454 阅读 · 0 评论 -
k8s面试题总结(十五)
ReplicatSet:是k8s中的控制器对象,用于确保在任何时间都有指定数目的pod副本,当有pod故障时,控制器会启动新的pod,确保达到指定的配置副本数量。水平扩展和负载均衡:水平扩展可根据需要调整pod的副本数量,结合负载均衡,k8s可以自动将流量分发到健康的pod上。使用标签为不同环境中的资源进行分类和标记,然后使用标签选择器在不同环境筛选和部署。命名空间是用于逻辑隔离和资源分组的一种方式,可以为每个环境创建单独的命名空间。可以设置节点级别的资源配额,限制节点上运行的pod使用的资源总量。原创 2025-03-13 22:59:45 · 352 阅读 · 0 评论