一文讲明白K8S各核心架构组件

2023年Kubernetes版本的选用对比指南 Kubernetes版本表示为xyz,其中x是主要版本,y是次要版本,z是补丁版本简单来讲,kubernetes项目存在3类分支(branch),分别为master,release-X.Y,release-X.Y.Z。 阅读详情

一、写在前面

K8S的文章很多人都写过,若要想好好研读,系统的学习,真推荐去看官方文档。但是若是当上下班路上的爽文,可以看下我的笔记,我也会尽力多写点自己的理解进来。

二、K8S为我们提供了怎样的能力

大家都知道Docker,我们可以将自己的应用打包制作成Image,然后通过docker run命令将Image启动成Container对外提供服务。

基于此,K8S不仅能将用户提供的单个容器运行起来,将其对外暴露出去提供服务。还提供了:路由网关、集群监控、灾难恢复,以及应用的水平扩展等能力。

大家常听过一个词:微服务、云原生应用,如何理解这个词自然也是见仁见智。

如下图是SpringCloud的架构图:

在SpringCloud中有不同的组件,诸如提供服务发现能力的:Eureka、提供负载均衡机制的Ribbon、以及微服务的统一入口Zuul, 基于这套框架做过开发的同学都知道,无论是Eureka还是Zuul,无论开发量大小,都需要程序员开发相应的代码,即使这些代码和业务本身并没有什么关系。

而在K8S中,像Eureka的服务发现能力,Zuul的网关能力、以及Ribbon的负载均衡能力,K8S都是原生支持的,开发人员只需要写好自己的业务代码,提供一个可执行的jar包,或者二进制文件即可部署进K8S中就行

当然不仅于此,K8S的服务网格组件如:Istio还提供了流量治理能力,比如按不同的请求头做不同比例的流量分发调度、亦或者是金丝雀发布。

说起容器编排,像Docker的Compose或者是Docker-Swarm都提供了简单的容器编排的能力。

像Docker-Compose或者Docker-Swarm的通病就是过于以Docker核心,提供的能力也过于简单比如定义谁先启动谁后启动。无法满足比较复杂的场景

而K8S的容器编排设计是站在更高的维度,Docker对于K8S而言只是运行它编排产出的介质,K8S针对不同的编排场景提供了不同的编排资源对象,如提供Deployment编排无状态应用,提供了Cronjob编排定时任务,提供了StatefulSet编排ES、Redis集群这种有状态应用等等,这都是前者所不能及的....

三、架构

K8S架构简图如上,分为MasterNode、WorkNode两大部分和五大组件,一开始接触这些概念难免会有些陌生,但是本质上这些组件都是K8S的开发者对各种能力的抽象和封装

3.1、MasterNode

和Redis或者Nginx这种由二进制文件启动后得到一个对外提供服务的守护进程不同,K8S中的MasterNode其实并不是一个二进制文件启动后得到的对外提供服务的守护进程,它本质上是一个抽象的概念。

MasterNode包含3个程序,分别是:

  • ApiServer
    • 提供HTTP Rest接口,是集群中各种核心资源的CRUD的统一入口,是集群中各个组件交互的核心枢纽
    • 集群资源配额的统一入口
    • 提供了完备的集群安全机制
  • ControllerManager
    • 实时监控集群中如Service等各种资源的状态变化,不断尝试将它们的副本数量维持在一个期望的状态。
  • Scheduler:
    • 负责调度功能,如:为Pod找到一个合适的宿主机器

3.2、WorkerNode

和MasterNode类似,WorkerNode本质也并不是一个独立的应用程序,它包含两个组件,如下

  • kubelet
    • Node节点管理
    • Pod管理,同容器运行时交互下发容器的创建/关闭命令
    • 容器健康状态检查
  • kube-proxy
    • 通过为Service资源的ClusterIP生成iptable或ipvs规则,实现将K8S内部的服务暴露到集群外面去

既然WorkNode也是抽象的概念,那么若在MasterNode启动kube-proxy和kubelet进程,那么MasterNode也会拥有WorkNode的能力,双重角色,但生产环境不推荐这样搞。

四、核心组件

4.1、ApiServer

4.1.1、概述

APIServer有完备的集群安全验证机制,提供了对K8S中如Pod、Service等资源CRUD等HttpRest接口,是集群中各个组件之间数据交互的核心枢纽。

4.1.2、是集群管理API的统一入口

为了更好的理解这个概念可以看如下图

通过kubectl命令执行创建 kubectl apply -f rs.yaml 创建pod时,经历的流程如上图,大概流程为

  1. apiserver接收kubectl的创建资源的请求
  2. apiserver将创建请求写入ECTD
  3. apiserver接收到etcd的回调事件
  4. apiserver将回调事件发送给ControllerManager
  5. controllerManager中的ReplicationController处理本次请求,创建RS,然后它会调控RS中的Pod的副本数量处于期望值,比期望值小就新创建Pod,于是它告诉ApiServer要创建Pod
  6. apiserver将创建pod的请求写入etcd集群
  7. apiserver接收etcd的创建pod的回调事件
  8. apiserver将创建pod的回调事件发送给scheduler,由它为pod挑选一个合适的宿主node
  9. scheduler告诉apiserver,这个pod可以调度到哪个node上
  10. apiserver将scheduler告诉他的事件写入etcd
  11. apiserver接收到etcd的回调,将更新pod的事件发送给对应node上的kubelet进程
  12. kubelet通过CRI接口同容器运行时(Docker)交互,维护更新对应的容器。

4.1.3、提供了完备的安全认证机制

ApiServer采用https+ca签名证书强制双向认证,也就说是想顺利访问通ApiServer的接口需要持有对应的证书

4.1.4、典型使用场景

比如在K8S内部搭建一个Elasticsearch的集群,每个pod中运行一个Pod,想搭集群的前提是得先知道有哪些运行着ES的Pod的ip地址。获取的途径只有一个:问ApiServer要。

那应用程序怎么知道ApiServer的地址呢?如下:

K8S中的Service占用单独的网段(启用ipvs的前提下,我的service网段为:192.168.0.0)

当我们安装完K8S集群后,在default命名空间中会有个默认的叫kubernetes的Service,这个service使用的service网段的第一个地址,而且 这个service是ApiServer的service,换句话说,通过这个service可以访问到apiserver

可以通过如下命令访问到本地的apiserver

curl --cert /etc/kubernetes/pki/admin.pem \
		 --key /etc/kubernetes/pki/admin-key.pem \
		 --cacert /etc/kubernetes/pki/ca.pem https://127..0.1:6443/api/v1/

将回环地址换成名为kubernetes的service的cluster-ip也能访问到api-server

curl --cert /etc/kubernetes/pki/admin.pem  --key /etc/kubernetes/pki/admin-key.pem --cacert /etc/kubernetes/pki/ca.pem https://192.168.0.1:6443/api/v1/

4.1.5、Api Proxy接口

ApiServer提供了一种特殊的Restful接口,它本身不处理这些请求而将请求转发给对应的Kubelet处理

如:关于Node相关的接口

# 查询指定节点上所有的pod信息
/api/v1/nodes/{nodename}/proxy/pods
# 查询指定节点上物理资源的统计信息
/api/v1/nodes/{nodename}/proxy/stats
# 查询指定节点上的摘要信息
/api/v1/nodes/{nodename}/proxy/spec

更多接口查询官网~

关于Pod的接口

# 访问pod
/api/v1/namespace/{namespace-name}/pods/{name}/proxy
# 访问pod指定路径
/api/v1/namespace/{namespace-name}/pods/{name}/{path:*}

4.2、ControllerManager

借助上图理解Controller的作用,它是K8S自动化管理各类资源的核心组件,所谓的自动化管理,其实就是实时监控集群中各类资源的状态的变化,不断的尝试将各类资源的副本数调整为期望值~

ControllerManager细分为8种Controller,如下

4.2.1、Replication Controller

  1. 确保任何时候ReplicaSet管理的Pod副本数量都为期望值
  2. 实际值高于期望值告诉apisever应该关闭多余的pod,反之亦然
  3. 只有当Pod的重启策略为Always,Replication Controller才会管理
  4. Replication Controller通过标签管理Pod,若pod标签被改,pod将脱离管控
  5. 提供重新调度、弹性扩/缩容、滚动更新能力

4.2.2、Node Controller

我们通过kubectl工具请求K8S的ApiServer获取集群中的Node信息,如下

可以看到集群中所有的节点和它的状态都是Ready

apiserver是如何知道集群中有哪些节点的呢?答案是:kubelet上报给apiserver,再经由watch机制转发Node Controller, 由Node Controller统一实现对集群中Node的管理 。若节点长时间异常,NodeControler会删除该节点,节点上的资源重新调度到正常的节点中~

4.2.3、ResourceQuota Controller

ResourceQuota Controller的功能是确保:指定资源对象数量在任何时候都不要超过指定的最大数量,进而保证由于业务设计的缺陷导致整个系统的紊乱甚至宕机。

使用示例:将ResourceQuota创建到哪个namespace中,便对哪个namespace生效

apiVersion: v1
kind: ResourceQuota
metadata:
  name: object-counts
spec:
  hard:
  	# ==对象数量配额==
    # 最多创建的cm数
    configmaps: "10"
    # 最多创建的pvc数
    persistentvolumeclaims: "4"
    # 最多启动的pod数
    pods: "4"
    # 在该命名空间中允许存在的 ReplicationController 总数上限。
    replicationcontrollers: "20"
    # 最多创建的secret数
    secrets: "10"
    # 最多创建的service数
    services: "10"
    # 在该命名空间中允许存在的 LoadBalancer 类型的 Service 总数上限。
    services.loadbalancers: "2"
    # 在该命名空间中允许存在的 NodePort 类型的 Service 总数上限。
    services.nodeports: 2
    
    
    # ==存储型==
    # 所有 PVC,存储资源的需求总量不能超过该值。
    requests.storage: 40Gi
    # 在命名空间的所有 Pod 中,本地临时存储请求的总和不能超过此值。
    requests.ephemeral-storage: 512Mi
    # 在命名空间的所有 Pod 中,本地临时存储限制值的总和不能超过此值。
    limits.ephemeral-storage: 40Gi
    # ephemeral-storage 	与 requests.ephemeral-storage 相同。
    
    
    # ==cpu、memory==
    # 所有非终止状态的 Pod,其 CPU 限额总量不能超过该值。
    limits.cpu: 1
    # 所有非终止状态的 Pod,其内存限额总量不能超过该值。
    limits.memory: 16Gi
    # 所有非终止状态的 Pod,其 CPU 需求总量(pod中所有容器的request cpu)不能超过该值。
    requests.cpu: 0.5
    # 所有非终止状态的 Pod,其内存需求总量(pod中所有容器的request cpu)不能超过该值。
    requests.memory: 512Mi
    # cpu: 0.5       和requests.cpu相同
    # memory: 512Mi  和 requests.memory相同

目前支持的资源配额如下

  • 容器级别
    • 限制容器的CPU、内存
  • Pod级别
    • 对Pod中所有的容器的可用之和资源统一限制
  • Namespace级别
    • Pod数量
    • RC的数量
    • Service数量
    • ResourceQuota的数量
    • Secret数量
    • 可持有的PV的数量等

感兴趣自己去了解LimitRange资源对象,LimitRange的配额自动为Pod添加Cpu和Memory的配置,这里不再展开

4.2.4、Namespace Controller

用户通过apiserver创建namespace,apiserver会将namespace的信息存储入etcd中。

namespaceController通过apiserver读取维护这些namespace的信息,若ns被标记为删除状态,namespaceController会将其状态改为Terminating

然后会删除它里面的ServiceAccount、RC、Pod等一切资源对象。

4.2.5、Service Controller - Endpoint Controller

Service Controller 会监听维护Service的状态、变化

Service、Pod、Endpoint之间的关系如下图:Service通过标签选择器找到并代理对应的pod,pod的ip维护和Service同名的Endpoint中~

Endpoint Controller的作用是:监听Service和他对应的pod的变化

  • 当Service被删除时,同步删除和Service同名的Endpoint对象
  • 新建/更新Service时,同步更新对应Endpoint的ip:port列表信息

endpoint对象由每个node上的kube-proxy的进程使用,下文会说

4.3、Scheduler

负责接收ApiServer创建Pod的请求,为Pod选择一个合适的Node,由该Node上的kubelet启动Pod中的相应容器

调度流程分两大步

  • 预选策略
    • 初步筛选出符合条件的Node
  • 优选策略
    • 在第一步的基础上选择更合适的Node

4.4、Kubelet

4.4.1、Node管理

通过设置启动参数 register-node 参数开启kubelet向apiserver注册自己的信息,apiserver会将数据

注册之后通过kubectl如下命令可用查看到集群中的所有node 的信息

若Node有问题,可以看到Status被标记为NotReady

4.4.2、Pod管理

最终管理员下发的创建Pod的请求由Kubelet转发给它所在节点的容器运行时(Docker)处理

4.4.3、容器健康检查

容器的livenessProbe探针(httpGet、tcpSocket、ExecAction)用于判断容器的健康状态。

kubelet会定期调用这些探针来判断容器是否存活~

httpGet

向容器发送Http Get请求,调用成功(通过Http状态码判断)则确定Pod就绪;

使用方式:

livenessProbe:
  httpGet:
    path: /app/healthz
    port: 80

exec

在容器内执行某命令,命令执行成功(通过命令退出状态码为0判断)则确定Pod就绪;

使用方式:

livenessProbe:
  exec:
    command:
    - cat 
    - /app/healthz

tcpSocket

打开一个TCP连接到容器的指定端口,连接成功建立则确定Pod就绪。

使用方式:

livenessProbe:
  tcpSocket:
    port: 80

一般就绪探针会在启动容器一段时间后才开始第一次的就绪探测,之后做周期性探测。所以在定义就绪指针时,会给以下几个参数:

  • initialDelaySeconds :在初始化容器多少秒后开始第一次就绪探测;
  • timeoutSeconds :如果该次就绪探测超过多少秒后还未成功,判定为超时,该次探测失败,Pod不就绪。默认值1,最小值1;
  • periodSeconds :如果Pod未就绪,则每隔多少秒周期性的做就绪探测。默认值10,最小值1;
  • failureThreshold :如果容器之前探测成功,后续连续几次探测失败,则确定容器未就绪。默认值3,最小值1;
  • successThreshold :如果容器之前探测失败,后续连续几次探测成功,则确定容器就绪。默认值1,最小值1。

4.5、KubeProxy

K8S原生的支持通过Service的方式代理一组Pod暴露到集群外部对外提供服务,创建Service时会这个Service创建一个Cluster-IP。而kubeproxy本质上就是这个Service的cluster-ip的负载均衡器。

在k8s的不同版本中,kubeproxy负载均衡Service的ClusterIp的方式不尽相同,主要如下

4.5.1、k8s1.2版本前

如上图这个版本的KubeProxy的更像是一个TCP/UDP代理,最明显的特征是:外部用户访问cluster:port过来的流量真实的经过了KubeProxy的处理和转发,即流量经过了userspace中。

4.5.2、k8s1.2~1.7版本

在这个版本KubeProxy端明显特征是:用户的流量不再由kubeproxy负责转发负载均衡。kubeproxy仅负责通过apiserver获取service和它对应的endpoint,然后根据这些数据信息生成iptables的规则,用户的流量通过iptables找到最终的pod。

4.5.3、k8s1.8版本及之后

和上一个版本的区别是支持了ipvs模块。

两者的定位不同:虽然iptables和ipvs都是基于netfilter实现的,但是iptables为防火墙而设计,而ipvs的定位是高性能的负载均衡。

在数据结构层面实现不同:iptables是链式结构,流量流经iptables要过所谓的四表五链,当集群中中的pod数量剧增,iptables会变得十分臃肿,效率下降。而ipvs是基于hash表实现的,理论上支持无限扩张,且寻址快。

ipvs也有不足,比如不支持包过滤、地址伪装、SNAT,在使用Nodeport类型的Service时,依然需要和iptables搭配使用。

五、网络组件

5.1、CoreDNS

CoreDNS是K8S的服务发现机制(有DNS能力),实现了通过解析service-name解析出cluster-ip的能力。而且service被重新创建时cluter-ip是可能发生变化的,但是server-name不会改变。

我们是以POD的形式将CoreDNS部署进K8S的,如下查看CoreDNS的service

这里的kube-dns的ip地址通常可以在安装coredns的配置文件中指定: coredns.yaml

验证下kube-dns解析外网域名的DNS能力

[root@master01 ~]# yum -y install bind-utils
[root@master01 ~]# dig -t A www.baidu.com @192.168.0.10  +short
www.a.shifen.com.
39.156.66.18
39.156.66.14

验证下kube-dns解析service名的DNS能力

# ${serviceName}.${名称空间}.svc.cluster.local.
[root@master01 ~]# dig -t A kubernetes.default.svc.cluster.local. @192.168.0.10 +short
192.168.0.1

5.2、CNI网络插件

像Calico或者flanel等,都是符合CNI规范的网络插件,作用如下:

  • 保证集群中的pod生成集群内全局唯一的IP地址。
  • 为K8S集群提供了一个扁平化的集群网络(service网络)意思就是说,它实现了集群内的Pod跨node也能直接互通。

注意点:flanel不支持NetworkPolicy资源对象定义的网络策略,而Calico支持。

什么是网络策略?如下

  • 只有来自IngressController的流量才能访问带有role=frontend标签的pod
  • 只有namespaceA的pod不能访问其他namespace的pod
  • 只有源ip地址在某个网段的请求才能访问Project-A
  • 从ProjectB出去的流量指定访问指定网段的Pod

参考:kubernetes官网、《kubernetes权威指南》

k8s学习笔记(二):k8s的组件介绍 k8s组件的详细介绍,让你对其有一个更清晰的认知! 阅读详情

相关推荐

2024年k8s最新版本安装教程

kubernetes,k和s直接是8个字母,简称k8s。是采用Go语言开发的。于2014年9月发布第一个版本,2015年7月发布第一个正式版本。官网:https://kubernetes.io代码仓库:https://github.com/kubernetes/kuberneteskubernetes的本质是一组服务器集群,它可以在集群的每个节点上运行特定的程序,来对节点中的容器进行管理。自我修复:一旦某一个容器崩溃,能够在1秒中左右迅速启动新的容器弹性伸缩。

打代码是一天,不打代码也是一天 7164

K8s 核心组件介绍

K8s 核心组件简介。

RAB 5823

Kubernetes(K8S)学习笔记

基本概念 1.Master   k8s集群的管理节点,负责管理集群,提供集群的资源数据访问入口。拥有Etcd存储服务(可选),运行Api Server进程,Controller Manager服务进程及Scheduler服务进程,关联工作节点Node。Kubernetes API server提供HTTP Rest接口的关键服务进程,是Kubernetes里所有资源的增、删、改、查等操作的唯一入...

芸灵fly的博客 1623

Kubernetes(K8s)的核心组件简介

Kubernetes 支持多种容器运行时,包括 Docker、containerd、CRI-O 和其他实现 Kubernetes Container Runtime Interface (CRI) 的运行时。它是 Kubernetes 的前端,处理和响应命令行接口(CLI)、用户接口(UI)或其他管理系统的请求。Kubernetes(简称 K8s)是一个开源的,用于自动化部署、扩展和管理容器化应用程序的平台。它根据各个节点的资源利用率、输入的资源需求、数据位置、策略等因素做出决策。这对于服务发现极为重要。

博然的宝藏库 5430

K8S 部署电商项目

K8S 部署电商项目

高飞的博客 9万+

基于STM32的RS485土壤氮磷钾与PH传感器数据采集与OLED显示实战(附完整代码)

本文详细介绍了基于STM32单片机通过RS485协议采集土壤氮磷钾与PH传感器数据的实战项目。涵盖硬件选型、连接方法、Modbus-RTU通信协议解析、STM32程序实现及OLED显示,提供完整代码和调试技巧,适用于农业物联网环境监测系统。

kotlin6android的博客 334

讲明白——K8S各核心架构组件

K8S的文章很多人都写过,若要想好好研读,系统的学习,真推荐去看官方文档。但是若是当上下班路上的爽文,可以看下我的笔记,我也会尽力多写点自己的理解进来。

Netty711的博客 731

用AI画电路板AI EDA初探Creating WiFi Radio with CELUS: A Step-by-Step Tutorial 使用CELU.IO创建WiFi收音机:分步教程

结论:整体还不太成熟,所选器件单元是欧美思维,器件选型成本和咱们华强北还是无法比。可以关注迭代,看客就当走马观花就行了;不过里面的单元模块还带有AI提问的这个比较好,值得国内EDA从业者学习。话不多说上正文:本教程目的是让我们深入了解如何使用CELUS设计平台构建WiFi收音机实战项目。本指南的重点是使用该平台来选择正确的解决方案,并整合一个项目,让您可以将音乐和节目从互联网直接传输到您自己构建的扬声器。

2301_81235726的博客 1万+

关于kubernetes(k8s),这可能是讲的最通俗易懂的一次了

Kubernetes (简称k8s)近两年大火,如果你是一名云计算从业者,或者运维人员,还不了解kubernetes 的话那你已经OUT了。 为了帮更多朋友了解容器技术,了解kubernetes,本周三我们在【光环云社群】做了一次kubernetes的入门讲座。直播开始前,分享嘉宾——资深运维陈铎、铎哥告诉我:我想好了,这次我就要把kubernetes掰开了揉碎了,讲到产品和运营人员都...

SinnetCloud的博客 10万+

GD32H7实战:5步搞定YOLO轻量化模型部署到MCU(附避坑指南)

本文详细介绍了如何将YOLO轻量化模型部署到GD32H7 MCU的完整实战流程。通过五个关键步骤,涵盖环境搭建、模型训练、格式转换到工程集成,并重点分享了使用GD32AI-ModelZoo工具链进行MCU部署的避坑指南,帮助开发者在资源受限的边缘设备上实现高效目标检测。

weixin_29070861的博客 445

【自动驾驶】汽车智能驾驶计算芯片

本文介绍汽车智能驾驶计算芯片的软硬件要求、 可靠性和安全性要求、 性能要求,和相应的试验方法。除了用于汽车智能驾驶, 其他领域的计算芯片可参照执行。

Mr.Cssust的博客 2631

Kubernetes K8S 基于 Docker 安装部署

在 Docker 容器技术被炒得热火朝天之时,大家发现,如果想要将 Docker 应用于具体的业务实现,是存在困难的——编排、管理和调度等各个方面,都不容易。于是,人们迫切需要一套管理系统,对 Docker 及容器进行更高级更灵活的管理。就在这个时候,K8S 出现了。K8S,就是基于容器的集群管理平台,它的全称,是 Kubernetes。 本次主题将会为你分享: K8S 起源 K8S 集群 为什...

GitChat 1万+

Android AudioFlinger实战:如何用FastMixer优化低延迟音频流(附调试技巧)

本文深入解析了Android AudioFlinger的FastMixer线程机制,指导开发者如何利用该技术优化低延迟音频流。通过实战配置AAudio API、调整硬件缓冲区及线程优先级,并结合adb、Systrace等调试技巧,可将音频延迟显著降低至10毫秒以下,适用于音乐制作、游戏音效等实时音频处理场景。

weixin_29230901的博客 334

【Kubernetes】(二)k8s基础—— k8s集群架构

Kubernetes(k8s)集群的架构是一个多层次协同的系统,核心由控制平面、节点组件和附加组件构成,各部分分工明确又紧密协作,共同支撑集群的完整功能。ps:要理解k8s集群架构,首先需要明白k8s中的Node和Pod(在【Kubernetes】2-1 中,会详细讲解k8s中的Node和Pod)Kubernetes 集群由一个控制平面和一组用于运行容器化应用的工作机器组成(Master-Worker架构):Master-Node负责管理整个集群(管理),Worker-Node负责运行应用程序和服务(干活)

lxyydh88888888的博客 1501

Fiori Elements 的 Adapting the UI: Analytical List Page 全解析与实战

摘要:本文详细介绍了如何通过SAP Fiori elements的UI Adaptation功能对Analytical List Page(ALP)进行细粒度适配。重点讲解了页头过滤区、图表区域、表格区域等关键组件的可配置属性,包括过滤区折叠/固定、图表类型限制、表格滚动阈值等实用功能。文章强调这些适配均可通过可视化工具完成,无需修改业务代码,并提供了典型场景的实践清单。适用于SAP Fiori elements for OData V2项目,建议配合SAP Fiori tools的Adaptation E

2007 年 ~ 2025 年,深耕 SAP 技术 18 年 432

EtherCAT主站SOEM -- 29 -- STM32F767-SOEM通过 CSP模式(周期同步位置模式)控制一个电机转圈圈

以上就是EtherCAT主站SOEM – 29 – STM32F767-SOEM通过 CSP模式(周期同步位置模式)控制一个电机转圈圈的内容。有不明白的地方欢迎留言;有建议欢迎留言,我后面编写文档好改进。创作不容,如果文档对您有帮助,记得给个赞。

常驻客栈的博客--嵌入式EtherCAT 2238

k8s | 搞不明白为什么大家都在学习 k8s

Hi! 我是小小,今天是本周的第二篇,本篇主要内容是讲解k8s前言都9102年了,你还不知道kubernetes就真的真的真的out啦。(贩卖焦虑体) 什么是k8s,k8s这个词来自于希...

mySoul 5512

【WorkBuddy专栏68】HY3绕路部署vsDS4直击根因——一次真实踩坑揭露两个AI模型的推理差距

【WorkBuddy专栏68】HY3绕路部署vsDS4直击根因——一次真实踩坑揭露两个AI模型的推理差距

AI人人懂 557

搞不明白为什么大家都在学习 k8s

作者|小明菜市场来源 |小明菜市场(ID:fileGeek)头图 | 优快云下载自东方IC前言都2020年了,你还不知道kubernetes就真的真的真的out啦。(贩卖焦虑...

优快云资讯 2642

精雕软件(JDpaint) 5.5 绿色版

精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版

win10 跳过U8环境检测的IE WebControls.rar

win10 安装u8的时候 提示IE WebControls 不通过,这个工具可以欺骗u8的检查。 跳过U8环境检测的IE WebControls。提示导入失败后,重新检测通过。

【一文讲明白什么是云原生,有什么优势】

最近看见云原生比较火,越来越多的编程语言、框架开始拥抱云原生,例如 Spring 推出了面向云原生的技术 Spring Native、RedHat 开源了 Java 云原生服务框架 Quarkus。查看了招聘网站,发现该岗位的招聘需求非常大,薪资非常可观。简单来说,云原生就是在云中构建、运行应用程序的一套完整的技术体系和方法论。这里的技术体系和方法论就目前来说指的是微服务+DevOps+持续交付+容器化。

居然天上楼的博客 2887

jdk-8u144-linux-x64.tar.gz.

该资源为搭建Linux系统Java环境用,资源的后缀为tar.gz格式的压缩包

K8S(一)—— 云原生与Kubernetes(K8S)

2004年:Google开始在内部大规模使用容器技术。2008年:Google将Cgroups技术合并进Linux内核,为容器化技术奠定基础。2013年:Docker项目正式发布,推动容器技术进入开源领域。2014年:Kubernetes项目正式发布,成为容器编排的行业标准。2015年:Google、Redhat、微软等共同发起成立CNCF(云原生计算基金会),推进云原生技术的开源生态。2017年:CNCF成员达到170个,基金项目数量为14个。

sk13587280072的博客 973

kubernetes(k8s),个人理解

k8s是什么 一个基于容器技术的分布式架构领先方案, k8s与docker的关系 如同J2EE与java,对应的就是k8s与docker,但是k8s不仅限于docker还有Rocket等其他的技术,k8s是docker的上层,说白了,我们用kubernetes去管理Docker集群,即可以将Docker看成Kubernetes内部使用的低级别组件 为什么会有k8s ...

进行中 732

K8S学习心得:Kubernetes的基本架构和概念

相信很多朋友在学习K8S的时候,能够借助yaml文档把自己的应用部署到K8S集群上,但是对于K8S内部的技术细节和实现原理并不了解,而这恰恰正是我们作为开发者提升技术所欠缺的东西。那么今天我们就来简单总结一下K8S的基本架构和其中的各个组件的概念和原理。 在开始正式介绍K8S之前,我们首先要搞明白一个问题:K8S是用来干什么的?(欢迎移步我的另一片关于云计算虚拟化的入门介绍博客) 平常使用过Doc...

qq_44584356的博客 2033
上一篇: 面试官:Java反射是什么?我回答不上来
下一篇: Java Agent:动态修改字节码
JavaShark
博客等级 码龄4年 184粉丝 438原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值