k8s学习笔记

312 阅读3分钟

k8s

Apache mesos :分布式资源统一管控工具 ,需要和Marathon结合使用-- twitter切换到了k8s

docker swarm ,docker自己的容器编排工具-- 阿里云剔除swarm

kubernetes -- 起源于谷歌的borg,Google开源的容器编排工具

k8s特点

轻量级:消耗资源小

弹性伸缩

开源

负载均衡:IPVS

k8s的功能

自我修复

弹性伸缩

服务发现

负载均衡

版本回退

存储编排

k8s本质就是一组集群,它可以在集群上运行特定的程序,来对节点进行管理。它的目的是实现资源管理的自动化。

k8s架构

k8s的组件

k8s集群主要由控制节点和工作节点构成。每个节点上都会安装不同的组件。

1、master集群的控制平面,负责集群的决策:

api server所有服务的访问入口,接受用户输入的命令,提供认证、授权、API注册和发现等机制

controller manager :维护集群的状态,比如:程序部署安排,故障检测,自动扩展,滚动更新等。

scheduler 负责集群资源调度,按照预定的策略将POD调度到相应的节点上。

ETCD:键值对数据库,储存k8s集群的所有重要信息(持久化)。负责存储集群中各种资源对象的信息。

2、node 集群的数据平面,负责为容器提供运行环境

Kubelet:负责容器的生命周期,即通过控制docker,来创建、更新销毁容器

Kube-proxy:负责集群内部的服务发现和负载均衡

Docker:负责节点上的各种操作

重要的插件:

core dns:可以为集群中的SVC创建一个域名IP的对应关系解析

DASHBOARD:给k8s集群提供一个B、S结构访问体系

INGRESS Controller:官方只能实现4层代理,ingress可以实现七层代理

Fedetation:提供一个可以跨集群中心多k8s统一管理功能

prometheus:提供k8s集群的监控能力

ELK:提供K8s集群日志统一分析介入平台

高可用集群副本数据最好是>3的奇数

POD类型:

被控制器管理的POD

不被控制器管理的POD,自主式POD

POD的类型:

ReplicationController (RC) :用来确保容器应用的副本数始终保持在用户定义的副本数。新版本推荐使用RS(ReplicationSet)

ReplicationSet:与RC一样,并且支持集合式的selector。无状态设计。

Deployment:使用Deployment来自动管理RS。无状态设计。

HPA(HorizontalPodAutoScale):仅适用于Deployment和Replicaset,在V1版本中仅支持根据POD的CPU利用率扩缩容,在vlalpha版本中,支持根据内存和用户自定义的metric扩缩容

StatefulSet:为了解决有状态服务的问题。应用场景:稳定的持久化存储,稳定的网络标志,有序部署,有序收缩。

DaemonSet:确保全部(或一些)Node上运行一个POD的副本。当有Node加入集群时,也会为他们新增一个POD。当有Node从集群移除时,这些POD也会被回收。删除DaemonSet将会删除它创建的所有Pod。

Job:保证处理任务的一个或多个POD成功结束

cronJob:基于时间的job

网路通讯方式:

同一POD内的多个容器之间:Lo

各个POD之间的通讯:Overlay Network

POD与Service之间的通讯:各节点的IPTables规则

网络解决方案:Flannel

k8s安装

kubewdm

centos7

Koolshare

harbor