Docker是一个开源的应用容器引擎

k8s是一个开源的容器集群管理系统

这里我尽量用比较浅显的方式来说明k8s系统

一、k8s是如何管理的节点的呢:
1、k8s 分master和node 
2、master是整个集群的管理中心,在master上可以执行 kubectl get pod 等命令,来干预node
3、node是具体的pod的承载的机器,我们有时候称为node节点
4、master可以有多个,例如:master1,master2,master3, 在任意的master上都可以执行相关的管理命令来干预node节点的行为
    行为包括暂停节点、删除节点、查看节点、调度节点等等。
5、node节点理论上是有无限个,node节点在安装完毕后,通过注册的方式向master进行注册,这样master会自动的感应到node节点的

Master负责集群的管理,协调集群中的所有行为/活动。例如,pod应用的运行、修改、更新等。节点(Node)作为Kubernetes集群中的工作节点,可以是VM虚拟机、物理机。每个Node上都需要安装一个Kubelet,docker,kubelet-proxy等。用于管理Node节点与Kubernetes Master 通信。每个Node节点上至少还要运行container runtime (比如Docker或者rkt)

在Kubernetes(k8s)集群上部署应用程序时,会先通知master启动容器中的应用程序,master 调度容器在集群的Node节点上运行,Node节点使用master公开的Kubernetes API与主节点进行通信。最终用户还可以直接使用Kubernetes API与集群进行交互

我们用一个表格来看下一个master、node的关系

角色 ip 组件
master1 192.168.51.21

etcd

kube-apiserver

kube-controller-manager

kube-scheduler

master2 192.168.51.22

etcd

kube-apiserver

kube-controller-manager

kube-scheduler

node1 192.168.51.11

kubelet

kube-proxy

docker

node2 192.168.51.22

kubelet

kube-proxy

docker

K8s集群组件如下:

etcd:一个高可用的K/V键值对存储和服务发现系统,节点的注册信息会存贮到etcd。

flannel:实现跨主机的容器网络的通信,当然我们也可以使用类似calico这样的网络组件代替flannel。
     这里说白了,是构建了一个内部的pod网络通讯环境,比如:建立虚拟网卡,网桥等。

kube- apiserver:提供Kubernetes集群内的node节点的与master通讯, 前提需要安装通讯所需的网络插件,api-server很重要是master和node进行通讯的必要组件,例如检测node是否存活,node状态等。

kube- controller-manager:确保集群服务。

kube- scheduler:从集群中调度容器,分配到某Node节点,或从集群中驱离或定向调度到某节点等操作。

kubelet:在Node节点上按照配置文件中定义的容器规格启动容器。

kube-proxy:提供网络代理服务。

二、k8s node节点上的一些软件组成
1、包括网络插件、docker引擎、nginx等,它是一个非常复杂的软件系统.
2、操作系统比如:centos系统需要7.2 以上最好,centos6 安装docker 基本安装出现各种问题。

三、k8s和docker关系
     可以说docker(类容器),可以说是k8s的基础,必须要安装容器环境,这里拿docker为例,我安装的是二进制k8s,所以每台机器,例如:master,node等都必须要安装 
      docker

k8s和Docker的更多相关文章

  1. Kubernetes(k8s)集群部署(k8s企业级Docker容器集群管理)系列目录

    0.目录 整体架构目录:ASP.NET Core分布式项目实战-目录 k8s架构目录:Kubernetes(k8s)集群部署(k8s企业级Docker容器集群管理)系列目录 一.感谢 在此感谢.net ...

  2. Kubernetes(k8s)集群部署(k8s企业级Docker容器集群管理)系列之集群部署环境规划(一)

    0.前言 整体架构目录:ASP.NET Core分布式项目实战-目录 k8s架构目录:Kubernetes(k8s)集群部署(k8s企业级Docker容器集群管理)系列目录 一.环境规划 软件 版本 ...

  3. Kubernetes(k8s)集群部署(k8s企业级Docker容器集群管理)系列之自签TLS证书及Etcd集群部署(二)

    0.前言 整体架构目录:ASP.NET Core分布式项目实战-目录 k8s架构目录:Kubernetes(k8s)集群部署(k8s企业级Docker容器集群管理)系列目录 一.服务器设置 1.把每一 ...

  4. Kubernetes(k8s)集群部署(k8s企业级Docker容器集群管理)系列之flanneld网络介绍及部署(三)

    0.前言 整体架构目录:ASP.NET Core分布式项目实战-目录 k8s架构目录:Kubernetes(k8s)集群部署(k8s企业级Docker容器集群管理)系列目录 一.flanneld介绍 ...

  5. Kubernetes(k8s)集群部署(k8s企业级Docker容器集群管理)系列之部署master/node节点组件(四)

    0.前言 整体架构目录:ASP.NET Core分布式项目实战-目录 k8s架构目录:Kubernetes(k8s)集群部署(k8s企业级Docker容器集群管理)系列目录 1.部署master组件 ...

  6. Kubernetes k8s 基于Docker For Windows

      开启和安装Kubernetes k8s 基于Docker For Windows   0.最近发现,Docker For Windows Stable在Enable Kubernetes这个问题上 ...

  7. k8s部署docker容器

    一.环境 需机器已部署好k8s和docker的环境 二.操作步骤 1.将制作好的镜像推送到docker仓库 docker tag nginx:test harbor:test-nginx docker ...

  8. k8s和Docker关系简单说明

    关注「开源Linux」,选择"设为星标" 回复「学习」,有我为您特别筛选的学习资料~ 这篇文章主要介绍了k8s和Docker关系简单说明,本文利用图文讲解的很透彻,有需要的同学可以 ...

  9. k8s系列~docker mysql

    docker封装mysql的一些心得 简介:今天咱们来聊聊容器化mysql的一些心得 版本:Docker version 18.03 mysql 5.7.21考虑条件:  1 选好合适的docker镜 ...

随机推荐

  1. LGP3708题解

    题面很直白,就不说了罢qaq 首先很明显,\(\sum_{i=1}^n x \bmod i = nx - \sum_{i=1}^n i\lfloor \frac x i \rfloor\) 这道题要是 ...

  2. 《Shader入门精要》第11章-11.3.1流动的河流中的offset.x的解释

    在我学习入门精要的时候,经常遇到不解释api,甚至是关键代码的实现原理. 11.3.1流动的河流中的offset.x的sin函数查了一下好像大家也都是书上原话直接复制,现在好不容易想明白了希望能帮到和 ...

  3. Python入门随记(4)

    在涉及一些实际问题,会碰到概率论等相关领域的知识,自然少不了矩阵运算,以下是Python中关于矩阵的简单操作: 1.常用库numpy import numpy as np 2.随机生成矩阵 a=np. ...

  4. Makefile 入门(加减乘除实现)

    Makefile 入门(加减乘除实现) 准备 使用任意Linux发行版即可,本文使用WSL Ubuntu. 开始之前,需要安装必要的工具: sudo apt install make g++ 开始 1 ...

  5. ActiveMQ代码-01

    p2p模式 生产者 package com.activemq.activemqdemo.p2p; import org.apache.activemq.ActiveMQConnectionFactor ...

  6. Monkey的参数及简单使用

    什么是Monkey? Monkey是Android SDK提供的一个命令行工具,可以简单方便的发送伪随机的用户事件流,对Android APP做压力(稳定性)测试.主要是为了测试app是否存在无响应和 ...

  7. GitFlow 工作流

    1.概述 GitFlow 工作流定义了一个围绕项目发布的严格分支模型.虽然比功能分支工作流复杂几分,但提供了用于一个健壮的用于管理大型项目的框架. GitFlow 工作流没有用超出功能分支工作流的概念 ...

  8. 哪种依赖注入方式你建议使用,构造器注入,还是 Setter方法注入?

    你两种依赖方式都可以使用,构造器注入和Setter方法注入.最好的解决方案是用构造器参数实现强制依赖,setter方法实现可选依赖.

  9. CAS 的问题 ?

    1.CAS 容易造成 ABA 问题 一个线程 a 将数值改成了 b,接着又改成了 a,此时 CAS 认为是没有变化,其实 是已经变化过了,而这个问题的解决方案可以使用版本号标识,每操作一次 versi ...

  10. springboot使用自定义注解和反射实现一个简单的支付

    优点: 未使用if else,就算以后增加支付类型,也不用改动之前代码 只需要新写一个支付类,给添加自定义注解@Pay 首先: 定义自定义注解 Pay 定义 CMBPay ICBCPay 两种支付 根 ...