📕
innohub
  • KEEP LEARNING
  • WebInfo
    • JS 部分运算符操作
    • javascript 中的object array
    • 错误处理以及异常捕获
    • JavaScript Bases
    • LaoZi & Confucius
  • PyInfo
    • Python3 输入与输出
    • Python3OS
    • python 修饰器的使用
    • python3 与mysql数据库连接使用实例
    • Format-specifier
    • CGI初学踩坑
    • Django 项目测试
    • Assert-info
    • 使用ngnix和uWSGI配置Django
    • write|SVN​
    • Matplotlib 基本使用
    • 重读 Python 官方文档
    • Python3 Base
    • python3 多线程
    • Python3 函数解析
    • python3 str 对象的基本操作
    • protocl buffers
    • Iterator-Generator
    • Django base
    • Decorator 2
    • Export to wheel or egg-info
    • 三. 运算、数据及逻辑
  • GoInfo
    • Info
      • Select 语句使用
      • First class function
      • Work Pools
      • StructTag
      • Go struct
      • 常用函数
      • Strings操作
      • Golang Bases
      • 数组以及切片
      • 文件操作
      • Golang 中的指针类型
      • Golang Map 类型
      • Reflection
      • 函数闭包
      • 接口
      • Panic and Recover
      • Go中的错误处理
      • 并发
      • defer usage
      • Method in golang
      • Object-oriented Programming
      • Goalng 包管理机制
  • RustInfo
    • Info
      • 包、crate、模块
      • Rust 中的错误处理
      • 智能指针
      • 泛型 generics
      • 数据布局与内存对齐
      • Functions and methods
      • 无畏并发
      • Actix-web 基本使用
      • Got from guessing game
      • 结构体的使用
      • Rust 中的函数式语言功能
      • 集合类型
      • 枚举以及模式匹配
      • Slice 类型
      • 生命周期
      • 测试
      • Rust 中的所有权
      • trait
      • 不安全 Rust
      • Format_print
      • Rust 通用编程概念
      • Macro
  • OS
    • info
      • 内存屏障 -- Part 1
      • 内存屏障 -- Part 2
      • CPU 上下文切换
      • 文件读写与零拷贝
      • ELF 文件
  • MySql
    • info
      • MySql 架构与历史
      • 02-key
  • kubernetes
    • 第二章 k8s 基本概念
    • 第一章 Kubernetes -- 伟大舵手
  • Redis
    • info
      • Redis 总览
      • 02-underline-ds
  • Shell&CInfo
    • GCC 与make的使用
    • C++ 中 malloc 与 new
    • 位运算符操作
    • Base of C macro
    • C 语言中 extern 关键字的用法
  • Distributed
    • info
      • 分布式理论概述
  • Java
    • info
      • Java 内存模型
  • Prometheus
    • Prometheus -- 不灭之火
Powered by GitBook
On this page
  • 1. What is Kubernetes?
  • 2. 为什么使用容器?
  • 容器优点:
  • 3. 核心组件

Was this helpful?

  1. kubernetes

第一章 Kubernetes -- 伟大舵手

Previous第二章 k8s 基本概念NextRedis

Last updated 5 years ago

Was this helpful?

welcome

Kubernetes 源于希腊语,意为“舵手”或者“飞行员”,而且英文是“governor”,“cybernetic”的词根。通常被简写为k8s,“k8s”中文发音与Kubernetes发音类似。所以说一个好的项目的确是需要一个好名字,这方面的典范当属GNU(GNU is Not Unix)了,Kubernetes 也是不错的!

1. What is Kubernetes?

Kubernetes 是一个跨主机集群的 开源的容器调度平台,它可以自动化应用容器的部署、扩展和操作 , 提供以容器为中心的基础架构。它是基于Google Borg系统的开源的容器集群管理系统。k8s是一个平台,而不是一个传统的PaaS (平台即服务),最大程度的保留了用选择的自由,同时提供了大量的功能,总会有新的场景受益于新的特性,k8s打造的是一个生态系统,集成了大量的组件以及工具,可以用于:部署、扩展、负载均衡、日志、监控等。

同时,k8s又不仅仅是一个容器编排系统。"编排"技术定义的是工作流的执行: 从 A 到 B,然后到 C。相反,Kubernetes 是包括一套独立、可组合的控制过程,通过声明式语法使其连续地朝着期望状态驱动当前状态。 不需要告诉它具体从 A 到 C 的过程,只要告诉到 C 的状态即可。 也不需要集中控制;该方法更类似于"编舞"。这使得系统更容易使用并且更强大、更可靠、更具弹性和可扩展性。

k8s提供了基础设施来构建一个真正以容器为中心的开发环境,可以满足常见的需求:

  • Pod 提供复合应用并保留一个应用一个容器的容器模型,

  • 挂载外部存储,

  • Secret管理,

  • 应用健康检查,

  • 副本应用实例,

  • 横向自动扩缩容,

  • 服务发现,

  • 负载均衡,

  • 滚动更新,

  • 资源监测,

  • 日志采集和存储,

  • 支持自检和调试,

  • 认证和鉴权.

这提供了平台即服务 (PAAS) 的简单性以及基础架构即服务 (IAAS) 的灵活性,并促进跨基础设施供应商的可移植性

2. 为什么使用容器?

基于操作系统级虚拟化而不是硬件级虚拟化方法来部署容器。容器之间彼此隔离并与主机隔离:它们具有自己的文件系统,不能看到彼此的进程,并且它们所使用的计算资源是可以被限制的。它们比虚拟机更容易构建,并且因为它们与底层基础架构和主机文件系统隔离,所以它们可以跨云和操作系统快速分发。

容器优点:

  • 敏捷的应用程序创建和部署: 与虚拟机镜像相比,容器镜像更容易创建,提升了硬件的使用效率。

  • CI/CD 和部署: 提供可靠与频繁的容器镜像构建和部署,可以很方便及快速的回滚 (由于镜像不可变性).

  • 开发与运维分离: 在构建/发布时创建应用程序容器镜像,从而将应用程序与基础架构分离。

  • 开发、测试和生产环境的一致性: 在笔记本电脑上运行与云中一样。

  • 云和操作系统的可移植性: 可运行在 Ubuntu, RHEL, CoreOS, 内部部署, Google 容器引擎和其他任何地方。

  • 以应用为中心的管理: 提升了操作系统的抽象级别,以便在使用逻辑资源的操作系统上运行应用程序。

  • 松耦合、分布式、弹性伸缩 微服务: 应用程序被分成更小,更独立的部分,可以动态部署和管理 - 而不是巨型单体应用运行在专用的大型机上。

  • 资源隔离: 通过对应用进行资源隔离,可以很容易的预测应用程序性能。

  • 资源利用: 高效率和高密度

3. 核心组件

  • kube-apiserver: 对外暴露k8s api,作为k8s的前端控制层,提供了资源操作的唯一入口,并提供认证、授权、访问控制、API注册、服务发现等功能;同时被设计为水平扩展,可以部署多个实例进行缩放,构建高可用集群

  • etcd:用于k8s的后端存储,保存整个集群的状态

  • kube-controller-manager:运行控制器,处理集群中的常规任务:故障检测、自动扩展、滚动更新;包括:

    • 节点控制器

    • 副本控制器

    • 端点控制器

    • 服务账号以及令牌控制器

  • kube-scheduler:负责pod的调度,监测没有分配node 的新创建的pod,按照一定的策略分配node

  • kubelet: 负责维护容器的生命周期,同时负责Volume(CVI)以及网络(CNI)的管理

  • CRI: 容器运行时环境,负责镜像管理以及容器真正的运行

  • kube-proxy: 负责为service提供集群内部的服务发现以及负载均衡,维护主机上的网络规则并执行连接转发,实现服务的抽象

  • DNS: 一个DNS服务器,将k8s启动的容器自动包含

Reference:

k8s

向对于传统的服务部署方式,容器化已经成为一大趋势。容器以其隔离、轻量、松耦合、分布式等众多优点在现代应用开发部署中日渐崭露头角。

arch

具体为什么使用容器可见
https://kubernetes.io/docs/concepts/overview/what-is-kubernetes/
https://kubernetes.io/docs/concepts/overview/components/