Kubernetes 学习笔记

什么是Kubernetes

Kubernetes 是 Google 开源的基于容器技术的分布式架构领先方案,提供应用部署、维护、扩展机制等功能,利用 Kubernetes 能方便地管理跨机器运行容器化的应用。

单容器( contianer )所遇到的问题

  • 需要被管理
  • 网络环境复杂
  • 容器需要被调度、分发,以及配置负载均衡
  • 数据需要被保存在其他地方

  • 使用 Docker 对应用程序打包、实例化、运行
  • 以集群的方式运行、管理跨机器的容器
  • 解决 Docker 跨机器容器之间的通讯问题

核心概念

分为 master 和 node 节点,master 为集群控制节点
master 节点通常会占据一个独立的服务器(高可用部署建议使用三台服务器(如果 master 和 etcd 部在一起的话))

master上:etcd, controller, scheduler, api server

  • etcd: key-value 存储,集群状态管理,是运行在多节点上的分布式键值存储,高可用(奇数个,必须半数以上的选举,容错能力限制于节点数的一半,选举 raft)
  • controller:控制器(多个控制器组成)选举
  • scheduler:调度器,负责资源调度(pod 调度)的进程 选举。scheduler 的职责很明确,就是负责调度 pod 到合适的 Node 上。如果把 scheduler 看成一个黑匣子,那么它的输入是 pod 和由多个 Node 组成的列表,输出是 Pod 和一个 Node 的绑定,即将这个 pod 部署到这个 Node 上。Kubernetes 目前提供了调度算法,但是同样也保留了接口,用户可以根据自己的需求定义自己的调度算法。
  • api server:暴露接口,处理请求。提供了资源操作的唯一入口,并提供认证、授权、访问控制、API 注册和发现等机制。APIServer负责对外提供RESTful的 Kubernetes API 服务,它是系统管理指令的统一入口,任何对资源进行增删改查的操作都要交给 APIServer 处理后再提交给 etcd,kubectl( Kubernetes 提供的客户端工具,该工具内部就是对 Kubernetes API 的调用)是直接和 APIServer 交互的。

node上:kubelet, kubeproxy, runtime

  • kubelet:管理 pod,负责 pod 对应的容器的创建、启停等任务,同时与 master 节点密切协作,实现集群管理的基本功能
  • kubeproxy: 实现 kubernetes service 的通信与负载均衡机制的重要组件
  • runtime: runtime 指的是容器运行环境,目前 Kubernetes 支持 docker 和 rkt 两种容器。

除了核心组件,还有一些推荐的 Add-ons:

  • kube-dns:负责为整个集群提供 DNS 服务
  • Ingress Controller:为服务提供外网入口
  • Heapster:提供资源监控
  • Dashboard:提供GUI
  • Federation:提供跨可用区的集群
  • Fluentd-elasticsearch:提供集群日志采集、存储与查询

网络预置

  • 所有 pods 之间可以相互通信
  • 所有 pods 和 nodes 可以相互通信
  • 不做 NAT

设计原则

声明式编程(Declarative)

声明式与命令式的区别

Declarative 的定义是用户设定期望的状态,系统会知道它需要执行什么操作,来达到期望的状态。
而对于 Imperative,需要用户告诉系统需要做什么。比如说用户说创建一个新的 Container,系统才会创建一个新的 Container。

Level-triggered

Pod

基本概念

  • Kubernetes 中最小计算和被调度单元
  • 是多个容器的集合,pod 中的容器共享 namespacevolume
  • 一 pod 一 ip

pod 的五大状态(生命周期,pod phase)

  • Pending:系统已经接受 pod 实例的创建,但其中所包含容器的一个或者多个 image 还没有创建成功。Pending 包含调度计算与通过网络创建 image,所以此 phase 的时间可能会有点长。
  • Running:Pod 已经被调度到某个 node 上,pod 包含的所有容器已经创建完成,至少有一个容器正常运行或者处于启动与重启动过程。
  • Failed:Pod 中所有容器已终止运行,至少有一个容器非正常结束,比如退出码非零,被系统强制杀死等。
  • Succeeded:Pod 中的所有容器正常终止,并且不会再次启动。
  • Unknown:无法取得 pod 状态,一般是网络问题引起。

pod 的重启策略

  • Always:总是重启
  • Never:从不重启
  • OnFailure:失败时重启

API

API 资源结构

  • apiVersion:api 版本
  • kind:资源类型
  • metadata:元数据
  • spec:Spec 是让用户写入期望的状态,系统可以通过 Spec 读出用户的期望
  • status:Status 是系统写入观察到的状态,用户可以从中读出系统当前是什么状态

API 扩展方法

  • CRD:自定义 api
  • aggregator:让用户利用全部的 Kubernetes API 实现自己的 apiserver,封装服务层

RC, RS, Deployment

RC

推荐使用 RS + Deployment 来代替 RC
是比 pod 高一级的存在
RC 与 Pod 的关联是通过 Label 来实现的(通过 selector)
Label 是键值对,可用于筛选资源

RS

大部分与 RC 相同,除了 rolling update (RS 特有)

Deployment

比 RS 高一级的定义微服务应用的抽象层
Deployments 创建 RS

PV, PVC

PV 与 PVC 一一对应
管理员定义 PV, 用户使用 PVC

©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 216,651评论 6 501
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 92,468评论 3 392
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 162,931评论 0 353
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 58,218评论 1 292
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 67,234评论 6 388
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 51,198评论 1 299
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 40,084评论 3 418
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 38,926评论 0 274
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 45,341评论 1 311
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 37,563评论 2 333
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 39,731评论 1 348
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 35,430评论 5 343
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 41,036评论 3 326
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 31,676评论 0 22
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,829评论 1 269
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 47,743评论 2 368
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 44,629评论 2 354

推荐阅读更多精彩内容