摘要: 1)确保容器本身安全; 2)锁定容器的Linux内核; 3)使用基于角色的访问控制(RBAC); 4)保守秘密的辛勤工作; 5)保持网络安全; 阅读全文
posted @ 2024-03-11 18:54 Mr.peter 阅读(39) 评论(0) 推荐(0)
摘要: 1)安装和部署:k8s安装很复杂;但是一旦安装完毕,集群就非常强大,Docker Swarm安装非常简单;但是集群不是很强大;2)图形用户界面:k8s有,Docker Swarm无; 3)可伸缩性:k8s支持,Docker Swarm比k8s快5倍; 4)自动伸缩:k8s有,Docker Swarm 阅读全文
posted @ 2024-03-11 18:53 Mr.peter 阅读(405) 评论(0) 推荐(0)
摘要: 1)Service创建的时候会向 API Server 用 POST 方式提交一个新的 Service 定义,这个请求需要经过认证、鉴权以及其它的准入策略检查过程之后才会放行; 2)CoreDns 会为Service创建一个dns记录,Service 得到一个 ClusterIP(虚拟 IP 地址) 阅读全文
posted @ 2024-03-11 18:50 Mr.peter 阅读(83) 评论(0) 推荐(0)
摘要: Job控制一组Pod容器,可以通过Job这种资源对象定义并启动一个批处理任务的Job,其中Job所控制的Pod副本是短暂运行的,可以将其视为一组Docker容器,每个Docker容器都仅仅运行一次,当Job控制的所有Pod的副本都运行结束时,对应的Job也就结来。 Job生成的副本是不能自动重启的, 阅读全文
posted @ 2024-03-11 18:44 Mr.peter 阅读(30) 评论(0) 推荐(0)
摘要: release(版本):stable(稳定版)、canary(金丝雀版本)、beta(测试版本)、environment(环境变量):dev(开发)、qa(测试)、production(生产)、application(应用):ui、as(application software应用软件)、pc、sc 阅读全文
posted @ 2024-03-11 18:40 Mr.peter 阅读(106) 评论(0) 推荐(0)
摘要: Helm 是 Kubernetes 的软件包管理工具,Helm能够将一组K8S资源打包统一管理, 是查找、共享和使用为Kubernetes构建的软件的最佳方式。 Helm中通常每个包称为一个Chart,一个Chart是一个目录,优势:1)统一管理、配置和更新这些分散的 k8s 的应用资源文件;2)分 阅读全文
posted @ 2024-03-11 18:38 Mr.peter 阅读(200) 评论(0) 推荐(0)
摘要: Kubernetes集群联邦可以将多个Kubernetes集群作为一个集群进行管理。因此,可以在一个数据中心/云中创建多个Kubernetes集群,并使用集群联邦在一个地方控制/管理所有集群; 阅读全文
posted @ 2024-03-11 18:38 Mr.peter 阅读(69) 评论(0) 推荐(0)
摘要: 在Kubernetes集群环境中,通常一个完整的应用或服务涉及组件过多,建议对日志系统进行集中化管理,EFK是 Elasticsearch、Fluentd 和 Kibana 的组合, Elasticsearch:是一个搜索引擎,负责存储日志并提供查询接口; Fluentd:负责从 Kubernete 阅读全文
posted @ 2024-03-11 18:23 Mr.peter 阅读(42) 评论(0) 推荐(0)
摘要: 简述Kubernetes网络模型 Kubernetes网络模型中每个Pod都拥有一个独立的IP地址,不管它们是否运行在同一个Node(宿主机)中,都要求它们可以直接通过对方的IP进行访问; 同时为每个Pod都设置一个IP地址的模型使得同一个Pod内的不同容器会共享同一个网络命名空间,也就是同一个Li 阅读全文
posted @ 2024-03-11 18:14 Mr.peter 阅读(46) 评论(0) 推荐(0)
摘要: 简述Kubernetes PodSecurityPolicy机制 Kubernetes PodSecurityPolicy是为了更精细地控制Pod对资源的使用方式以及提升安全策略。 在开启PodSecurityPolicy准入控制器后,Kubernetes默认不允许创建任何Pod,需要创建PodSe 阅读全文
posted @ 2024-03-11 17:26 Mr.peter 阅读(78) 评论(0) 推荐(0)
摘要: 1)在创建Pod时,通过为Pod指定Service Account来自动使用该Secret; 2)通过挂载该Secret到Pod来使用它; 3)在Docker镜像下载时使用,通过指定Pod的spc.ImagePullSecrets来引用它; 阅读全文
posted @ 2024-03-11 17:24 Mr.peter 阅读(24) 评论(0) 推荐(0)
摘要: Secret对象,主要作用是保管私密数据,比如密码、OAuth Tokens、SSH Keys等信息。 将这些私密信息放在Secret对象中比直接放在Pod或Docker Image中更安全,也更便于使用和分发; 阅读全文
posted @ 2024-03-11 17:23 Mr.peter 阅读(44) 评论(0) 推荐(0)
摘要: RBAC是基于角色的访问控制,是一种基于个人用户的角色来管理对计算机或网络资源的访问的方法, 优势: 1)对集群中的资源和非资源权限均有完整的覆盖; 2)整个RBAC完全由几个API对象完成, 同其他API对象一样, 可以用kubectl或API进行操作; 3)可以在运行时进行调整,无须重新启动AP 阅读全文
posted @ 2024-03-11 17:22 Mr.peter 阅读(37) 评论(0) 推荐(0)
摘要: 在对集群进行请求时,每个准入控制代码都按照一定顺序执行。 如果有一个准入控制拒绝了此次请求,那么整个请求的结果将会立即返回,并提示用户相应的error信息,准入控制(AdmissionControl)准入控制本质上为一段准入代码,在对kubernetes api的请求过程中,顺序为:先经过认证 & 阅读全文
posted @ 2024-03-11 17:19 Mr.peter 阅读(36) 评论(0) 推荐(0)
摘要: 1)基础设施方面:保证容器与其所在宿主机的隔离; 2)用户权限:划分普通用户和管理员的角色; 3)API Server的认证授权:Kubernetes集群中所有资源的访问和变更都是通过Kubernetes API Server来实现的,因此需要建议采用更安全的HTTPS或Token来识别和认证客户端 阅读全文
posted @ 2024-03-11 17:18 Mr.peter 阅读(46) 评论(0) 推荐(0)
摘要: 在Kubernetes集群中,在每个Node(又称Worker)上都会启动一个kubelet服务进程。 该进程用于处理Master下发到本节点的任务,管理Pod及Pod中的容器。 每个kubelet进程都会在API Server上注册节点自身的信息,定期向Master汇报节点资源的使用情况,并通过c 阅读全文
posted @ 2024-03-11 17:16 Mr.peter 阅读(61) 评论(0) 推荐(0)
摘要: 1)预选(Predicates):输入是所有节点,输出是满足预选条件的节点。kube-scheduler根据预选策略过滤掉不满足策略的Nodes。如果某节点的资源不足或者不满足预选策略的条件则无法通过预选; 2)优选(Priorities):输入是预选阶段筛选出的节点,优选会根据优先策略为通过预选的 阅读全文
posted @ 2024-03-11 17:14 Mr.peter 阅读(37) 评论(0) 推荐(0)
摘要: K8s API Server作为集群的核心,负责集群各功能模块之间的通信。 集群内的各个功能模块通过API Server将信息存入etcd,当需要获取和操作这些数据时,则通过API Server提供的REST接口(用GET、LIST或WATCH方法)来实现,从而实现各模块之间的信息交互。 1)kub 阅读全文
posted @ 2024-03-11 17:13 Mr.peter 阅读(135) 评论(0) 推荐(0)
摘要: K8s的Ingress资源对象,用于将不同URL的访问请求转发到后端不同的Service,以实现HTTP层的业务路由机制。 K8s使用了Ingress策略和Ingress Controller,两者结合并实现了一个完整的Ingress负载均衡器。 使用Ingress进行负载分发时,Ingress C 阅读全文
posted @ 2024-03-11 17:10 Mr.peter 阅读(28) 评论(0) 推荐(0)
摘要: 映射Pod到物理机:将Pod端口号映射到宿主机,即在Pod中采用hostPort方式,以使客户端应用能够通过物理机访问容器应用; 映射Service到物理机:将Service端口号映射到宿主机,即在Service中采用nodePort方式,以使客户端应用能够通过物理机访问容器应用; 映射Servic 阅读全文
posted @ 2024-03-11 17:08 Mr.peter 阅读(37) 评论(0) 推荐(0)
摘要: 在某些应用场景中,若需要人为指定负载均衡器,不使用Service提供的默认负载均衡的功能,或者应用程序希望知道属于同组服务的其他实例。 Kubernetes提供了Headless Service来实现这种功能,即不为Service设置ClusterIP(入口IP地址),仅通过Label Select 阅读全文
posted @ 2024-03-11 17:04 Mr.peter 阅读(38) 评论(0) 推荐(0)
摘要: 1)RoundRobin:默认为轮询模式,即轮询将请求转发到后端的各个Pod上; 2)SessionAffinity:基于客户端IP地址进行会话保持的模式,即第1次将某个客户端发起的请求转发到后端的某个Pod上,之后从相同的客户端发起的请求都将被转发到后端相同的Pod上; 阅读全文
posted @ 2024-03-11 16:42 Mr.peter 阅读(58) 评论(0) 推荐(0)
摘要: Kubernetes使用Horizontal Pod Autoscaler(HPA)的控制器实现基于CPU使用率进行自动Pod扩缩容的功能。 HPA控制器周期性地监测目标Pod的资源性能指标,并与HPA资源对象中的扩缩容条件进行对比,在满足条件时对Pod副本数量进行调整; 阅读全文
posted @ 2024-03-11 16:40 Mr.peter 阅读(117) 评论(0) 推荐(0)
摘要: iptables与IPVS都是基于Netfilter实现的,但因为定位不同,二者有着本质的差别: iptables是为防火墙而设计的;IPVS则专门用于高性能负载均衡,并使用更高效的数据结构(Hash表),允许几乎无限的规模扩张。 与iptables相比,IPVS拥有以下明显优势:为大型集群提供了更 阅读全文
posted @ 2024-03-11 16:18 Mr.peter 阅读(180) 评论(0) 推荐(0)
摘要: 简述ETCD及其特点 etcd是一个分布式的、高可用的、一致的key-value存储数据库,基于Go语言实现,主要用于共享配置和服务发现。特点: 1)完全复制:集群中的每个节点都可以使用完整的存档; 2)高可用性:Etcd可用于避免硬件的单点故障或网络问题; 3)一致性:每次读取都会返回跨多主机的最 阅读全文
posted @ 2024-03-11 16:13 Mr.peter 阅读(53) 评论(0) 推荐(0)
摘要: 1)环境变量: 当你创建一个Pod的时候,kubelet会在该Pod中注入集群内所有Service的相关环境变量。需要注意: 要想一个Pod中注入某个Service的环境变量,则必须Service要先比该Pod创建; 2)DNS:可以通过cluster add-on方式轻松的创建KubeDNS来对集 阅读全文
posted @ 2024-03-11 16:09 Mr.peter 阅读(22) 评论(0) 推荐(0)
摘要: 答:deployment是rs的超集,提供更多的部署功能,如:回滚、暂停和重启、 版本记录、事件和状态查看、滚动升级和替换升级。 如果能使用deployment,则不应再使用rc和rs; rc/rs实现原理 Replication Controller 可以保证Pod始终处于规定的副本数, 而当前推 阅读全文
posted @ 2024-03-11 16:08 Mr.peter 阅读(99) 评论(0) 推荐(0)
摘要: 用Metrics Server提供核心指标,包括Node、Pod的CPU和内存的使用。而Metrics Server需要采集node上的cAdvisor提供的数据资源, 当 kubelet 服务启动时,它会自动启动 cAdvisor 服务,然后 cAdvisor 会实时采集所在节点的性能指标及在节点 阅读全文
posted @ 2024-03-11 16:05 Mr.peter 阅读(43) 评论(0) 推荐(0)
摘要: 1)EmptyDir(空目录):没有指定要挂载宿主机上的某个目录,直接由Pod内保部映射到宿主机上。类似于docker中的manager volume;场景有:a.只需要临时将数据保存在磁盘上,比如在合并/排序算法中;b.作为两个容器的共享存储,使得第一个内容管理的容器可以将生成的数据存入其中,同时 阅读全文
posted @ 2024-03-11 15:56 Mr.peter 阅读(256) 评论(0) 推荐(0)
摘要: 1)配置是否自动化:flannel 除了支持建立覆盖网络来实现 Pod 到 Pod 之间的无缝通信之外,还跟 docker、k8s 的架构体系紧密结合,flannel 能感知 k8s 中的 service 对象,然后动态维护自己的路由表,并通过 etcd 来协助 docker 对整个 k8s 集群的 阅读全文
posted @ 2024-03-11 15:52 Mr.peter 阅读(74) 评论(0) 推荐(0)
摘要: 总体而言,是 通过Raft协议进行节点之间数据同步, 保证节点之间的数据一致性 Raft算法是一种用于管理复制日志的一致性算法,其功能与Paxos算法相同类似,但其算法结构和Paxos算法不同,在设计Raft算法时设计者就将易于理解作为其目标之一,这使得Raft算法更易于构建实际的系统,大幅度减少了 阅读全文
posted @ 2024-03-11 15:34 Mr.peter 阅读(373) 评论(0) 推荐(0)
摘要: 不能,也不建议这么设置。底层的原理,涉及到集群的脑裂 。 阅读全文
posted @ 2024-03-11 15:13 Mr.peter 阅读(78) 评论(0) 推荐(0)
摘要: 答:前端的lb负载均衡服务器上的keepalived出现过脑裂现象。 何为keepalived脑裂 Keepalived的BACKUP主机在收到不MASTER主机报文后就会切换成为master,如果是它们之间的通信线路出现问题,无法接收到彼此的组播通知,但是两个节点实际都处于正常工作状态,这时两个节 阅读全文
posted @ 2024-03-11 14:59 Mr.peter 阅读(216) 评论(0) 推荐(0)