合集-kubernetes学习

摘要:声明式应用管理 声明式描述的期望状态。这个描述必须是严格意义上使用者想要的最终状态,如果你在这个描述里面填写的是某个中间状态,或者你希望动态的调整这个期望状态,都会破坏这个声明式语义的准确执行。 基于 reconcile 的状态逼近过程。Reconcile 过程的存在,确保了系统状态与终态保持一致的 阅读全文
posted @ 2023-10-24 19:16 花都八达鸟 阅读(55) 评论(0) 推荐(0)
摘要:1.检查主机名、MAC 地址或 product_uuid,不能有重复值 ifconfig -a,对于linux主机,查看ens开头的网络接口,MAC 地址会以类似于 00:1a:2b:3c:4d:5e 的格式显示 hostname,查看主机名 hostnamectl set-hostname xxx 阅读全文
posted @ 2023-10-25 14:35 花都八达鸟 阅读(190) 评论(0) 推荐(0)
摘要:定义 Kubernetes 对象是持久化的实体。 Kubernetes 使用这些实体去表示整个集群的状态。 Kubernetes 对象是一种“意向表达(Record of Intent)”。 属性 每个 Kubernetes 对象包含两个嵌套的对象字段:对象 spec(规约) 和对象 status( 阅读全文
posted @ 2023-10-26 16:23 花都八达鸟 阅读(60) 评论(0) 推荐(0)
摘要:公共操作: 安装相关依赖包: apt-get install -y apt-transport-https ca-certificates curl gpg apt-transport-https:用于通过 HTTPS 协议使用 APT 软件包管理器。 ca-certificates:包含用于验证 阅读全文
posted @ 2023-10-27 17:22 花都八达鸟 阅读(105) 评论(0) 推荐(0)
摘要:社区架构分层 生态系统 CI/CD、微服务、日志收集、持续监控、operator 接口层 k8s官方的库、工具、UI;可有外部的自有实现 kubectl helm dashboard .... 治理层 策略执行和自动化编排,是对于应用的可选层,不影响应用的执行 RABC HPA .... 应用层 部 阅读全文
posted @ 2023-10-27 23:13 花都八达鸟 阅读(55) 评论(0) 推荐(0)
摘要:工作负载即k8s上运行的应用程序,通常由多组容器构成的多组pods实现 为了便于自动化管理工作负载,对不同业务类型的工作负载进行抽象: 无状态工作负载:管理的pod集合相互等价,可替换 deplyment replicaSet 有状态工作负载:唯一ID,保证顺序性和唯一性,不可替代,可用持久存储保存 阅读全文
posted @ 2023-10-28 18:50 花都八达鸟 阅读(167) 评论(0) 推荐(0)
摘要:Kube-proxy 是 Kubernetes 集群中的网络代理组件,它主要负责处理集群内部的网络通信、负载均衡和服务发现等任务。它可以实现在不同节点之间的网络通信以及对 Service 的负载均衡功能。然而,尽管 kube-proxy 提供了基本的网络代理功能,但它并不涵盖所有与网络相关的功能需求 阅读全文
posted @ 2023-10-29 16:27 花都八达鸟 阅读(121) 评论(0) 推荐(0)
摘要:kubectl apply -f https://raw.githubusercontent.com/kubernetes/dashboard/v2.7.0/aio/deploy/recommended.yaml 安装dashboard 为dashboard创建服务账户admin-user,并与集群 阅读全文
posted @ 2023-10-29 19:54 花都八达鸟 阅读(103) 评论(0) 推荐(0)
摘要:容器的本质实际上是一个进程,是一个视图被隔离,资源受限的进程。 容器的设计本身是一种“单进程”模型,指的是容器的生命周期等同于 PID=1 的进程(容器应用进程)的生命周期,由于容器的应用等于进程,所以只能去管理 PID=1 的这个进程,其他再起来的进程其实是一个托管状态。 所以说服务应用进程本身就 阅读全文
posted @ 2023-10-29 20:20 花都八达鸟 阅读(62) 评论(0) 推荐(0)
摘要:有状态应用 计算维度:有固定名称,pods之间的启动、升级、退出按顺序 存储维度:存储不随pod生命周期结束而结束,pod与其使用的存储的关系稳定 网络维度:每个pod有独立、固定的网络标识 statefulSet直接管理pod,deployment通过replicaSet管理pod pv 持久化存 阅读全文
posted @ 2023-10-29 23:05 花都八达鸟 阅读(19) 评论(0) 推荐(0)
摘要:service定义了一组pod的网络分组和访问它们的策略 无selector的service 可通过与 Endpoints 中的端口相同的targetPort,和Endpoints自动绑定 Headless service 可以自主选择后端服务器或与固定服务器通信 externalName Serv 阅读全文
posted @ 2023-10-29 23:42 花都八达鸟 阅读(27) 评论(0) 推荐(0)
摘要:pod配置: 可变配置就用 ConfigMap;敏感信息是用 Secret;身份认证是用 ServiceAccount 这几个独立的资源来实现的;资源配置是用 Resources;安全管控是用 SecurityContext;前置校验是用 InitContainers 这几个在 spec 里面加的字 阅读全文
posted @ 2023-10-30 20:01 花都八达鸟 阅读(31) 评论(0) 推荐(0)
摘要:Pod Volumes 的常见类型: 本地存储,常用的有 emptydir/hostpath; emptyDir 其实是在 pod 创建的过程中会临时创建的一个目录,这个目录随着 pod 删除也会被删除,里面的数据会被清空掉;hostPath 顾名思义,其实就是宿主机上的一个路径,在 pod 删除之 阅读全文
posted @ 2023-10-31 15:59 花都八达鸟 阅读(33) 评论(0) 推荐(0)
摘要:这些 pod 组需要提供一个统一的访问入口,以及怎么去控制流量负载均衡到这个组里面 pod 的网络跟机器不是同一个段的网络,那怎么让 pod 网络暴露到去给外部访问呢?这时就需要服务发现。 在 service 创建之后,它会在集群里面创建一个虚拟的 IP 地址以及端口,在集群里,所有的 pod 和 阅读全文
posted @ 2023-11-01 17:33 花都八达鸟 阅读(19) 评论(0) 推荐(0)
摘要:往 kube-ApiServer 里面提交 yaml 文件,ApiServer 会先把这个待创建的请求路由给 webhooks 的 Controlles 进行校验。 通过校验之后,ApiServer 会在集群里面生成一个 pod,但此时生成的 pod,它的 nodeName 是空的,并且它是 Pen 阅读全文
posted @ 2023-11-02 22:09 花都八达鸟 阅读(50) 评论(0) 推荐(0)
摘要:数据卷挂载的过程 第一步:用户创建一个包含 PVC的 Pod; 第二步:PV Controller 会不断观察 ApiServer,如果它发现一个 PVC 已经创建完毕但仍然是未绑定的状态,它就会试图把一个 PV 和 PVC 绑定;PV Controller 首先会在集群内部找到一个适合的 PV 进 阅读全文
posted @ 2023-11-05 17:03 花都八达鸟 阅读(52) 评论(0) 推荐(0)
摘要:在 Kubernetes 里面, API 编程范式也就是 Custom Resources Definition(CRD),就是用户自定义资源。 随着 Kubernetes 使用的越来越多,用户自定义资源的需求也会越来越多。而 Kubernetes 提供的聚合各个子资源的功能,已经不能满足日益增长的 阅读全文
posted @ 2023-11-10 17:40 花都八达鸟 阅读(117) 评论(0) 推荐(0)
摘要:相关概念 CRD (Custom Resource Definition): 允许用户自定义 Kubernetes 资源,是一个类型; CR (Custom Resourse): CRD 的一个具体实例; webhook: 它本质上是一种 HTTP 回调,会注册到 apiserver 上。在 api 阅读全文
posted @ 2023-11-10 19:39 花都八达鸟 阅读(50) 评论(0) 推荐(0)
摘要:容器网络发端于 Docker 的网络。Docker 使用的网络模型是内部的网桥加内部的保留 IP。当需要访问外部世界时,会采用 SNAT 这种方法来借用 Node 的 IP 去访问外面的服务。若容器需要对外提供服务的时候,所用的是 DNAT 技术,把流导入到容器的进程上。该模型的问题在于,外部网络无 阅读全文
posted @ 2023-11-11 15:58 花都八达鸟 阅读(50) 评论(0) 推荐(0)
摘要:CNI,它的全称是 Container Network Interface,即容器网络的 API 接口。 它是 K8s 中标准的一个调用网络实现的接口。Kubelet 通过这个标准的 API 来调用不同的网络插件以实现不同的网络配置方式。 在集群里面创建一个 Pod 的时候,首先会通过 apiser 阅读全文
posted @ 2023-11-11 16:34 花都八达鸟 阅读(116) 评论(0) 推荐(0)
摘要:访问控制是云原生中的一个重要组成部分。 访问控制 请求的发起,请求的发起分为两个部分: 第一个部分是人机交互的过程。 是大家非常熟悉的用 kubectl 对 api-server 的一个请求过程; 第二个部分是 Pod 中的业务逻辑与 api-server 之间的交互。 当api-server 收到 阅读全文
posted @ 2023-11-12 21:44 花都八达鸟 阅读(99) 评论(0) 推荐(0)
摘要:在 CRI 出现之前(也就是 Kubernetes v1.5 之前),Docker 作为第一个容器运行时,Kubelet 通过内嵌的 dockershim 操作 Docker API 来操作容器,进而达到一个面向终态的效果。 越来越多的容器运行时被开发,促进了CRI的出现。 对容器运行时的操作抽象出 阅读全文
posted @ 2023-11-14 22:55 花都八达鸟 阅读(129) 评论(0) 推荐(0)
摘要:随着越来越多的容器运行时的出现,不同的容器运行时也有不同的需求场景,于是就有了多容器运行时的需求。但是,如何来运行多容器运行时还需要解决以下几个问题: 集群里有哪些可用的容器运行时? 如何为 Pod 选择合适的容器运行时? 如何让 Pod 调度到装有指定容器运行时的节点上? 容器运行时在运行容器时会 阅读全文
posted @ 2023-11-16 16:54 花都八达鸟 阅读(73) 评论(0) 推荐(0)
摘要:原生Kubernetes 应用安装维护复杂(yaml文件太多) Helm(配置分离) Helm 是 Kubernetes 的包管理器,用于简化应用程序的部署和升级。它使用称为 Chart 的打包格式,其中包含了描述应用程序的所有资源和依赖关系。 Helm Chart 的格式,将应用所需要的资源文件都 阅读全文
posted @ 2023-11-01 19:19 花都八达鸟 阅读(26) 评论(0) 推荐(0)
摘要:网络问题:直接安装calico插件,没有配置网络会导致每个节点的路由无法转发,pod之间跨节点无法通信 解决办法:使用calico+flannel作为cni普罗米修斯部署时,网络策略会导致只能特定pod才能通信(nodeport部署服务失效) 解决办法:删除网络策略的部署 阅读全文
posted @ 2023-11-24 14:54 花都八达鸟 阅读(37) 评论(0) 推荐(0)
摘要:调度器启动时会通过配置文件 File,或者是命令行参数,或者是配置好的 ConfigMap,来指定调度策略。指定要用哪些过滤器 (Predicates)、打分器 (Priorities) 以及要外挂哪些外部扩展的调度器 (Extenders),和要使用的哪些 Schedule 的扩展点 (Plugi 阅读全文
posted @ 2023-11-04 20:40 花都八达鸟 阅读(260) 评论(0) 推荐(0)
摘要:作业管理缺失 上层应用无感知,任务依赖支持 调度策略局限 资源分享调度、cpu/IO拓扑调度 领域计算框架支持不足 不同框架对作业管理、并行计算要求不同 资源规划复用 集群资源的动态规划 阅读全文
posted @ 2023-11-04 21:14 花都八达鸟 阅读(39) 评论(0) 推荐(0)
摘要:容器网络模型 任意两个 pod 之间其实是可以直接通信的,无需经过显式地使用 NAT 来接收数据和地址的转换 node 与 pod 之间是可以直接通信的,无需使用明显的地址转换 pod 看到自己的 IP 跟别人看见它所用的IP是一样的,中间不能经过转换 解决目标 外部世界和 service 之间通信 阅读全文
posted @ 2023-11-01 16:46 花都八达鸟 阅读(46) 评论(0) 推荐(0)