| |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
-> 系统运维 -> 【k8s】Kubernetes全栈技术体系介绍 -> 正文阅读 |
|
[系统运维]【k8s】Kubernetes全栈技术体系介绍 |
本文将从以下6个方面介绍Kubernetes的全栈体系:
Kubernetes起源Kubernetes项目来源于谷歌内部的Borg,Borg是集群的管理器,在它的系统中,运行着众多集群,而每个集群可由成千上万的服务器联接组成,Borg每时每刻都在处理来自众多应用程序所提交的成百上千的Job, 对这些Job进行接收、调度、启动、停止、重启和监控。 Kubernetes于2015年7月22日迭代到 v 1.0并正式对外公布,谷歌联合Linux基金会及其他合作伙伴共同成立了CNCF基金会( Cloud Native Computing Foundation),并将Kuberentes 作为首个编入CNCF管理体系的开源项目,助力容器技术生态的发展进步。 Kubernetes项目凝结了Google过去十年间在生产环境的经验和教训,从Borg的多任务Alloc资源块到Kubernetes的多副本Pod,从Borg的Cell集群管理,到Kubernetes设计理念中的联邦集群,在Docker等高级引擎带动容器技术兴起和大众化的同时,为容器集群管理提供独了到见解和新思路。 DockerDocker是一个开源的应用容器引擎,让开发者可以打包他们的应用以及依赖包到一个可移植的镜像中,然后发布到任何流行的 Linux或Windows 机器上,也可以实现虚拟化。容器是完全使用沙箱机制,相互之间不会有任何接口。
docker有兴趣的可以详看我的这篇博客: Kubernetes的特点和特性谷歌开发的容器集群管理系统。它是基于Docker的容器化技术的,它在Docker技术的基础上,为容器化的应用提供部署运行、资源调度、服务发现和动态伸缩等一些列完整功能,提高了大规模容器集群管理的便捷性。 1.Kubernetes的架构1.1 Kubernetes节点Master Node 集群的网关和中枢枢纽,主要作用:暴露API接口,跟踪其他服务器的健康状态、以最优方式调度负载,以及编排其他组件之间的通信。 Kubernetes的工作节点,负责接收来自Master的工作指令,并根据指令相应地创建和销毁Pod对象,以及调整网络规则进行合理路由和流量转发。生产环境中,Node节点可以有N个。 1.2 Kubernetes组件
1.3 Kubernetes资源2.Kubernetes工作负载2.1 PodPod介绍 Kubernetes中最小的调度单位,代表着集群中运行的进程(应用实例)。 Pod和Controller Controller 可以创建和管理多个 Pod,提供副本管理、滚动升级 Controller 3.Kubernetes网络3.1 IP和Port
3.2 内部访问SVC 通过Label关联Pod 服务发现方式:
3.3 Flannel
数据从源容器中发出后,经由所在主机的docker0虚拟网卡转发到flannel0虚拟网卡,这是个P2P的虚拟网卡,flanneld服务监听在网卡的另外一端(Flannel通过Etcd服务维护了一张节点间的路由表); 源主机的flanneld服务将原本的数据内容UDP封装后根据自己的路由表投递给目的节点的flanneld服务,数据到达以后被解包,然后直接进入目的节点的flannel0虚拟网卡,然后被转发到目的主机的docker0虚拟网卡; 最后就像本机容器通信一下的有docker0路由到达目标容器,这样整个数据包的传递就完成了。 3.3 外部访问NodePort
lngress
LoadBalancer
4.Kubernetes存储4.1 存储卷Kubernetes对存储抽象了两种存储卷:Volume,Persistent Volume Volume: 与Pod之间静态绑定 与Docker的存储卷类似,使用的是Pod所在Kubernetes节点的本地目录,分为三种:
4.2 Kubernetes存储定义Kubernetes对存储提供了三个定义:Volume,Persistent Volume 和动态存储供应(dynamic provisioning)。 Persistent Volume(PV):与Pod之间动态绑定
Access Modes(访问模式)
Dynamic provisioning:动态存储供应
PV 和 PVC 的生命周期: 5.Kubernetes运维5.1 Kubernetes监控监控维度
监控方案 5.2 Kubernetes日志收集可以采用ELK的方式来做,详见博主ELK系列博客: 【ELK】logstash安装、使用其收集日志并展示 6.DevOps服务编排 Kubernetes虽然提供了多种容器编排对象,但是一个应用往往有多个服务,有的可能还要依赖持久化存储,当这些服务之间直接互相依赖,需要有一定的组合的情况下,使用YAML文件的方式配置应用往往十分繁琐还容易出错,这时候就需要服务编排工具。 服务编排管理工具构建在Kubernetes的基础Object之上,统筹各个服务之间的关系和依赖。 目前常用到的工具是 Helm。 Helm是一个Kubernetes应用的包管理工具,用来管理chart预先配置好的安装包资源) 有兴趣的读者可以去了解一下这个工具。 最后用一张云原生的全栈架构图作为本文的结束: |
|
|
上一篇文章 下一篇文章 查看所有文章 |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 | -2024/11/16 5:35:05- |
|
网站联系: qq:121756557 email:121756557@qq.com IT数码 |