centos7下kubernetes(2。kubernetes---start,重要概念)

时间:2021-08-29 00:42:21

Cluster

cluster是计算,存储和网络资源的集合,kubernetes是利用这些资源运行各种基于容器的应用

Master

Master是cluster的大脑,他的主要职责是调度,即决定应用在哪里运行。master运行linux操作系统,可以是物理机或者虚拟机。为了实现高可用,可以运行多个master。

Node

Node的职责是运行容器应用。Node有master管理,Node负责监控并汇报容器的状态,并根据master的要求管理容器的生命周期。Node运行在linux操作系统,可以是物理机或者虚拟机。

上一节交互式的教程中我们创建的clusyer只有一个主机host01.它既是master也是node

Pod

pod是kubernetes的最小工作单元。每个pod包含一个或者多个容器。pod中的容器会作为一个整体被master调度到一个node上运行

kubernetes引入pod主要基于下面两个方面

1.可管理性

有些容器本来就是需要紧密联系,一起工作。pod提供了比容器更高层次的抽象,将他们封装到一个部署单元中。kubernetes以pod为最小单位进行调度,扩展,共享资源,管理生命周期

2.通信和资源共享

pod中的所有容器使用同一个网络namespace,即相同的IP地址和port空间。他们之间通过localhost通信。同样的,这些容器可以共享存储,当kubernet挂载volume到pod,本质上是将volume挂载到pod中的每一个容器

pods两种使用方法:

1.运行单一容器。

one-container-per-pod是kubernetes最常见的模型,这种情况下,只是将单个容器简单封装成pod。即使只有一个容器,kubernetes管理的也是pod,而不是直接管理容器

2.运行多个容器

哪些容器应该放到一个pod中?

答案是:这些容器联系必须非常紧密,而且需要直接共享资源

举个例子:

下面这个pod包含两个容器:file puller和web server

file puller会定期从外部的content manager中拉取最新的文件,将其存放在共享的volume中。web serverv从volume读取文件,响应consumer的请求。

这两个容器是紧密协作得,他们一起为consumer提供最新得数据;同时他们也通过volume共享数据。所以放到一个pod是合适得

再看一个反例:是否需要将tomcat和mysql放到一个pod中?

tomcat从mysql中读取数据,他们之间需要协作,但还不至于需要放到一个pod中一起部署,一起启动,一起停止。他们之间是通过JDBC交换数据,并不是直接共享存储,所以放到各自得pod中更合适。

Controller

kubernetes通常不会直接创建pod,而是通过contorller来管理pod。controller中定义了pod得部署特性,比如有几个副本,在什么样得node上运行等。为了满足不同得业务场景,kubernetes提供了多种controller,包括deployment,replicaset,daemonset,statefuleset,job等。

Deployment

是最常用的controller,比如前面的教程中就是通过创建deployment来部署应用的。deployment可以管理POd的多个副本,并确保Pod按照期望的状态运行。

Replicaset

实现了pod多副本管理。使用dployment时会自动创建replicaset,也就是说deployment是通过replicaset来管理pod的多个副本的,我们通常不需要直接使用replicaset

daemonset

用于每个node最多只运行一个pod副本的场景。正如其名称所揭示,daemonset用于daemon

statefuleset

能够保证pod的每个副本在整个生命周期中名称是不变的。而其他controller不提供这个功能,当某个pod发生故障需要删除并重启的时候,pod的名称会发生变化。同事statuefulset会保证副本按照固定顺序启动,更新或者删除。

job

用于运行结束就删除的应用,而其他controller中的pod通常是长期运行的状态

service

定义外界访问一组特定的pod的方式。service有自己的端口和IP。service为pod提供了负载均衡

Namespace

可以将一个物理的cluster逻辑上划分成多个虚拟的cluster,每个cluster就是一个namespace。不同的namespace里的资源是完全隔离的

centos7下kubernetes(2。kubernetes---start,重要概念)

kubernetes默认创建了两个namespace

default  --创建资源时如果不指定,将被放到这个namespace中。

kube-system --kubernetes自己创建的系统资源将放到这个namespace中

centos7下kubernetes(2。kubernetes---start,重要概念)的更多相关文章

  1. Centos7下yum安装kubernetes

    一.前言    Kubernetes 是Google开源的容器集群管理系统,基于Docker构建一个容器的调度服务,提供资源调度.均衡容灾.服务注册.动态扩缩容等功能套件,目前centos yum源上 ...

  2. [Kubernetes]关于 Kubernetes ,你想要的,都在这儿了

    陆陆续续,关于 Kubernetes 写了有 20+ 篇文章了. 今天这篇文章来一个整合,从实践到理论,可以按需查看(我是按照博客发表时间来排序的,如果后续有想要更新的内容,也会及时更新到这篇文章中) ...

  3. centos7下kubernetes(3。部署kubernetes)

    环境:三个centos7 K8s2是Master;K8s1是node1:K8s3是node2 官方文档:https://kubernetes.io/docs/setup/independent/ins ...

  4. [Kubernetes]CentOS7下Etcd集群搭建

    Etcd简要介绍 Etcd是Kubernetes集群中的一个十分重要的组件,用于保存集群所有的网络配置和对象的状态信息 Etcd构建自身高可用集群主要有三种形式: ①静态发现: 预先已知 Etcd 集 ...

  5. centos7.5下kubeadm安装kubernetes集群安装

    文章是按https://blog.csdn.net/Excairun/article/details/88962769,来进行操作并记录相关结果 版本:k8s V14.0,docker-ce 18.0 ...

  6. [Kubernetes]CentOS7下搭建Harbor仓库

    环境依赖: Harbor仓库需要环境:Python 2.7或以上版本,Docker 1.10或以上,Docker Compose 1.6.0或以上. CentOS7自带Python,所以不需要安装. ...

  7. Centos7 使用 kubeadm 安装Kubernetes 1.13.3

    目录 目录 什么是Kubeadm? 什么是容器存储接口(CSI)? 什么是CoreDNS? 1.环境准备 1.1.网络配置 1.2.更改 hostname 1.3.配置 SSH 免密码登录登录 1.4 ...

  8. centos7使用kubeadm安装kubernetes集群

    参考资料:官方文档 一.虚拟机安装 配置说明: windows下使用vbox,centos17.6 min版,kubernetes的版本是1.14.1, 安装如下三台机器: 192.168.56.15 ...

  9. centos7使用kubeadm搭建kubernetes集群

    一.本地实验环境准备 服务器虚拟机准备 IP CPU 内存 hostname 192.168.222.129 >=2c >=2G master 192.168.222.130 >=2 ...

  10. 从centos7镜像到搭建kubernetes集群(kubeadm方式安装)

    在网上看了不少关于Kubernetes的视频,虽然现在还未用上,但是也是时候总结记录一下,父亲常教我的一句话:学到手的东西总有一天会有用!我也相信在将来的某一天会用到现在所学的技术.废话不多扯了... ...

随机推荐

  1. 图解jmeter压测http接口

    此次压力测试是以一个http json的后台接口为例. 1. 创建相应的部件 2. 设置相应的参数 线程组主要用于设置一共要测试的线程数量(上图1000),每秒起的线程数(上图10),几秒内启动完单循 ...

  2. 【C#】第2章学习要点

    分类:C#.VS2015 创建日期:2016-06-15 教材:(十二五*规划教材)<C#程序设计及应用教程>(第3版) 一.本章要点 C#数据类型分两大类:值类型.引用类型. 值类型 ...

  3. Oracle &OpenCurlyDoubleQuote;CONNECT BY” 使用 &lbrack;转&rsqb;

    Oracle “CONNECT BY”是层次查询子句,一般用于树状或者层次结果集的查询.其语法是: 1 [ START WITH condition ]2 CONNECT BY [ NOCYCLE ] ...

  4. BZOJ 3714&colon; &lbrack;PA2014&rsqb;Kuglarz

    Description 魔术师的桌子上有n个杯子排成一行,编号为1,2,-,n,其中某些杯子底下藏有一个小球,如果你准确地猜出是哪些杯子,你就可以获得奖品.花费c_ij元,魔术师就会告诉你杯子i,i+ ...

  5. gridview中button事件处理

    http://msdn.microsoft.com/zh-cn/library/bb907626.aspx 再结合如下: protected void GridView1_RowCommand(obj ...

  6. django&lpar;注册&srarr;登录&srarr;主页)增强版

    首先准备一张空白的数据表: urls展示: views主要的几个函数以及数据库链接代码:↓ 后端编写结束↑        ↓前端 前端界面:↓ 幸好成功了,接下来看看数据库有没有插入数据.... 这么 ...

  7. 批量修改git仓库地址脚本

    前言   公司的代码都存放在自己搭建的gitlab上面.之前由于老板升级gitlab.导致下面有个叫做"api"的groups无法访问.通过无所不能的谷歌才知道.在gitlab在某 ...

  8. 6&period; Scala面向对象编程&lpar;基础部分&rpar;

    6.1 基本介绍 6.1.1 Scala语言是面向对象的 1) Java时面向对象的编程语言,由于历史原因,Java中海存在着非面向对象的内容:基本类型,null,静态方法等 2) Scala语言来自 ...

  9. 如何用jmeter进行数据库性能测试

    由于业务需要,需要进行数据库性能测试,记录过程进行学习 测试前期准备: 1.测试点准备及需求点 a.性能测试目的 b.jmeter测试数据库基本脚本  get c.数据库性能监控工具选择 d.服务器性 ...

  10. C和C&plus;&plus; 中的const

    C++中的const正常情况下是看成编译期的常量,编译器并不为const分配空间,只是在编译的时候将期值保存在名字表中,并在适当的时候折合在代码中.所以,以下代码: #include <iost ...