云原生本质上是一套让用户用好云的技术栈。k8s on cloud是这套技术栈的主框架,k8s on cloud是各个厂商基于自己的云产品和开源k8s软件实现的容器集群产品。
这些容器集群产品,以云服务器为节点,基于专有网络实现集群网络,依靠弹性伸缩等实现节点伸缩等,从而吸收了云的弹性和k8s的自动化运维等属性。
阿里云K8s集群分为四层结构,自下而上分别是云资源层、单机系统层、集群系统层和功能扩展层。
云资源层包括就请你使用的所有云资源,此层需要用户付费;单机系统层包括节点的操作系统和容器运行时;集群系统层包括K8s系统组件以及插件;最上面是功能扩展层,基于下部的三层自愿,并依靠一些特殊功能组件而实现的对集群功能的扩展。

云资源层和云上K8s之间的关系,相当于计算机硬件与操作系统之间的关系。云资源层为K8s提供了有弹性优势的软硬件基础,如云服务器、安全组、专有网络、负载均衡、资源编排等。
首先是资源管理。专有版集群使用了多种云资源,以资源编排ROS(Resource Orchestration Service)模板为基础,结合用户自定义配置统一管理底层资源。
其次是集群网络,专有版集群创建之初就被指定了专有网络VPC(virtual private cloud)的配置,如节点网段等。VPC实例被创建之后,其他所有集群资源,都必须与这个VPC实例相关联。VPC的安全组在这里扮演集群网络的防火墙角色。
然后是计算资源。集群在默认情况下会创建三个云服务器作为管控节点,同时集群会根据用户的需求,创建若干云服务器作为集群的Worker节点,这些Worker节点与弹性伸缩实例绑定,以实现节点伸缩功能。集群节点和访问控制RAM(Resource Access Management)的角色绑定,以授权集群内部组件访问其他云资源。另外,集群节点可以挂载云盘并以本地存储形式来使用。
最后是接口实现。集群使用NAT网关作为集群默认的网络出口,使用负载均衡SLB(Server Load Balancer)
作为集群的入口,包括API Server入口,以及图中为包括的Service的入口。

托管版和Serverless版本未使用,所以不介绍。
单机系统层主要有操作系统和容器运行时两部分,理论上说两者的组合有很多变化,如CentOS和Docker,Windows和Docker等。阿里云单机系统层主要支持CentOS和Windows两种操作系统,以及Docker和安全沙箱两种容器运行时。
Docker 是一个开源的应用容器引擎,让开发者可以打包他们的应用以及依赖包到一个可移植的镜像中,然后发布到任何流行的Linux或Windows操作系统的机器上,也可以实现虚拟化。容器是完全使用沙箱机制,相互之间不会有任何接口。
相比于原有Docker运行时,安全沙箱为您提供的一种新的容器运行时选项,可以让您的应用运行在一个轻量虚拟机沙箱环境中,拥有独立的内核,具备更好的安全隔离能力。
安全沙箱特别适合于不可信应用隔离、故障隔离、性能隔离、多用户间负载隔离等场景。在提升安全性的同时,对性能影响非常小,并且具备与Docker容器一样的用户体验,例如日志、监控、弹性等。
不支持同一节点同时部署Docker和安全沙箱两种运行时。
集群内可以通过创建不同节点池来实现Docker运行时节点和安全沙箱运行时节点混合部署。
这一层是指K8s及其组件,比如网络组件CNI。存储插件FlexVolume等。
集群系统层的组件和功能在专有版中主要体现在Master节点和Worker节点上。
在Master节点上,运行着集群中心数据库ETCD,以及集群管控的三大件API Server、Controller Manager 和Scheduler,另外包括Cloud Controller Manager等定制组件。
在Worker节点上,运行着服务代理Proxy、节点代理Kubelet,以及网络插件和存储插件等自定义组件。

托管版和Serverless版本未使用,所以不介绍。
功能扩展层是对包括日子、监控、存储、镜像、路由、负载均衡、伸缩、DNS和包管理在内的的,大量K8s on Cloud集群扩展组件的合成。因为这些丰富的功能扩展层,集群才能不是IaaS+,不断接近PaaS。大部分扩展组件都是基于某些云产品,同时采用自动一控制器的方式实现,比如监控扩展组件,就包括了云监控和监控控制器等部分。


组件部署阶段,用户需要给集群安装日志控制器,包括实现的日志服务的扩展资源定义CRD。
日志配置阶段,日志控制器会读取应用日志相关配置,并通过日志服务的云接口,创建对应的日志文件和配置。
在日志收集阶段,日志收集工具Logtail会从容器文件或者标准输出中获取日志数据,并同步到日志服务。

文章目录一、污点(Taint)1、污点简介2、污点的组成3、污点的设置和去除二、容忍(Tolerations)1、容忍简介2、容忍的基本用法3、示例4、多污点与多容忍配置三、警戒(cordon)和转移(drain)四、Pod启动阶段(相位phase)五、故障排除步骤一、污点(Taint)节点亲和性,是Pod的一种属性(偏好或硬性要求),它使Pod被吸引到一类特定的节点Taint则相反,它使节点能够排斥一类特定的PodTaint和Toleration相互配合,可以用来避免Pod被分配到不合适的节点上。每个节点上都可以应用一个或多个taint,这表示对于那些不能容忍这些taint的Pod,是不会被
文章目录Kubernetes(k8s)工作负载一、Workloads二、Pod三、Deployment四、RC、RS、DaemonSet、StatefulSet五、Job、CronJob1、Job2、CronJob六、GCKubernetes(k8s)工作负载一、Workloads什么是工作负载(Workloads)工作负载是运行在Kubernetes上的一个应用程序。一个应用很复杂,可能由单个组件或者多个组件共同完成。无论怎样我们可以用一组Pod来表示一个应用,也就是一个工作负载Pod又是一组容器(Containers)所以关系又像是这样工作负载(Workloads)控制一组PodPod控制
前言 前端时间PHP项目部署升级需要,需要把Laravel开发的项目部署K8s上,下面以laravel项目为例,讲解采用yaml文件方式部署项目。一、部署步骤1.创建Dockerfile文件Dockerfile是一个用来构建镜像的文本文件,在容器运行时,需要把项目文件和项目运行所必须的组件安装其中。#基础镜像FROMphp:7.4-fpm#时区ARGTZ=Asia/Shanghai#更换容器时区RUNcp"/usr/share/zoneinfo/$TZ"/etc/localtime&&echo"$TZ">/etc/timezone#替换成阿里apt-get源RUNsed-i"s@http
2023年4月20 日,DatabendCloud经历了近两年的打磨终于发布了!🎉此次发布会由北京数变科技有限公司【DatabendLabs】联合阿里云共同举办。DatabendCloud借助于云原生数仓Databend实现了云简单易用的大数据分析场景。以下内容来自Databend联合创始人-王吟、DatabendCloud平台负责人-李亚舟以及阿里云智能资深产品运营专家-蔡亮伟,在本次发布会上的分享总结。🙋本次发布会分为三个部分:第一部分:王吟,李亚舟分享:「 云上数据变革,DatabendCloud发布」第二部分:蔡亮伟分享:「阿里云对象存储OSS, 构建企业级数据湖底座」第三部分:在阿里
目录前言安装containerd解压安装配置成systemd任务安装runc编辑安装cni配置containerd镜像源containerd基本使用拓展阅读nerdctl工具安装及使用整体脚本总结写在后面前言上一篇文章,我们介绍了虚拟机的基础环境以及基础的网络配置,还有一些k8s节点要用到基础环境配置。本文将带领大家把containerd给安装了containerd的项目官方地址https://github.com/containerd/containerdcontainerd的发布版本地址如下https://github.com/containerd/containerd/releases
文章目录一.k8s集群修改config1.1备份当前k8s集群配置文件1.2删除当前k8s集群的apiserver的cert和key1.3生成新的apiserver的cert和key1.4刷新admin.conf1.5重启apiserver1.6刷新.kube/config二.安装kubectl2.1下载kubectl2.2配置kubectl三.使用kubernetes-client操作k8s集群3.1依赖3.2注意(可忽略)3.3创建StatefulSet3.4运行shell命令3.5删除StatefulSet3.6线上运行注意一.k8s集群修改config因为默认的是内网IP,复制出来后,
k8sissue: error:Readinessprobefailed:HTTPprobefailedwithstatuscode:503explanation:Kubernetes为准备和活动探测返回HTTP503错误的事实意味着到后端的连接可能有问题。有趣的是,这不是重点。这些探针不是用来执行HTTP流的端到端测试的。探测只用于验证它们所监视的服务是否响应。简单地说,好的是自己设置的readiness探针(probe)起作用了,不好的是,自己的配置文件可能有一些其他方面的问题。具体是什么方面的问题呢?就是创建出来的container里的报错信息Read-onlyfilesystem/xx
日志收集介绍日志收集的目的:分布式日志数据统一收集,实现集中式查询和管理故障排查安全信息和事件管理报表统计及展示功能日志收集的价值:日志查询、问题排查、故障恢复和故障自愈应用日志分析,错误报警性能分析,用户行为分析k8s常用的日志收集方式:在节点上进行收集,基于daemonset部署日志收集容器,实现json-file类型(标准输出/dev/stdout,错误输出/dev/stderr)日志收集使用sidecar容器收集当前Pod内一个或多个业务容器的日志,通常基于emptyDir实现业务容器与sidecar容器之间的日志共享在容器内内置日志收集进程ES集群部署使用主机如下:IP主机名角色19
文章目录概述认证认证插件基于静态token的认证服务实践基于X509证书认证实践基于webhook认证实践鉴权k8s中RBAC的使用授权实践准入场景配额管理实践插件插件开发限流APIPriorityandFairnessAPF中的排队FlowSchema与PriorityLevelConfiguration(队列权重配置)调试命令概述kube-apiserver是k8s最重要的控制组件之一,主要提供以下功能:提供集群管理的RESTAPI接口,包括认证授权、数据校验以及集群状态变更等k8s中所有模块与etcd的数据交互都需要走APIServer,禁止直接和etcd通信APIServer请求流程概
文章目录01引言02DNS服务在k8s的发展2.1SkyDNS2.2KubeDNS2.3CoreDNS03搭建CoreDNS服务3.1修改每个Node上kubelet的DNS启动参数3.2部署CoreDNS服务3.2.1ConfigMap3.2.2Deployment3.2.3Service04服务名的DNS解析05CoreDNS配置5.1示例一:设置插件5.2示例二:自定义域名5.3示例三:转发域名查询到上游DNS服务器上06引言01引言声明:本文为《Kubernetes权威指南:从Docker到Kubernetes实践全接触(第5版)》的读书笔记作为服务发现机制的基本功能,在集群内需要能够