03 2024 档案

摘要:1)确保容器本身安全; 2)锁定容器的Linux内核; 3)使用基于角色的访问控制(RBAC); 4)保守秘密的辛勤工作; 5)保持网络安全; 阅读全文
posted @ 2024-03-11 18:54 Mr.peter 阅读(12) 评论(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 阅读(312) 评论(0) 推荐(0) 编辑
摘要:1)Service创建的时候会向 API Server 用 POST 方式提交一个新的 Service 定义,这个请求需要经过认证、鉴权以及其它的准入策略检查过程之后才会放行; 2)CoreDns 会为Service创建一个dns记录,Service 得到一个 ClusterIP(虚拟 IP 地址) 阅读全文
posted @ 2024-03-11 18:50 Mr.peter 阅读(55) 评论(0) 推荐(0) 编辑
摘要:Job控制一组Pod容器,可以通过Job这种资源对象定义并启动一个批处理任务的Job,其中Job所控制的Pod副本是短暂运行的,可以将其视为一组Docker容器,每个Docker容器都仅仅运行一次,当Job控制的所有Pod的副本都运行结束时,对应的Job也就结来。 Job生成的副本是不能自动重启的, 阅读全文
posted @ 2024-03-11 18:44 Mr.peter 阅读(11) 评论(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 阅读(42) 评论(0) 推荐(0) 编辑
摘要:Helm 是 Kubernetes 的软件包管理工具,Helm能够将一组K8S资源打包统一管理, 是查找、共享和使用为Kubernetes构建的软件的最佳方式。 Helm中通常每个包称为一个Chart,一个Chart是一个目录,优势:1)统一管理、配置和更新这些分散的 k8s 的应用资源文件;2)分 阅读全文
posted @ 2024-03-11 18:38 Mr.peter 阅读(137) 评论(0) 推荐(0) 编辑
摘要:Kubernetes集群联邦可以将多个Kubernetes集群作为一个集群进行管理。因此,可以在一个数据中心/云中创建多个Kubernetes集群,并使用集群联邦在一个地方控制/管理所有集群; 阅读全文
posted @ 2024-03-11 18:38 Mr.peter 阅读(41) 评论(0) 推荐(0) 编辑
摘要:在Kubernetes集群环境中,通常一个完整的应用或服务涉及组件过多,建议对日志系统进行集中化管理,EFK是 Elasticsearch、Fluentd 和 Kibana 的组合, Elasticsearch:是一个搜索引擎,负责存储日志并提供查询接口; Fluentd:负责从 Kubernete 阅读全文
posted @ 2024-03-11 18:23 Mr.peter 阅读(21) 评论(0) 推荐(0) 编辑
摘要:简述Kubernetes网络模型 Kubernetes网络模型中每个Pod都拥有一个独立的IP地址,不管它们是否运行在同一个Node(宿主机)中,都要求它们可以直接通过对方的IP进行访问; 同时为每个Pod都设置一个IP地址的模型使得同一个Pod内的不同容器会共享同一个网络命名空间,也就是同一个Li 阅读全文
posted @ 2024-03-11 18:14 Mr.peter 阅读(22) 评论(0) 推荐(0) 编辑
摘要:简述Kubernetes PodSecurityPolicy机制 Kubernetes PodSecurityPolicy是为了更精细地控制Pod对资源的使用方式以及提升安全策略。 在开启PodSecurityPolicy准入控制器后,Kubernetes默认不允许创建任何Pod,需要创建PodSe 阅读全文
posted @ 2024-03-11 17:26 Mr.peter 阅读(43) 评论(0) 推荐(0) 编辑
摘要:1)在创建Pod时,通过为Pod指定Service Account来自动使用该Secret; 2)通过挂载该Secret到Pod来使用它; 3)在Docker镜像下载时使用,通过指定Pod的spc.ImagePullSecrets来引用它; 阅读全文
posted @ 2024-03-11 17:24 Mr.peter 阅读(9) 评论(0) 推荐(0) 编辑
摘要:Secret对象,主要作用是保管私密数据,比如密码、OAuth Tokens、SSH Keys等信息。 将这些私密信息放在Secret对象中比直接放在Pod或Docker Image中更安全,也更便于使用和分发; 阅读全文
posted @ 2024-03-11 17:23 Mr.peter 阅读(11) 评论(0) 推荐(0) 编辑
摘要:RBAC是基于角色的访问控制,是一种基于个人用户的角色来管理对计算机或网络资源的访问的方法, 优势: 1)对集群中的资源和非资源权限均有完整的覆盖; 2)整个RBAC完全由几个API对象完成, 同其他API对象一样, 可以用kubectl或API进行操作; 3)可以在运行时进行调整,无须重新启动AP 阅读全文
posted @ 2024-03-11 17:22 Mr.peter 阅读(18) 评论(0) 推荐(0) 编辑
摘要:在对集群进行请求时,每个准入控制代码都按照一定顺序执行。 如果有一个准入控制拒绝了此次请求,那么整个请求的结果将会立即返回,并提示用户相应的error信息,准入控制(AdmissionControl)准入控制本质上为一段准入代码,在对kubernetes api的请求过程中,顺序为:先经过认证 & 阅读全文
posted @ 2024-03-11 17:19 Mr.peter 阅读(9) 评论(0) 推荐(0) 编辑
摘要:1)基础设施方面:保证容器与其所在宿主机的隔离; 2)用户权限:划分普通用户和管理员的角色; 3)API Server的认证授权:Kubernetes集群中所有资源的访问和变更都是通过Kubernetes API Server来实现的,因此需要建议采用更安全的HTTPS或Token来识别和认证客户端 阅读全文
posted @ 2024-03-11 17:18 Mr.peter 阅读(16) 评论(0) 推荐(0) 编辑
摘要:在Kubernetes集群中,在每个Node(又称Worker)上都会启动一个kubelet服务进程。 该进程用于处理Master下发到本节点的任务,管理Pod及Pod中的容器。 每个kubelet进程都会在API Server上注册节点自身的信息,定期向Master汇报节点资源的使用情况,并通过c 阅读全文
posted @ 2024-03-11 17:16 Mr.peter 阅读(20) 评论(0) 推荐(0) 编辑
摘要:1)预选(Predicates):输入是所有节点,输出是满足预选条件的节点。kube-scheduler根据预选策略过滤掉不满足策略的Nodes。如果某节点的资源不足或者不满足预选策略的条件则无法通过预选; 2)优选(Priorities):输入是预选阶段筛选出的节点,优选会根据优先策略为通过预选的 阅读全文
posted @ 2024-03-11 17:14 Mr.peter 阅读(12) 评论(0) 推荐(0) 编辑
摘要:K8s API Server作为集群的核心,负责集群各功能模块之间的通信。 集群内的各个功能模块通过API Server将信息存入etcd,当需要获取和操作这些数据时,则通过API Server提供的REST接口(用GET、LIST或WATCH方法)来实现,从而实现各模块之间的信息交互。 1)kub 阅读全文
posted @ 2024-03-11 17:13 Mr.peter 阅读(84) 评论(0) 推荐(0) 编辑
摘要:K8s的Ingress资源对象,用于将不同URL的访问请求转发到后端不同的Service,以实现HTTP层的业务路由机制。 K8s使用了Ingress策略和Ingress Controller,两者结合并实现了一个完整的Ingress负载均衡器。 使用Ingress进行负载分发时,Ingress C 阅读全文
posted @ 2024-03-11 17:10 Mr.peter 阅读(5) 评论(0) 推荐(0) 编辑
摘要:映射Pod到物理机:将Pod端口号映射到宿主机,即在Pod中采用hostPort方式,以使客户端应用能够通过物理机访问容器应用; 映射Service到物理机:将Service端口号映射到宿主机,即在Service中采用nodePort方式,以使客户端应用能够通过物理机访问容器应用; 映射Servic 阅读全文
posted @ 2024-03-11 17:08 Mr.peter 阅读(20) 评论(0) 推荐(0) 编辑
摘要:在某些应用场景中,若需要人为指定负载均衡器,不使用Service提供的默认负载均衡的功能,或者应用程序希望知道属于同组服务的其他实例。 Kubernetes提供了Headless Service来实现这种功能,即不为Service设置ClusterIP(入口IP地址),仅通过Label Select 阅读全文
posted @ 2024-03-11 17:04 Mr.peter 阅读(13) 评论(0) 推荐(0) 编辑
摘要:1)RoundRobin:默认为轮询模式,即轮询将请求转发到后端的各个Pod上; 2)SessionAffinity:基于客户端IP地址进行会话保持的模式,即第1次将某个客户端发起的请求转发到后端的某个Pod上,之后从相同的客户端发起的请求都将被转发到后端相同的Pod上; 阅读全文
posted @ 2024-03-11 16:42 Mr.peter 阅读(29) 评论(0) 推荐(0) 编辑
摘要:Kubernetes使用Horizontal Pod Autoscaler(HPA)的控制器实现基于CPU使用率进行自动Pod扩缩容的功能。 HPA控制器周期性地监测目标Pod的资源性能指标,并与HPA资源对象中的扩缩容条件进行对比,在满足条件时对Pod副本数量进行调整; 阅读全文
posted @ 2024-03-11 16:40 Mr.peter 阅读(68) 评论(0) 推荐(0) 编辑
摘要:iptables与IPVS都是基于Netfilter实现的,但因为定位不同,二者有着本质的差别: iptables是为防火墙而设计的;IPVS则专门用于高性能负载均衡,并使用更高效的数据结构(Hash表),允许几乎无限的规模扩张。 与iptables相比,IPVS拥有以下明显优势:为大型集群提供了更 阅读全文
posted @ 2024-03-11 16:18 Mr.peter 阅读(120) 评论(0) 推荐(0) 编辑
摘要:简述ETCD及其特点 etcd是一个分布式的、高可用的、一致的key-value存储数据库,基于Go语言实现,主要用于共享配置和服务发现。特点: 1)完全复制:集群中的每个节点都可以使用完整的存档; 2)高可用性:Etcd可用于避免硬件的单点故障或网络问题; 3)一致性:每次读取都会返回跨多主机的最 阅读全文
posted @ 2024-03-11 16:13 Mr.peter 阅读(21) 评论(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 阅读(4) 评论(0) 推荐(0) 编辑
摘要:答:deployment是rs的超集,提供更多的部署功能,如:回滚、暂停和重启、 版本记录、事件和状态查看、滚动升级和替换升级。 如果能使用deployment,则不应再使用rc和rs; rc/rs实现原理 Replication Controller 可以保证Pod始终处于规定的副本数, 而当前推 阅读全文
posted @ 2024-03-11 16:08 Mr.peter 阅读(57) 评论(0) 推荐(0) 编辑
摘要:用Metrics Server提供核心指标,包括Node、Pod的CPU和内存的使用。而Metrics Server需要采集node上的cAdvisor提供的数据资源, 当 kubelet 服务启动时,它会自动启动 cAdvisor 服务,然后 cAdvisor 会实时采集所在节点的性能指标及在节点 阅读全文
posted @ 2024-03-11 16:05 Mr.peter 阅读(20) 评论(0) 推荐(0) 编辑
摘要:1)EmptyDir(空目录):没有指定要挂载宿主机上的某个目录,直接由Pod内保部映射到宿主机上。类似于docker中的manager volume;场景有:a.只需要临时将数据保存在磁盘上,比如在合并/排序算法中;b.作为两个容器的共享存储,使得第一个内容管理的容器可以将生成的数据存入其中,同时 阅读全文
posted @ 2024-03-11 15:56 Mr.peter 阅读(219) 评论(0) 推荐(0) 编辑
摘要:1)配置是否自动化:flannel 除了支持建立覆盖网络来实现 Pod 到 Pod 之间的无缝通信之外,还跟 docker、k8s 的架构体系紧密结合,flannel 能感知 k8s 中的 service 对象,然后动态维护自己的路由表,并通过 etcd 来协助 docker 对整个 k8s 集群的 阅读全文
posted @ 2024-03-11 15:52 Mr.peter 阅读(44) 评论(0) 推荐(0) 编辑
摘要:总体而言,是 通过Raft协议进行节点之间数据同步, 保证节点之间的数据一致性 Raft算法是一种用于管理复制日志的一致性算法,其功能与Paxos算法相同类似,但其算法结构和Paxos算法不同,在设计Raft算法时设计者就将易于理解作为其目标之一,这使得Raft算法更易于构建实际的系统,大幅度减少了 阅读全文
posted @ 2024-03-11 15:34 Mr.peter 阅读(268) 评论(0) 推荐(0) 编辑
摘要:不能,也不建议这么设置。底层的原理,涉及到集群的脑裂 。 阅读全文
posted @ 2024-03-11 15:13 Mr.peter 阅读(41) 评论(0) 推荐(0) 编辑
摘要:答:前端的lb负载均衡服务器上的keepalived出现过脑裂现象。 何为keepalived脑裂 Keepalived的BACKUP主机在收到不MASTER主机报文后就会切换成为master,如果是它们之间的通信线路出现问题,无法接收到彼此的组播通知,但是两个节点实际都处于正常工作状态,这时两个节 阅读全文
posted @ 2024-03-11 14:59 Mr.peter 阅读(98) 评论(0) 推荐(0) 编辑
摘要:标签及标签选择器是什么,如何使用 标签是键值对类型,标签可以附加到任何资源对象上,主要用于管理对象,查询和筛选。 标签常被用于标签选择器的匹配度检查,从而完成资源筛选;一个资源可以定义一个或多个标签在其上面。 标签选择器,标签要与标签选择器结合在一起,标签选择器允许我们选择标记有特定标签的资源对象子 阅读全文
posted @ 2024-03-09 22:51 Mr.peter 阅读(24) 评论(0) 推荐(0) 编辑
摘要:pod是什么? 在kubernetes的世界中,k8s并不直接管理容器,而是使用多个容器共存的理念,这组容器就叫做pod。 pod是k8s中可以创建和管理的最小单元,是资源对象模型中由用户创建或部署的最小资源对象模型,其他的资源对象都是用来支撑pod对象功能的,比如,pod控制器就是用来管理pod对 阅读全文
posted @ 2024-03-09 21:52 Mr.peter 阅读(15) 评论(0) 推荐(0) 编辑
摘要:namespace是kubernetes系统中的一种非常重要的资源,namespace的主要作用是用来实现多套环境的资源隔离,或者说是多租户的资源隔离。 k8s通过将集群内部的资源分配到不同的namespace中,可以形成逻辑上的隔离,以方便不同的资源进行隔离使用和管理。 不同的命名空间可以存在同名 阅读全文
posted @ 2024-03-09 16:48 Mr.peter 阅读(199) 评论(0) 推荐(0) 编辑
摘要:kube-api-server的端口是8080和6443,前者是http的端口,后者是https的端口,以我本机使用kubeadm安装的k8s为例: 在命名空间的kube-system命名空间里,有一个名称为kube-api-master的pod, 这个pod就是运行着kube-api-server 阅读全文
posted @ 2024-03-09 16:45 Mr.peter 阅读(172) 评论(0) 推荐(0) 编辑
摘要:kubelet部署在每个node节点上的,它主要有4个功能:1、节点管理。 kubelet启动时会向api-server进行注册,然后会定时的向api-server汇报本节点信息状态,资源使用状态等,这样master就能够知道node节点的资源剩余,节点是否失联等等相关的信息了。master知道了整 阅读全文
posted @ 2024-03-09 16:41 Mr.peter 阅读(949) 评论(0) 推荐(0) 编辑
摘要:优势:容器编排、轻量级、开源、弹性伸缩、负载均衡; 场景:快速部署应用、快速扩展应用、无缝对接新的应用功能、节省资源,优化硬件资源的使用; 特点: 可移植: 支持公有云、私有云、混合云、多重云(multi-cloud)、 可扩展: 模块化,、插件化、可挂载、可组合、 自动化: 自动部署、自动重启、自 阅读全文
posted @ 2024-03-09 16:34 Mr.peter 阅读(146) 评论(0) 推荐(0) 编辑
摘要:k8s主要由master节点和node节点构成。 master节点负责管理集群,node节点是容器应用真正运行的地方。 master节点包含的组件有:kube-api-server、kube-controller-manager、kube-scheduler、etcd。 node节点包含的组件有:k 阅读全文
posted @ 2024-03-09 16:17 Mr.peter 阅读(373) 评论(0) 推荐(0) 编辑
摘要:master: k8s集群的管理节点,负责管理集群,提供集群的资源数据访问入口。拥有Etcd存储服务(可选),运行Api Server进程,Controller Manager服务进程及Scheduler服务进程; node(worker): Node(worker)是Kubernetes集群架构中 阅读全文
posted @ 2024-03-09 16:12 Mr.peter 阅读(15) 评论(0) 推荐(0) 编辑
摘要:ReplicaSet(RS)是Replication Controller(RC)的升级版本。ReplicaSet 和 Replication Controller之间的唯一区别是对选择器的支持。ReplicaSet支持labels user guide中描述的set-based选择器要求, 而Re 阅读全文
posted @ 2024-03-09 15:33 Mr.peter 阅读(60) 评论(0) 推荐(0) 编辑
摘要:每个Pod都有一个特殊的被称为"根容器"的Pause 容器(Pause容器,又叫Infrastructure容器)。 Pause容器对应的镜像属于Kubernetes平台的一部分,除了Pause容器,每个Pod还包含一个或者多个紧密相关的用户业务容器。 众所周知,容器之间是通过Namespace隔离 阅读全文
posted @ 2024-03-08 23:02 Mr.peter 阅读(30) 评论(0) 推荐(0) 编辑
摘要:首先提一个缩写OSI,这个学计算机网络的再熟悉不过了,不过时间已久可能就不是那么有印象了,可能这个缩写都已经不认识了。 OSI:Open System Interconnection,开放系统互联。它是国际化标准组织制定的计算机互相联络的协议模型,也就是说要想通过计算机互相连接,那么请按照这个标准来 阅读全文
posted @ 2024-03-08 15:46 Mr.peter 阅读(55) 评论(0) 推荐(0) 编辑
摘要:摘要:本文将详细介绍如何使用Kubernetes(K8S)部署一套Golang微服务项目,并给出了完整的实施步骤和相应代码示例,旨在指导刚入行的开发者完成这一任务。 一、整体流程下面是使用K8S部署Golang微服务项目的整体流程,我们将在接下来的内容中详细介绍每一步骤。 1. 准备容器镜像2. 创 阅读全文
posted @ 2024-03-07 21:16 Mr.peter 阅读(622) 评论(0) 推荐(0) 编辑
摘要:1、轮询法 将请求按顺序轮流地分配到后端服务器上,它均衡地对待后端的每一台服务器,而不关心服务器实际的连接数和当前的系统负载。 2、随机法 通过系统的随机算法,根据后端服务器的列表大小值来随机选取其中的一台服务器进行访问。由概率统计理论可以得知,随着客户端调用服务端的次数增多,其实际效果越来越接近于 阅读全文
posted @ 2024-03-06 22:03 Mr.peter 阅读(356) 评论(0) 推荐(0) 编辑
摘要:1.什么是Docker? Go语言开发,容器虚拟化技术,C/S架构,具有隔离、快速、轻便的特点。 2.Docker与虚拟机有何不同? 相比于虚拟机,docker更快速、轻便。快速:秒级启动轻便:联合文件系统 3.Docker镜像是什么? 联合文件系统。可以通过DockerFile构建或通过容器Com 阅读全文
posted @ 2024-03-04 22:52 Mr.peter 阅读(392) 评论(0) 推荐(0) 编辑
摘要:一、Docker-Compose作用 之前运行一个镜像,需要添加大量的参数,可以通过Docker-Compose编写这些参数,Docker-Compose可以帮助我们批量的管理容器,只需要通过一个docker-compose.yml文件去维护。 1、下载docker-compose 地址:https 阅读全文
posted @ 2024-03-03 16:47 Mr.peter 阅读(34) 评论(0) 推荐(0) 编辑
摘要:容器生命周期管理 run start/stop/restart kill rm pause/unpause create exec 容器操作 ps inspect top attach events logs wait export port stats 容器rootfs命令 commit cp d 阅读全文
posted @ 2024-03-03 15:33 Mr.peter 阅读(4) 评论(0) 推荐(0) 编辑
摘要:Docker 资源 Docker 官方主页: https://www.docker.com Docker 官方博客: https://blog.docker.com/ Docker 官方文档: https://docs.docker.com/ Docker Store: https://store. 阅读全文
posted @ 2024-03-03 15:31 Mr.peter 阅读(18) 评论(0) 推荐(0) 编辑
摘要:1、使用多阶段构建:对于复杂的应用程序,可以使用多个阶段来构建Docker镜像。每个阶段可以专注于特定的任务,从而提高构建速度和镜像大小。 2、最小化镜像大小:使用合适的基础镜像,并确保只安装必需的依赖项。可以使用多阶段构建和镜像分层来减小镜像的大小,并提高镜像的可维护性和可重复性。 3、定期更新镜 阅读全文
posted @ 2024-03-03 15:23 Mr.peter 阅读(44) 评论(0) 推荐(0) 编辑
摘要:打包: 1、安装Docker:首先,在Linux主机上安装Docker。可以通过官方网站提供的安装脚本或包管理器来安装Docker。 2、创建Dockerfile:在应用程序的根目录下创建一个名为Dockerfile的文件。Dockerfile是一个文本文件,用于定义如何构建Docker镜像。可以在 阅读全文
posted @ 2024-03-03 14:07 Mr.peter 阅读(271) 评论(0) 推荐(0) 编辑
摘要:在容器化技术不断发展的今天,Docker 和 Podman 分别作为两个主流的容器运行时,吸引了大量开发者和企业的关注。本文将从多个角度全方位地对比这两者的优缺点,以帮助您更好地了解它们的特点并做出明智的选择。 1. 简介 1.1 Docker Docker 是目前最流行的开源容器平台,自 2013 阅读全文
posted @ 2024-03-02 22:03 Mr.peter 阅读(2574) 评论(0) 推荐(3) 编辑
摘要:闭包是由函数及其相关引用环境组合而成的实体(即:闭包=函数+引用环境)。 Go中的闭包 闭包是函数式语言中的概念,没有研究过函数式语言的用户可能很难理解闭包的强大,相关的概念超出了本书的范围。Go语言是支持闭包的,这里只是简单地讲一下在Go语言中闭包是如何实现的。 func f(i int) fun 阅读全文
posted @ 2024-03-02 15:37 Mr.peter 阅读(44) 评论(0) 推荐(0) 编辑