k8s学习 - 概念 - master/node
k8s学习 - 概念 - master/node
在k8s中,有各种各样的概念和术语。这些概念是必须要学习和掌握的。我们先罗列下所有概念,然后再一个个看具体实例。
大概说一下这些概念:
- Master: k8s的主控组件,对应的对象是node。
- Node: 是k8s集群的机器节点,相当于master-node。一个node就对应一个具体的物理机或者虚拟机。
- Container: 是一个镜像容器,一个container是一个镜像实例
- Pod: 是k8s集群的最小单元,一个pod可以包含一个或者多个container
- Service: 多个相同的pod组成一个服务,统一对外提供服务。
- Volume: 存储卷,pod对外暴露的共享目录,它可以挂载在宿主机上,这样就能让同node上多个pod共享一个目录。
- Replication Controller: 用于控制pod集群的控制器,可以制定各种规则来让它控制一个service中的多个pod的创建和消亡, 很多地方简称为rc。
- Namespace: 命名空间,用于将一个k8s集群隔离成不同的空间,pod, service, rc, volume 都可以在创建的时候指定其namespace。
- StatefulSet: 有状态集群,比如一个主从的mysql集群就是有状态集群,需要先启动主再启动从,这就是一种有状态的集群。
- Persistent Volume: 持久存储卷。之前说的volume是挂载在一个pod上的,多个pod(非同node)要共享一个网络存储,就需要使用持久存储卷,简称为pv。
- Persistent Volume Claim: 持久存储卷声明。他是为了声明pv而存在的,一个持久存储,先申请空间,再申明,才能给pod挂载volume,简称为pvc。
- Label: 标签。我们可以给大部分对象概念打上标签,然后可以通过selector进行集群内标签选择对象概念,并进行后续操作。
- Secret: 私密凭证。密码保存在pod中其实是不利于分发的。k8s支持我们创建secret对象,并将这个对象打到pod的volume中,pod中的服务就以文件访问的形式获取密钥。
- EndPoint: 用于记录 service 和 pod 访问地址的对应关系。只有 service 配置了 selector, endpoint controller 才会自动创建endpoint对象。
如果不理解没啥关系,看一遍有印象下,下面我们一个个琢磨琢磨。
master
k8s的master节点上有三个进程,它们都是以docker的形式存在的。我们在k8s的master节点看docker ps 就可以看到这几个进程:
8824aad1ee95 e851a7aeb6e8 "kube-apiserver --ad…" 3 days ago Up 3 days k8s_kube-apiserver_kube-apiserver-docker-for-desktop_kube-system_f23c0965aad6df9f61b1c9c4bb953cf5_0
a9ce81ec9454 978cfa2028bf "kube-controller-man…" 3 days ago Up 3 days k8s_kube-controller-manager_kube-controller-manager-docker-for-desktop_kube-system_1dc44822f21a9cbd68cc62b1a4684801_0
85da3f6e700f d2c751d562c6 "kube-scheduler --ad…" 3 days ago Up 3 days k8s_kube-scheduler_kube-scheduler-docker-for-desktop_kube-system_b6155a27330304c86badfef38a6b483b_0
其中的 apiserver 是提供 k8s 的 rest api 服务的进程。当然它也包括了 restapi 的权限认证机制。 k8s 的 apiserver 提供了三种权限认证机制:
- https
- http + token
- http + base(username + password)
我们也可以通过使用kubectl proxy 在 master 上来创建一个代理,从而外部可以访问这个 k8s 集群。
kube-controller-manager 是用来管理所有的 controller 的。之前我们说的 Replication Controller 就是一种管控 Pod 副本的Controller, 其他相关的 Controller 还有:
- Replication Controller
- Node Controller: 实时获取Node的相关信息,实现管理和监控集群中的各个Node节点的相关控制功能
- ResourceQuota Controller: 确保指定的资源对象在任何时候都不会超量占用系统物理资源
- NameSpace Controller: 定时通过API Server读取这些Namespace信息
- ServiceAccount Controller: 监听Service变化,如果是一个LoadBalancer类型的Service,则确保外部的云平台上对该Service对应的LoadBalancer实例被相应地创建、删除及更新路由转发表
- Token Controller
- Service Controller
- EndPoint Controller : Service 和选择 Pod 的对应关系。
kube-scheduler 负责 Pod 调度,接收 Controller Manager 创建的新的Pod,为其选择一个合适的Node,并且在Node上创建Pod。
一个k8s集群只有一个master节点,所以 master 节点的高可用性是一个问题,一旦 master 节点挂了,整个集群也就挂了。这点真有点神奇。所以网上关于搭建高可用的k8s Master 节点的方案有很多:
https://jishu.io/kubernetes/kubernetes-master-ha/
https://blog.51cto.com/ylw6006/2164981
https://jimmysong.io/kubernetes-handbook/practice/master-ha.html
Node
Node 是 k8s 的工作节点,Node 一般是一个虚拟机或者物理机,每个 node 上都运行三个服务:
- docker
- kubelet
- kube-proxy
docker 就是 docker server,它提供
kubelet 是一个管理系统,它管理本个node上的容器的生命周期。它主要功能就是定时从某个地方获取节点上pod/container的期望状态,并调用对应的容器平台接口,来达成这个状态。它可以设置 http 监控,命令行监控等方式。
kube-proxy 是管理 service 的访问入口,包括集群内 pod 到 service 的访问,以及集群外访问service。
可用性
其实k8s自身的可用性是比较弱的,如果master挂了,那么master上的三个服务也就挂了。node挂了,如果node上的pod是被 controller控制住的话,controller会在其他node上启动对应的pod。
k8s学习 - 概念 - master/node的更多相关文章
- k8s学习 - 概念 - Pod
k8s学习 - 概念 - Pod 这篇继续看概念,主要是 Pod 这个概念,这个概念非常重要,是 k8s 集群的最小单位. 怎么才算是理解好 pod 了呢,基本上把 pod 的所有 describe ...
- k8s学习 - 概念 - ReplicationController
k8s学习 - 概念 - ReplicationController 我们有了 pod,那么就需要对 pod 进行控制,就是同一个服务的 podv我需要启动几个?如果需要扩容了,怎么办?这里就有个控制 ...
- k8s学习 - 概念 - ReplicaSet
k8s学习 - 概念 - ReplicaSet 首先,ReplicaSet 和 ReplicationController 基本上一样,除了上篇说到的selector有不同之外,没有啥区别.(官网也是 ...
- k8s学习 - 概念 - Deployment
k8s学习 - 概念 - Deployment 有了 ReplicaSet 还需要有 Deployment 的原因是希望有一个控制器能管理部署更新时候的版本控制问题.一个 Deployment 可以管 ...
- ASP.NET Core on K8S学习初探(2)K8S基本概念快速一览
在上一篇<单节点环境搭建>中,通过Docker for Windows在Windows开发机中搭建了一个单节点的K8S环境,接下来就是动人心弦的部署ASP.NET Core API到K8S ...
- 【K8s学习笔记】K8s是如何部署应用的?
本文内容 本文致力于介绍K8s一些基础概念与串联部署应用的主体流程,使用Minikube实操 基础架构概念回顾 温故而知新,上一节[K8S学习笔记]初识K8S 及架构组件 我们学习了K8s的发展历史. ...
- k8s重要概念及部署k8s集群(一)--技术流ken
重要概念 1. cluster cluster是 计算.存储和网络资源的集合,k8s利用这些资源运行各种基于容器的应用. 2.master master是cluster的大脑,他的主要职责是调度,即决 ...
- k8s 基础概念和术语
Master k8s里的master指的是集群控制节点,每个k8s集群里需要有一个Master节点来负责整个集群的管理和控制,基本k8s所有控制命令都发给它,它负责整个具体的执行过程,后面执行操作基本 ...
- ASP.NET Core on K8S学习初探(1)K8S单节点环境搭建
当近期的一个App上线后,发现目前的docker实例(应用服务BFF+中台服务+工具服务)已经很多了,而我司目前没有专业的运维人员,发现运维的成本逐渐开始上来,所以容器编排也就需要提上议程.因此我决定 ...
随机推荐
- js 看图识国家
<!DOCTYPE html><html lang="en" xmlns="http://www.w3.org/1999/xhtml"> ...
- js 注册事件
<!DOCTYPE html><html lang="en" xmlns="http://www.w3.org/1999/xhtml"> ...
- inno setup 打包说明
[Setup] 这个段包含用于安装程序和卸载程序的全局设置 AppId:在注册表中唯一的项名称,安装完64位系统在 HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\M ...
- C#/WPF 计算字串的真实长度,调整控件的宽度
下面函数是经常用到的计算字串长度的方法: private double MeasureTextWidth(String str, string fontName, double fon ...
- 图像滤镜艺术---Wave滤镜
原文:图像滤镜艺术---Wave滤镜 Wave Filter水波滤镜 水波滤镜是通过坐标变换来模拟水波效果,使图像呈现出水波的特效.这个滤镜有一个可调参数:水波的扭曲程度. 代码如下; // ...
- Win8 Metro(C#)数字图像处理--2.74图像凸包计算
原文:Win8 Metro(C#)数字图像处理--2.74图像凸包计算 /// <summary> /// Convex Hull compute. /// </summary> ...
- 利用shell脚本实现计划任务功能 V1.2
2013.05.10 mytask 1.2 主程序休眠时间分成若干小的时间片断分段休眠,避免长时间的休眠不能及时响应系统信号. 2013.05.07 mytask 1.1 昨天发布了mytask1. ...
- 卸载win10内置windows app的方法
原文:卸载win10内置windows app的方法 2015年,微软推出了windows10操作系统,其以漂亮的界面.良好的操作方式.方便的推送升级迅速获得了好多人的好评,因此,好多同学都换了win ...
- c# 关于TreeView的一点性能问题
我们要知道,treeview在新增或删除treeNode的时候会进行重绘,这也就是为什么大量数据的时候,treeview很卡.很慢的原因, 那么我们这样 treeview1.BeginUpdate() ...
- Python连载12-shutil模块
一.shutil模块 1.函数:copy() (1)用法:复制文件0 (2)格式:copy(来源路径,目标路径) (3)返回值:返回目标路径 (4)注意:拷贝的同时可以给文件重命名 source_pa ...