Skip to main content

moregeek program

kubernetes 实战 (一) -- 泛 k8s 导论_10928714的博客-多极客编程

Kubernetes 是谷歌推出的一个工业级的容器编排平台,允许自动化部署、管理和扩容容器化应用,它现在已成为容器编排的事实标准。

k8s 由来

Kubernetes 是希腊语,中文翻译是“舵手”或者“飞行员”,其实最常用的是其简称 k8s,即将收尾k和s之间的8个字母“ubernete ”替换为“8”而导致的一个缩写,和编程界最常用的另一个缩写 i18s - internationalization(国际化)类似。

Kubernetes 实战 (一) -- 泛 k8s 导论_运维

是什么 -- 分布式集群自动(自助)化运维舵手

k8s 是分布式集群、自动(自助)化运维 舵手,在轻量级容器(如docker)上,实现分布式集群的高动态运维和服务治理功能,完善DevOps体系,模糊了Dev和Ops的界限。诞生于以下2大重要背景

Kubernetes 实战 (一) -- 泛 k8s 导论_运维_02

需求驱动 -- 微服务化后的分布式部署集群

SOA以及微服务流行的背景下,单体应用被拆分为数十微服务、多机部署数百实例,人工部署和管理既繁重、亦冗余,甚至不可能,因此诞生了以 k8s 为代表的分布式集群自动化运维工具。反之,传统单体应用、单机部署、运维的场景下,是不会产生、也不需要的k8s等复杂编排工具,无需过度设计,形而上学。

Kubernetes 实战 (一) -- 泛 k8s 导论_docker_03

技术驱动 -- 轻量级容器化技术

以 Docker 为代表的轻量级容器化技术,实现了单机百/千级数量容器秒级的部署速度和高扩展的api,为上层分布式集群下的容器编排提供了可能。

  • Docker本质是什么?

Docker等轻量级容器技术是虚拟化方案,提升虚拟机的有效载荷比和性能,从而榨干 单机部署多服务 的极限,但并不是为了解决多机(分布式集群)运维的,所以才有 k8s、Apache Mesos 等集群容器编排工具的必要。

高动态集群运维抽象模型 DCOM

应用集群化部署、运维的一般流程

在通常的生产场景中,新迭代业务需求经开发、测试后即交由运维,进入部署、上线流程,大致包括以下环节:

Kubernetes 实战 (一) -- 泛 k8s 导论_运维_04

  • 交付指定运维人员

一个项目团队的运维人员往往是固定、关联的,且其所有的运维工作都需满足审计要求,标准、安全、留痕,因此运维人员通常由自己的固定账户,且最小化权限,降低风险。

  • 评估、申请资源

业务团队根据自身应用的特点,是IO密集型、还是CPU密集型,评估所需的CPU、内存、网络、存储等资源,从而支持应用健康、持续、高效运行。

  • 提交配置

各类配置是往往是应用运行的起步依赖,多套环境往往意味着多套配置,因此需要交付给运维人员正确的配置,避免混淆、错误运行。

  • 部署应用集群

现在的业务应用大多是无状态的,适合对等集群化部署,既解决了单点故障问题,又可以均衡分担负载。

  • 部署守护任务

监控、日志等提高应用可观察性的周边管理类服务往往以 Sidecar 的方式独立部署,避免挤占核心服务的资源,保障核心服务的稳定。

  • 部署负载均衡LB(VIP)

应用的多实例的对等集群,需要使用负载均衡器LB如Nginx统一代理请求、定制负载均衡策略,而非直接的、显式的某一个具体的实例,否则失去了集群化的价值。同时为了保证LB的高可用,通常会部署多个LB代理,并使用VIP技术实现同一的对外标识,屏蔽内部故障切换细节。

  • DNS绑定域名

虽然通过 IP:Port 可以静态访问到暴露出来的服务(VIP),但 IP 并不是友好的语义化符号,且无法动态适用应用迁移等导致的IP改变情况,因此通常亦需要通过DNS协议绑定语义化、识记友好的短符号,并解耦客户端与服务端的静态绑定关系。

抽象 高动态集群运维模型 DCOM

高动态集群运维模型是对上述应用集群化部署、运维的一般流程抽象,以标准化、程序化的方式准确界定每一个环节,从而为可编程的分布式集群自助化部署和运维提供了理论支撑,主流开源的 kubernatesApache Mesos 等均可看作其实现。

Kubernetes 实战 (一) -- 泛 k8s 导论_分布式集群_05

  • Namespace (应用)命名空间

应用部署的第一步,本质是为某些应用或项目从整个集群上划分、隔离出的子集群。一套庞大的分布式集群并不是为了部署某一个应用,而是多个应用共享的,因此进行应用级的划分,让应用安全、稳定运行在逻辑沙箱中,对应用本身、以及整个集群来说都是必须的。

  • Authentication 认证 与 Authentization 鉴权

是对运维人员以及各类管理进程的抽象,以安全、受控的方式去实现审计要求的操作留痕、最小权限等原则。

  • Resource 一切皆资源

分布式集群本身是由cpu、内存、网络、存储等软硬件资源的集合,而应用集群化部署和运维的本质是对集群各类资源如CPU、内存的动态规划和治理,因此非常适合将各类资源抽象化,并使用REST风格API管理。

  • Config 集群化的动态配置

常规的配置适合应用本身静态相关的,并不具备集群化管理的特征,也无法动态关联多个相关应用。集群化的动态配置Config,要求部署配置和应用配置解耦,从而实跨应用、跨实例的动态配置共享。

  • Deploy 部署

部署的本质是在集群上安装和运行一个需要占用一定集群资源(如cpu、内存)、提供某种服务的应用进程,也是最核心的环节。

部署本身不仅仅是应用进程本身,更包括和集群关联的各类资源和策略,因此不能狭义的将部署与具体的应用形式对等。

部署应该屏蔽具体的应用形式,无论是各类程序包,如Java jar/war包,还是各类轻量级容器(如docker),甚至是虚拟机,对集群来说都是上层的、一致化的部署Deploy。

  • Service 内置服务发现

分布式/微服务流行的背景下,服务化 Service 已是标准和共识,Service的本质是为一组动态的对等或相关进程集合提供对外一致的服务标记(服务名),从而在集群内天然实现服务发现(微服务的核心)的能力。

开源实现

kubernates 并非唯一、也非最早的分布式集群应用编排工具,在整个应用架构的第四层容器编排层有众多开源的实现,但都可以抽象看做 高动态集群运维模型 DCOM 的实现。

Kubernetes 实战 (一) -- 泛 k8s 导论_运维_06

  • Apache Mesos

最早、也是最强大的集群容器编排系统,为后面 Docker Swarm、甚至 kubernates 等后期之秀提供了集群应用编排的有效解决方案。但本身由Mesos 和 Marathon 两套独立 API,学习复杂,难于推广和流行,2019年 Twitter 宣布不再支持。

  • Docker Swarm

由 Docker 官方推出的容器编排系统,特征是开箱即用,可以满足小规模集群、简单部署场景。但本身功能过于简陋,且不支持超大规模集群,因此并未在企业级市场成为主流,同样是2019 年阿里云宣布不再支持。

  • Kubernates - 事实标准 👍

Google 出品,必属精品。 kubernates 作为谷歌推出的后起之秀,吸收了 Apache Mesos 和 Docker Swarm 优点,客服了其缺点,并完美实现了 高动态集群运维模型 DCOM ,从市占率看已成为分布式集群容器编排工具的事实标准,并以成为 DevOps 趋势下的必备技术栈。

Kubernetes 实战 (一) -- 泛 k8s 导论_docker_07

©著作权归作者所有:来自51CTO博客作者huafeihuao0的原创作品,请联系作者获取转载授权,否则将追究法律责任

redis-dump 工具安装_圣骑士控魔之手的博客-多极客编程

说明 redis-dump是一个第三方的工具,这就意味着需要安装才能使用,它依赖与ruby。 经过踩坑发现对ruby版本还是有要求的,Centos 7.+使用yum info ruby发现版本为2.0.0.+,这个时候你大概率会很麻烦,你需要通过rvm升级ruby或源码安装ruby,而不能简单使用yum进行升级。 如果你使用Ubuntu 20,你可以使用apt-get install ruby-f

unzip命令_清晨的博客-多极客编程

一、命令介绍unzip命令是用于.zip格式文件的解压缩工具。unzip命令将列出、测试或从 zip 格式存档中提取文件。二、命令选项unzip [选项] [参数] [文件]选项 说明-c 将解压缩的结果显示到屏幕上,并对字符做适当的转换-f 更新现有的文件-l 显示压缩文件内所包含的文件-p 与-c参数类似,会将解压缩的结果显示到屏幕上,但不会执行任何的转换-t 检查压缩文件是否正确

每天三个linux基础命令-010_zuilikanxingchen的博客-多极客编程

自行坦荡,光芒万丈​内容不一定精彩,知识不一定你可以用得上,观点不一定准确,还望观者觉得有缺陷欢迎指正,觉得还好的感谢鼓励点赞。 10.1  stat 查看文件详细信息主要参数:stat  后跟文件名演示:[root@zzp ~]# stat dfTest.sh 文件:"dfTest.sh" 大小:244 块:8 IO 块:4096 普通文件设备:803

使用kubeadm搭建kubernetes1.24.3版本_赤色风暴的博客-多极客编程

一、机器环境3台4C8G50GB磁盘虚拟机角色IP主机名master10.101.14.148k8s-master-10-101-14-148node10.101.14.19node1-10-101-14-19node10.101.14.192node2-10-101-14-192二、虚拟机系统版本和k8s版本操作系统/内核版本AnliOS7.9/4.19.91-25.3kubernetesv1.

基于cri-dockerd使用kubeadm部署kubernetes1.25集群_akida-ko的博客-多极客编程

1. 前言介绍 关于Kuebernetes的部署 常用于部署K8s集群的工具和部署方式 minikube kubeadm 二进制包 本文使用kubeadm部署方式 K8s集群的部署有多种方式,而使用Kubeadm是部署K8s集群是其一,通过使用kubeadm方式部署,相教于使用二进制方式部署K8s多个组件的方法,Kubeadm使用一条命令即可完成整个k8s集群的搭建。 官网:https://

docker jenkins 安装插件导致jenkins升级、版本回退_keep的博客-多极客编程

1、场景同事要使用api token插件导致jenkins自动升级无法正常启动。jenkins属于sre的CD部分,一挂无法发版,十万火急。升级后启动报错内容如下:docker logs -f jenkins-id//插件启动失败SEVERE h.model.UpdateCenter$DownloadJob#run: Failed to install jaxbjava.io.IOExcepti

redis-dump 工具安装_圣骑士控魔之手的博客-多极客编程

说明 redis-dump是一个第三方的工具,这就意味着需要安装才能使用,它依赖与ruby。 经过踩坑发现对ruby版本还是有要求的,Centos 7.+使用yum info ruby发现版本为2.0.0.+,这个时候你大概率会很麻烦,你需要通过rvm升级ruby或源码安装ruby,而不能简单使用yum进行升级。 如果你使用Ubuntu 20,你可以使用apt-get install ruby-f

分布式定时任务设计及其框架_枫叶飘飘的博客-多极客编程

在很多应用系统中,我们常常要定时或周期性执行一些任务。比如,订单系统的超时状态判断、缓存数据的定时更新、定时给用户发邮件,甚至是一些定期计算的报表等。单机程序中常见的处理方式有线程的while(true) 和sleep组合,使用定时器触发任务。1、为什么需要分布式定时任务高可用:单机版的定时任务调度只能在一台机器上运行,如果程序或者系统出现异常,就会导致功能不可用。多任务管理复杂:一个系统可能会有

unzip命令_清晨的博客-多极客编程

一、命令介绍unzip命令是用于.zip格式文件的解压缩工具。unzip命令将列出、测试或从 zip 格式存档中提取文件。二、命令选项unzip [选项] [参数] [文件]选项 说明-c 将解压缩的结果显示到屏幕上,并对字符做适当的转换-f 更新现有的文件-l 显示压缩文件内所包含的文件-p 与-c参数类似,会将解压缩的结果显示到屏幕上,但不会执行任何的转换-t 检查压缩文件是否正确

使用kubeadm搭建kubernetes1.24.3版本_赤色风暴的博客-多极客编程

一、机器环境3台4C8G50GB磁盘虚拟机角色IP主机名master10.101.14.148k8s-master-10-101-14-148node10.101.14.19node1-10-101-14-19node10.101.14.192node2-10-101-14-192二、虚拟机系统版本和k8s版本操作系统/内核版本AnliOS7.9/4.19.91-25.3kubernetesv1.

基于cri-dockerd使用kubeadm部署kubernetes1.25集群_akida-ko的博客-多极客编程

1. 前言介绍 关于Kuebernetes的部署 常用于部署K8s集群的工具和部署方式 minikube kubeadm 二进制包 本文使用kubeadm部署方式 K8s集群的部署有多种方式,而使用Kubeadm是部署K8s集群是其一,通过使用kubeadm方式部署,相教于使用二进制方式部署K8s多个组件的方法,Kubeadm使用一条命令即可完成整个k8s集群的搭建。 官网:https://

docker jenkins 安装插件导致jenkins升级、版本回退_keep的博客-多极客编程

1、场景同事要使用api token插件导致jenkins自动升级无法正常启动。jenkins属于sre的CD部分,一挂无法发版,十万火急。升级后启动报错内容如下:docker logs -f jenkins-id//插件启动失败SEVERE h.model.UpdateCenter$DownloadJob#run: Failed to install jaxbjava.io.IOExcepti