Kubernetes 容器平台实战

一、什么是Kubernetes?

Kubernetes是容器集群管理系统,是一个开源的平台,可以实现容器集群的自动化部署,自动扩缩容,维护等功能.

通过Kubernetes可以做到:

  • 快速部署应用
  • 快速扩展应用
  • 无缝对接新的应用功能
  • 节省资源,优化硬件资源的使用

我们的目标是促进完善组件和工具的生态系统,以减轻应用程序在公有云和私有云中运行的负担.

1.1 Kubernetes 特点

  • 可移植:支持公有云,私有云,混合云,多重云(multi-cloud)
  • 可扩展:模块化,插件化,可挂载,可组合
  • 自动化:自动部署,自动重启,自动复制,自动伸缩/扩展

1.2 why containers?

为什么要使用容器? 通过以下两个图对比:

Kubernetes 容器平台实战

传统的应用部署方式是通过插件或脚本来安装应用.这样做的缺点是应用的运行,配置,管理,所有生存周期将与当前操作系统绑定,这样做并不利于应用升级更新/回滚等操作,当然也可以通过创建虚拟机的方式来实现某些功能,但是虚拟机非常重,并不利于可移植性.

新的方式是通过部署容器方式实现,每个容器之间互相隔离,每个容器有自己的文件系统,容器之间进程不会互相影响,能区分计算资源.相对于虚拟机,容器快速部署,由于容器与底层设施,机器文件系统解耦的,所以它能在不同云,不同版本操作系统进行迁移.

容器占用资源少,部署快,每个应用可以被打包一个容器镜像,每个应用与容器成一对一关系也使容器有更大优势,使用容器可以在build或release的阶段,为应用创建容器镜像,因为每个应用不需要与其余的应用堆栈组合,也不依赖于生产环境基础结构,这使得从研发到测试,生产能提供一致环境.类似地,容器比虚机轻量,更”透明”,这更便于监控和管理.最后.

容器优势总结:

  • 快速创建/部署应用: 与VM虚拟机相比,容器镜像的创建更加容易
  • 持续开发,集成和部署: 提供可靠频繁的容器镜像构建/部署,并使用快速和简单的回滚(由于镜像不可变性)
  • 开发和运行相分离: 在build或者release阶段创建容器镜像,使得应用和基础设施解耦
  • 开发,测试和生产环境一致性: 在本地或外网(生产环境)运行一致性
  • 云平台或其它操作系统: 可以在Ubuntu,RHEL,CoreOS,no-prem,Google Container Engine或其它任何环境中运行
  • Loosely coupled.分布式,弹性,微服务化: 应用程序分为更小的,独立的条件,可以动态部署和管理.

  • 资源隔离

  • 资源利用: 更高效

1.3 使用Kubernetes能做什么?

可以在物理或虚拟机和Kubernetes集群上运行容器化应用,Kubernetes能提供一个以”容器为中心的基础架构”,满足在生产环境中运行应用的一些常见需求,如:

  • 多个进程(作为容器运行)协同工作.(Pod)
  • 存储系统挂载
  • Distributing secrets
  • 应用健康检测
  • 应用实例的复制
  • Pod自动伸缩/扩展
  • Naming and discovering
  • 负载均衡
  • 滚动更新
  • 资源监控
  • 日志访问
  • 调试应用程序
  • 提供认证和授权

1.4 Kubernetes不是什么?

Kubernetes并不是传统的Pass(平台即服务)系统。

  • Kubernetes不限制支持应用的类型,不限制应用框架。限制受支持的语言runtimes (例如, Java, Python, Ruby),满足12-factor applications 。不区分 “apps” 或者”services”。 Kubernetes支持不同负载应用,包括有状态、无状态、数据处理类型的应用。只要这个应用可以在容器里运行,那么就能很好的运行在Kubernetes上。
  • Kubernetes不提供中间件(如message buses)、数据处理框架(如Spark)、数据库(如Mysql)或者集群存储系统(如Ceph)作为内置服务。但这些应用都可以运行在Kubernetes上面。
  • Kubernetes不部署源码不编译应用。持续集成的 (CI)工作流方面,不同的用户有不同的需求和偏好的区域,因此,我们提供分层的 CI工作流,但并不定义它应该如何工作。
  • Kubernetes允许用户选择自己的日志、监控和报警系统。
  • Kubernetes不提供或授权一个全面的应用程序配置 语言/系统(例如,jsonnet)。
  • Kubernetes不提供任何机器配置、维护、管理或者自修复系统。 另一方面,大量的Paas系统都可以运行在Kubernetes上,比如Openshift、Deis、Gondor。可以构建自己的Paas平台,与自己选择的CI系统集成。
    由于Kubernetes运行在应用级别而不是硬件级,因此提供了普通的Paas平台提供的一些通用功能,比如部署,扩展,负载均衡,日志,监控等。这些默认功能是可选的。
    另外,Kubernetes不仅仅是一个”编排系统”;它消除了编排的需要。”编排”的定义是指执行一个预定的工作流:先执行A,之B,然C。相反,Kubernetes由一组独立的可组合控制进程组成。怎么样从A到C并不重要,达到目的就好。当然集中控制也是必不可少,方法更像排舞的过程。这使得系统更加易用、强大、弹性和可扩展。

Original: https://www.cnblogs.com/baishuchao/p/9843122.html
Author: baishuchao
Title: Kubernetes 容器平台实战

原创文章受到原创版权保护。转载请注明出处:https://www.johngo689.com/611668/

转载文章受原作者版权保护。转载请注明原作者出处!

(0)

大家都在看

  • phpcms v9编辑器上传图片是否添加水印

    第一步:给图片上传对话框里面添加是否添加水印的多选框,找到: satics/js/ckeditor/ckeditor.js 第17554行 (需要格式化,我用的NetBeans)修…

    Linux 2023年6月13日
    0100
  • Linux之Nginx模块扩展

    404. 抱歉,您访问的资源不存在。 可能是URL不正确,或者对应的内容已经被删除,或者处于隐私状态。 [En] It may be that the URL is incorre…

    Linux 2023年5月27日
    079
  • 使用input+datalist简单实现实时匹配的可编辑下拉列表-并解决选定后浏览器默认只显示value的可读性问题

    问题背景 最近小伙伴提了一个希望提高后台下拉列表可操作性的需求,原因是下拉列表选项过多,每次下拉选择比较费时费力且容易出错,硬着头皮啃了啃前端知识,网上搜寻了一些下拉列表实现的资料…

    Linux 2023年6月6日
    096
  • 一个轻量级的C++ log日志库

    一、简介 为了自己使用写的一个简单日志库,使用仅需包含一个头文件,支持Windows和Linux平台,支持多线程控制台输出以及写日志文件。 二、调用方式 #include &quo…

    Linux 2023年6月7日
    092
  • ajax的发展

    ajax(Asynchronous Javascript and XML)异步javascrip和XMl. ajax只是一种web交互方法。在客户端(浏览器)和服务区段之间传输少量…

    Linux 2023年6月13日
    089
  • 常见框架漏洞

    ThinkPHP 框架漏洞 thinkphp是一个国内轻量级的开发框架,采用php+apache,在更新迭代中,thinkphp也经常爆出各种漏洞,thinkphp一般有think…

    Linux 2023年6月14日
    097
  • Docker Compose 安装

    方法一:这种方式相对简单,但是由于网络问题,常常安装不上,并且经常会断开,可以尝试使用网络上提供的国内安装的方法将@version 替换为要安装的版本号 sudo curl -L …

    Linux 2023年6月13日
    0102
  • Shell:Shell基础

    Shell基础 一、shell定义 shell是一个用 C 语言编写的程序,它是用户使用 Linux 的桥梁。Shell 既是一种命令语言,又是一种程序设计语言。 Shell 是指…

    Linux 2023年5月28日
    0109
  • 计算机网络学习任务

    自学分析题 请分析,一个5KHz的无噪声信道能够达到的最大数据传输率是多少? 为什么? 假设你使用的宽带是100Mbps,你要把一个0.5GB的文件发送出去, 理论上要花多长时间?…

    Linux 2023年6月6日
    0141
  • MySQL环境变量配置方法

    MySQL配置方法 下载免安装版本的MySQL数据库,大家根据自己的开发环境下载对应版本的数据库,我在此举例的是Windows系统下的配置方法,下载地址如下: https://de…

    Linux 2023年6月7日
    0107
  • Redis 缓存穿透、雪崩、击穿以及相关解决方案

    缓存流程: 缓存穿透: 什么是缓存穿透:是指 redis 和数据库都没有这个数据,大量请求该数据造成数据库挂掉,该请求一般是非正常用户 解决方案: 布隆过滤器:将数据库中所有的查询…

    Linux 2023年5月28日
    085
  • 二进制插入

    二进制插入__牛客网 (nowcoder.com) 题意为 让m插入到n的第j位到第i位 方法1: class BinInsert { public: int binInsert(…

    Linux 2023年6月13日
    0104
  • MIT6.828——Lab1 partB(麻省理工操作系统课程实验)

    Lab1 历时2天,完成了LAB1,完整代码仓库可点击:https://github.com/Elio-yang/MIT6.828 partA 练习 *exercise3 gdb指…

    Linux 2023年5月27日
    0133
  • docker 安装redis

    1、获取 redis 镜像 2、查看本地镜像 bind 127.0.0.1 #注释掉这部分,这是限制redis只能本地访问 protected-mode no #默认yes,开启保…

    Linux 2023年5月28日
    095
  • algorithm 头文件参考

    定义执行算法的 C++ 标准库容器模板函数。 该 <algorithm></algorithm> 库还使用该 #include <initialize…

    Linux 2023年6月7日
    0119
  • 树莓派4B串口测试与开发

    树莓派4B的串口,由两个增加4个,一共6个! 情况一: 缺省镜像中的配置,测试发现只启用了2个:pi@raspi4b:~ $ ls -l /dev/serial*lrwxrwxrw…

    Linux 2023年6月7日
    092
亲爱的 Coder【最近整理,可免费获取】👉 最新必读书单  | 👏 面试题下载  | 🌎 免费的AI知识星球