一,Devops核心要点及kubernetes的架构概述

[TOC]node

1,devops的简述及要点

DevOps,分层架构 ---> 微服务git

把一个程序,拆分红几个成百个微服务,使其相互独立运行github

当下把微服务和容器融合起来,使其可以快速的落地。算法

DevOps 在交互和部署环节的易购程度,在部署环节异常困难,而容器的出现,彻底弥补了。docker

  • CI: 持续集成 Continues Integration

做为运维的角度,获得一个应程序,须要发布到生产,蓝绿部署,金丝雀,灰度发布后端

  • CD: 持续交付 Continues Delivery
  • CD: 持续部署 Continues Deployment

2,kubernetes的简单介绍与组成

kubernetes,简称K8s,是用8代替8个字符“ubernete”而成的缩写。是一个开源的,用于管理云平台中多个主机上的容器化的应用,Kubernetes的目标是让部署容器化的应用简单而且高效(powerful),Kubernetes提供了应用部署,规划,更新,维护的一种机制。 Kubernetes是Google开源的一个容器编排引擎,它支持自动化部署、大规模可伸缩、应用容器化管理。在生产环境中部署一个应用程序时,一般要部署该应用的多个实例以便对应用请求进行负载均衡。api

kubernetes的GitHub源码托管地址网络

kubernetes中文社区架构

特性

  • 自动化: 自动部署,自动重启,自动复制,自动伸缩/水平扩展,服务发现和负载均衡,自动发布和回滚
  • 支持秘钥和配置管理, 存储编排,批量处理任务执行
  • 可移植: 支持公有云,私有云,混合云,多重云(multi-cloud)
  • 可扩展: 模块化, 插件化, 可挂载, 可组合

集群构成

称为:物理机群架构是。有中心节点架构的集群 master/nodes(worker)负载均衡

master上最重要的组件:

  • API Server

    • 提供集群管理的 REST API 接口,包括认证受权、数据校验以及集群状态变动等
    • 提供其余模块之间的数据交互和通讯的枢纽(其余模块经过 API Server 查询或修改数据,只有 API Server 才直接操做 etcd)
  • Scheduler(调度器)

    • kube-scheduler 负责分配调度 Pod 到集群内的节点上,它监听 kube-apiserver,按容器运行资源需求查询合适的 Pod,而后对符合条件的pod根据调度优选算法为这些 Pod 分配节点(更新 Pod 的 NodeName 字段)。
  • Controller-Manager(控制器管理器,controller针对node进行健康状态监控)

    • Controller Manager 由 kube-controller-manager 和 cloud-controller-manager 组成,是 Kubernetes 的大脑,它经过 apiserver 监控整个集群的状态,并确保集群处于预期的工做状态。
  • etcd

    • 负责保存 Kubernetes Cluster 的配置信息和各类资源的状态信息。当数据发生变化时,etcd 会快速地通知 Kubernetes 相关组件。

node上重要的组件:

  • kubelet
    • 能够理解为管理维护pod运行的agent,接受任务并试图启动容器(要依赖容器引擎)
  • 容器引擎(最流行的docker,也能够是其余)
  • kube-proxy
    • node之上的守护进程,随时与apiserver通讯,用于管理node上的各service的规则。

容许自托管:(kubernetes运行在kubernetes自身之上)

  • 在kubernetes中,最小单位是pod,逻辑的。一个pod中,能够有多个容器。
  • 在调度器中,调度的是pod。一个pod中的全部容器,只能运行在同一个node主机上。
  • 在kubernetes中,为了更好的管理pod,使用Label,是一个key:value格式的,其中key是有一个定的标准的,定义国有,在使用Label selector标签选择器来管理。
  • 集群示意图

pod的基本概念

Pod:kubernetes中的最小单位,相似于宿主机上的虚拟机,每一个pod上能够运行一个或多个容器。

pod的重要组成部分:

  • Label

    • 附加到pod上,对pod进行身份识别和过滤
  • Lable Selectes

    • 筛选label符合要求的pod资源,注意:lable不单单pod上使用,全部对象均可以有lable。
pod分类
  • 自主式Pod
  • 控制器管理的Pod

Replication Controller:副本控制器 ReplicaSet:副本集控制器,几乎不直接使用,多用Deployment Deployment:经常使用,只能用于管理无状态的应用 StatefulSet:用于管理有状态的应用 DaemonSet:只运行一个副本 Job:做业 Ctonjob:周期性任务做业

kubernetes网络

kubernetes中有三种网络:

  • 节点网络
  • 集群网络 service调度的网络(service为后端pod提供固定地址,虚拟的,只存在于iptables规则中)
  • Pod网络

三类通讯:

  • 同一个Pod内多个容器通讯: lo
  • 各Pod之间的通讯(经过叠加网络便可)
  • Pod与Service之间的通讯(pod通信地址指向网关便可与service通讯)

相关文章
相关标签/搜索