基本概念与术语

集群的2种管理角色:master和node

master

集群的控制节点,负责整个集群的管理与控制,运行着关键进程:

1,k8s api server: 提供了HTTP Rest 接口的关键服务进程,是所有资源的增删改查的入口,是集群控制的入口进程。

2,k8s controller manager k8s所有资源对象的自动化控制中心

3,k8s scheduler 负责资源调度(pod调度)的进程,

还需要启动一个etcd服务,负责所有资源对象的保存

node

k8s集群中工作负载节点,宕机后其上的工作负载会转移至其他节点。运形的进程:

1,kubectl 负责pod对应容器的创建起停,与master 节点协作,

2,kubectl-proxy 实现k8s service 的通信与负载均衡

3,docker 引擎。本机容器的创建管理

node 可以动态的加入集群,默认情况下kubectl 会向master 注册自己。

kubectl会定时向master 节点汇报自身情况,,master 获取每个节点的资源情况。node 无法上报信息,master判定为失联,node 的状态被标记为不可用,not ready ,随后master 触发工作负载大转移。

命令

kubectl  get  nodes
k describe node xxxx #节点信息查看

pod

每个pod 有一个特殊的容器,根容器pause容器,pause 容器对应的镜像属于屁平台的一部分。

构建pod 原因:

以pause 容器作为pod的根容器,以他的状态作为整个容器组的状态

pod里的多个业务容器共享pause 容器的ip ,共享pause容器挂载的volume

每个pod 独占一个ip , podIp 一个po里的多个容器共享podip, k8s 内底层网络支持集群内任意2个pod 之间的tcp/ip 直接通信, 这采用虚拟二层网络技术实现, flannel openvswitch .

普通pod 和 静态pod static pod (不存放于etcd,,而在具体的某个node 上的一个具体文件中,并只在此node 启动,)

普通node一旦被创建,会被放入etcd 中,随后被ks master调度到某个具体的node上进行绑定,随后pod 被node上的kubectl 进程实例化成一组容器启动。

当pod 中的某个容器停止后,k8s 自动检测到并重新启动,这个pod (重启pod 里的所有容器),如果node 宕机,则会将这个node 上的所有pod调度到其他节点上去

event 事件的记录

资源限额

1个计算资源进行配额限定需要设定以下两个参数:

Requests :该资源的最小申请量,系统必须满足要求

Limits :该资源最大允许使用的量,不能被突破,当容器试图使用超过这个量的资源时,可能会被 Kubernetes Kill 并重启

通常把 Request设置为一个比较小的数值,符合容器平时的工作负载情况下的资源需求,把Limit设置为峰值负载情况下资源占用的最大量。

标签

Label 可以附加到各种资源对象上,一个资源对象可以定义任意数量的Label,同一个Label也可以被添加到任意数量的资源对象上去,

Label 通常在资源对象定义时确定,也可以在对象创建后动态添加或者删除。

常用标签:

版本标签:"release ”:” stable ”,”release ”:”can ”...

环境标签:

架构标签:

分区标签:

质量管理标签:

两种 Label Selector 的表达式:

基于等式的( Equality-based ):采用“等式类”的表达式匹配标签

name = redis-slave :匹配所有具有标签 name edis-slave 的资源对象

env != production :匹配所有不具有标签 env=production 的资源对象

基于集合的(Set-based )

name in (redis-master,redis-slave ):匹配所有具有标签 name=redis-master 或者 name=redis-slave 的资源对象

name not in ( php-frontend ):匹配所有不具有标签 name=php-frontend 的资源对象。

多个selector表达式的组合实现复杂条件选择

多个表达式之间用“,”进行分隔即可,几个条件之间是“AND ”的关系:

name=redis-slave,env!=production

name notin (php-fr ntend),env!=production

新出现的管理对象如 Deplo nent ReplicaSet Daemon Set Job 可以在 Se lector 中使用基于集合的筛选条件定义

selector:

matchLabels :

app: myweb

matchExpressions:

- {key: tier, operator:In , values: [frontend)}

- {key: environment , operator : NotIn , values: [dev)}

matchlabels 和matchExpressions 为and 关系

label selector 使用场景:

kube-controller 进程通过资源对象RC上定义的 Label Selector 来筛选要监控的 Pod 副本的数量,从而实现 Pod 副本的数量始终符合预期设定的全自动控制流程

kube-proxy 进程通过Service的Label Selector来选择对应的Pod,自动建立起每个Service 到对应 Pod 的请求转发路由表,从而实现 Service 的智能负载均衡机制

通过对某些 Node 定义特定的 Label ,并且在 Pod 定义文件中使用 NodeSelector 这种标签调度策略, kube heduler 进程可以实现 Pod “定向调度”的特性

RC

Replication Controller

它其实是定义了一个期望的场景,即声明某种 Pod 的副本数量在任意时刻都符合某个预期值,定义如下内容:

Pod 待的副本数( replicas )

用于筛选目标 Pod 的Label Selector

当Pod 的副本数量小于预期数量时,用于创建新的Pod 的Pod 模板(template)

Master 节点上的 Controller Manager 定期巡检系统中存活的pod 数量,并确保目标pod 实例的数量刚好等于rc 的期望值。

动态调整

k scale rc redis-slave --replicas=3

注意:删除RC 并不会影响通过该RC 已经创建好的pod,为了删除所有pod,可设置replicas的值为0 ,然后更新该RC

k8s 提供了stop 和delete 一次性删除RC 和RC控制的全部pod

k8s权威指南-从xx到oo的实践全接触的更多相关文章

  1. 《k8s权威指南》读书笔记

    抽空读完了<k8s权威指南>一书,对k8s的总算有了较为系统的认知. 好记忆不如多写字,以下是读书笔记 第一章 k8s入门 k8s是什么: 一个开源的容器集群管理平台,可提供容器集群的自动 ...

  2. 【01】《html5权威指南》(扫描版)(全)

    [01]<html5权威指南>(扫描版)(全) []魔芋:无高清电子书.   只看第五部分,高级功能. 作者:(美)弗里曼 著,谢延晟,牛化成,刘美英 译 [美]adam freeman ...

  3. 读<jquery 权威指南>[7]-性能优化与最佳实践

    一.优化选择器执行速度 1. 优先使用ID选择器和标记选择器 使用选择器时应该首选ID选择器($("#id")),其次是标记选择器($("div")),最后再选 ...

  4. 跟小静读《jQuery权威指南》——目录

    前言 2014年开始了,年底给自己制订的学习计划,第一步先从学习<jQuery权威指南>开始. jQuery大家都很比较熟悉,但是我经常是边用的时候边对照着API,这次找本书通读一遍,记录 ...

  5. Javascript权威指南

    一.数字写法 3.14 2345.789 .333333333333333333 6.02e23 // 6.02 × 10 23 1.4738223E-32 // 1.4738223 × 10 −32 ...

  6. 《javascript权威指南》读书笔记(连载)

    这是一篇很长的博客 终于把权威指南给买回来了,之前一直犹豫,第一:书太厚,怕买了不能坚持看完.第二:觉得太贵,最少100¥.现在实习也能发点工资了,给自己定了一个志愿:把一个月的工资用于买书.这么一想 ...

  7. 《http权威指南》读书笔记9

    概述 最近对http很感兴趣,于是开始看<http权威指南>.别人都说这本书有点老了,而且内容太多.我个人觉得这本书写的太好了,非常长知识,让你知道关于http的很多概念,不仅告诉你怎么做 ...

  8. 《Kafka权威指南》读书笔记-操作系统调优篇

    <Kafka权威指南>读书笔记-操作系统调优篇 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 大部分Linux发行版默认的内核调优参数配置已经能够满足大多数应用程序的运 ...

  9. Javascript权威指南阅读笔记--第3章类型、值和变量(1)

    之前一直有个想法,好好读完JS权威指南,便于自己对于JS有个较为全面的了解.毕竟本人非计算机专业出生,虽然做着相关行业的工作,但总觉得对于基础的掌握并没有相关专业学者扎实,正好因为辞职待业等原因,还是 ...

随机推荐

  1. mysql基本用户

    创建数据库 CREATE DATABASE database_name; 删除数据库 DROP DATABASE table_name; 创建表 CREATE TABLE `tab_charpter2 ...

  2. Linux就该这么学——新手必须掌握的命令之文件编辑命令组

    cat 命令 用途 : 用于查看纯文本文件 格式 : cat [选项] [文件] 示例 : more 命令 用途 : 用于查看纯文本文件(内容较多的),可以用”Enter” 键或者”Space”键向下 ...

  3. pycharm连接mysql是出现Connection to orm02@127.0.0.1 failed. [08001] Could not create connection to database server. Attempted reconnect 3 times. Giving up.

    下面这个问题反正我是遇到了,也是难为我好几天,于是我决定发一个教程出来给大家看看!希望能帮助你们 原因: 可能是数据库的版本与本机装的驱动不匹配导致的, 解决方案一: 在 url 后面街上一句 因为笔 ...

  4. 长沙理工大学第十二届ACM大赛-重现赛 大家一起来数二叉树吧 (组合计数)

    大意: 求n结点m叶子二叉树个数. 直接暴力, $dp[i][j][k][l]$表示第$i$层共$j$节点, 共$k$叶子, 第$i$层有$l$个叶子的方案数, 然后暴力枚举第$i$层出度为1和出度为 ...

  5. 02docker核心概念

    1:docker三大核心概念 核心概念 描述 镜像 Docker镜像类似于虚拟机镜像,可以将它理解为一个只读的模板. 容器 Docker容器类似于一个轻量级的沙箱,Docker利用容器来运行和隔离应用 ...

  6. C#委托的定义 以及使用方式详解,更简单的理解委托。

    委托的声明及定义: 委托是一个类,它定义了方法的类型,使得可以将方法当作另一个方法的参数来进行传递,这种将方法动态地赋给参数的做法,可以避免在程序中大量使用If-Else(Switch)语句,同时使得 ...

  7. npm 设置淘宝镜像

    永久 npm config set registry https://registry.npm.taobao.org 直接安装 cnpm 替代 npm npm install -g cnpm --re ...

  8. 正着打星星(js)

    //让用户输入行数,使用for循环嵌套打出正着的星星来,行数等于用户输入的数字 //例如:用户输入6 // * // *** // ***** // ******* // ********* // * ...

  9. es6函数扩展(+ ...扩展运算符)

    1.参数默认值 function foo(param = 'nihao'){ console.log(param); } foo('hello kitty'); 2.参数解构赋值 function f ...

  10. winfrom---Window 消息大全

    最近正在捣腾winfrom,遇到了关于window消息这一块的东西,正好在网上看到“微wx笑”的总结. 原文地址:http://blog.csdn.net/testcs_dn/article/deta ...