Jason
Published on 2024-12-25 / 42 Visits
0
0

kubernetes初识之概念和基础架构

什么是kubernetes

它是一个可移植的,可扩展的开源容器管理框架。它可以管理工作负载以及服务,同时支持申明式配置和自动配置。它还拥有非常强大的生态系统以及良好的支持。

为什么叫k8s

很多人把kubernetes叫成k8s,事实上官方也是这么简称的。原因只是简单的因为k和s之间正好有8个字母(官方就是这么说的)。本文也会用k8s来代指kubernetes。

K8s能做什么

k8s简单来说就是能帮你管理容器的的一个平台。它能保证你的应用没有宕机时间-在一个容器崩溃的时候它能自动帮你启动另外一个容器。总之,它能提供包含应用扩展,故障转移,部署模式等等有关容器及服务的功能。让我们具体看一下它有那些功能。

服务发现和负载均衡

k8s可以使用dns或者容器IP来暴露容器。如果某个容器的流量过高,k8s可以自动进行负载均衡来保证服务的稳定。

储存编排

k8s允许自动挂载各种储存,如本地储存,运营商提供的公有云储存和其他。

自动部署和回滚

k8s可以根据你描述的容器的期望状态来以一个可控的倍率来把容器的现有状态变更至期望状态。例如你可以让k8s自动化的去部署新的容器,同时移除旧的容器,并且把旧的容器的配置复制到新的容器。

自动装箱

你可以提供一系列节点给k8s,并且配置每个容器的资源(例如cpu和内存),k8s会自动根据配置和节点来创建合适的容器来最大化的利用资源。

自我修复

k8s在遇到容器失效时会进行自动重启,自动替换,自动结束不响应用户自定义健康检查的容器。同时不把容器暴露给客户端,直到他们准备好提供服务。

安全和配置管理

k8s提供保存安全和配置的功能。你能用k8s储存密码,OAuth 令牌和 ssh 密钥等。你能在不重建镜像的情况下部署和升级这些安全信息或者配置,也无需在堆栈中暴露这些配置。

批量运行

作为服务的增强,k8s可以管理批量工作和ci的工作,如果需要替换失效的容器。

水平扩展

使用简单的基于ui的命令或者基于cpu使用的策略来扩展或缩减你的应用。

IPv4/IPv6双栈

分配IPv4和IPv6地址给Pods和服务。

为扩展而生

在不更改上游代码的情况下为你的k8s集群增加新功能。

K8s的不同之处

它不是一个传统的,包含所有的PAAS平台。它处于容器级而不是硬件级,它提供了一些与PAAS平台相似的功能,比如应用部署,伸缩以及负载均衡,同时允许用户集成自己的日志,监控以及警报等方案,但是它不是一个单体的应用,默认的组件是可选的也是可以被替换的。下列就是它的不同之处

  • 不限制应用类型。k8s致力于支持各种不同的工作负载,包括有状态应用,无状态应用,数据处理应用等。 如果一个应用可以在容器中运行,那么它就可以在k8s中运行。

  • 不负责构建应用。CI/CD工具链由公司文化以及技术栈决定,没有强制要求。

  • 不提供应用级的服务。k8s不内置各种中间件(比如消息队列),数据处理框架(比如spark),数据库(比如MySQL),也不提供集群数据存储(比如ceph)。 这些组件可以以容器的形式在k8s上运行,并且可以通过可移植的机制(比如open service broker)来被各种应用访问。

  • 不指定日志,监控,警报系统。

  • 不提供特定的配置语言/系统。它提供了声明式的API来提供调用。

  • 不提供或者采用复杂的机器配置,维护,管理或者自愈系统。

  • k8s不仅仅是一个编排系统,实际上它消除了对编排的需求。编排的定义是为了C,先要做A然后B。k8s包含了独立的,可组合的控制流程持续保证任务到预期的状态。

架构

k8s集群由多个组件组成,它们可以分为两大类,控制平面和几点组件。它们分别用于交互以及业务承载。

控制平面 Control Plane

管理集群总体的状态以及交互。

kube-api-server

核心组件,用于对外暴露kubernetes http API。

etcd

高可用,高一致性的kv store,用于储存server的各种数据。

kube-scheduler

把未分配的pod分配到合适的节点上。

kube-controller-manager

实现kubernetes API行为的控制器。

cloud-controller-manager

和云服务提供商集成的。(可选)

节点组件 Node Components

kuberlet

保证pod和对应容器正常运行

kube-proxy

维护节点的网络规则来实施service(可选)

container runtime

负责运行容器的软件

附加组件 Add Ons

DNS

集群级别的域名解析

web UI(dashboard)

使用网页管理集群

Container resource monitoring

收集和储存容器的指标

cluster-level logging

集中的log store来保存容器日志


Comment