欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  网络运营

Linux学习 day13之k8s基础简介

程序员文章站 2022-03-10 18:28:38
k8s基础简介一、Kubernetes 概述-开源的,用于管理云平台中多个主机上的容器化的应用特点Kubernetes 组件Master 组件---提供集群管理控制中心`kube-apiserver``ETCD``kube-controller-manager`:运行管理控制器`cloud-controller-manager``kube-scheduler`插件 `addons``DNS`用户界面容器资源监测Cluster-level Logging节点(`Node`)组件--提供`k8s`运行时环境,以...

一、Kubernetes 概述-开源的,用于管理云平台中多个主机上的容器化的应用

特点

  • 可移植: 支持公有云,私有云,混合云,多重云(multi-cloud)
  • 可扩展: 模块化,插件化,可挂载,可组合
  • 自动化: 自动部署,自动重启,自动复制,自动伸缩/扩展

Kubernetes 组件

Master 组件—提供集群管理控制中心

Master组件可以在集群中任何节点上运行,简单起见,通常子一台VM机器启动所有master组件,并且不会在次VM机器上运行用户容器。 参考高可用群集构建 multi-master-VM

kube-apiserver

用于暴露Kubernetes API

任何的资源请求/调用操作都是通过kube-apiserver提供的接口进行。—参考高可用群集

ETCD

提供的默认存储系统,保存所有集群数据,使用时需要为etcd数据提供备份计划

kube-controller-manager:运行管理控制器

  • 运行管理控制器,他们是集群中处理常规任务的后台线程。逻辑上,每个控制器是一个单独的进程,但为了降低复杂性,他们都被编译为单个二进制文件,并在单个进程中运行,

  • 这些控制器包括
    • 节点(Node)控制器
    • 副本(Replication)控制器:负责维护系统中每个副本中的pod
    • 端点(endpoints)控制器:填充Endpoints对象(即连接Services&Pods
    • Service AccountToken控制器:位新的Namespace创建默认账户访问API Token

cloud-controller-manager

  • 云控制器管理器负责与底层云提供商的平台交互。云控制器管理器是Kubernets版本1.6中引入的,还是Alpha的功能
  • 云控制器管理器仅运行云提供商特定的(controller loops)控制器循环。可以通过将--cloud-providerflag设置为external启动kube-controller-manager,来禁用控制器循环
  • cloud -controller-manager具体功能:
    • 节点(Node)控制器
    • Service控制器
    • 卷(Volume)控制器

kube-scheduler

监视新创建没有分配到Nodepod,为Pod选择一个Node

插件 addons

是实现集群PodServices功能的PodDeploymentsReplicationController等进行管理。Namesace插件对象是在Kude-dydtem Namespace中创建

DNS
  • 虽然不严格要求使用插件,但Kubernetes集群都应该具有集群 DNS

  • 群集 DNS是一个DNS服务器,能够为Kubernetes services提供DNS记录。

  • Kubernetes启动的容器自动将这个DNS服务器包含在他们的DNS searches中。

用户界面

kube-ui提供集群状态基础信息查看

容器资源监测

容器资源监控提供一个UI浏览器监控数据

Cluster-level Logging

负责保存容器日志,搜索/查看日志

节点(Node)组件–提供k8s运行时环境,以及维护Pod

kubelet

kubelet是主要的节点代理,它会监视己分配给节点的Pod,具体功能:

  • 安装Pod所需的volume
  • 下载PodSecrets
  • 监视Pod中运行的docker(或experimentallyrkt)容器。
  • 定期执行容器健康检查

kube-proxy

通过在主机上维护网络规则并执行连接转发来实现K8S服务抽象

docker

用来运行容器

RKT(了解即可)

运行容器,作为docker工具的替代方案

supervisord(了解即可)

轻量级的监控系统,用于保障Kubeletdocker运行

fluentd(了解即可)

是一个守护进程,可提供cluster-level logging

核心组件

  • 配置存储中心→etcd服务
  • 主控(master)节点
    • kube-apiserver服务
    • kube-controller-manager服务
    • kube-scheduler服务
  • 运算(node)节点
    • kube-kubelet服务
    • kube-proxy服务
  • CLI客户端
    • kubectl
  • 核心附件
    • CNI网络插件→flannel/calico
    • 服务发现用插件→coredns
    • 服务暴露用插件→traefik
    • GUI管理插件→Dashboard

kubernetes 优势

  • 自动装箱,水平扩展,自我修复
  • 服务发现和负载均衡
  • 自动发布(默认滚动发布模式)和回滚
  • 集中化配置管理和密钥管理
  • 存储编排
  • 任务批处理运行

二、Kubernets 快速入门

四组概念

Pod/Pod控制器

Pod

  • Podk8s里能够运行的最小的逻辑单元(原子单元)
  • 1个Pod里面可以运行多个容器,他们共享UTS +NET+IPC名称空间
  • 可以把pod理解为豌豆荚,而同一种Pod内的每个容器都是一颗颗豌豆
  • 一个Pod里运行多个容器,又叫:边车(sidecar)模式

Pod控制器

  • Pod控制器是Pod启动的一种模板,用来保证在k8s里启动的Pod应始终按照人门预期的运行(副本数,生命周期。健康状态检测)
  • k8s内提供了众多的pod控制器,常用的有以下几种:
    • Deployment
    • DaemonSet
    • ResplicaSet
    • StatfulSet
    • Job
    • Cronjob

Name/Namespace

Name

  • 由于k8s内部,使用‘资源’来定义每一种逻辑概念(功能),故每种资源,都应该有自己的名称
  • 资源 有api版本(apiVersion)类别(Kind),元数据(metadata)、定义清单(spec)、状态(staus)等配置信息
  • 名称 通常定义在资源 的元数据信息里

Namespace

  • 随着项目增多、人员增加、集群规模的扩大、要能够隔离k8s内各种‘资源’的方法,这就是名称空间
  • 名称空间可以理解为k8s内部的虚拟集群组
  • 不同名称空间内的资源,名称可以相同,相同名称空间内的同种资源,名称不同
  • 合理的使用k8s的名称空间,使得集群管理员能够更好的对交付到k8s里的服务进行分类管理和浏览
  • k8s里默认存在的名称空间有:default,kube-system,kube-public
  • 查询k8s里特点资源要带上相应的名称空间

Label/Label选择器

Label:标签

  • 标签是k8s特色的管理方式,便于分类管理资源对象
  • 一个标签可以对应多个资源,一个资源也可以有多个标签,它们是多地多的关系
  • 一个资源拥有多个标签,可以实现不同维度的管理
  • 标签的组成:key=value
  • 于标签类似的,还有一种注解(annotations)

Label选择器

  • 给资源打上标签后,可以 使用标签选择器过滤指定的标签
  • 标签选择器目前有两个;基于等值关系(等于,不等于)和基于集合关系(属于,不属于,存在)
  • 许多资源支持内嵌标签选择器字段
    • matchLalels
    • matchExpressions

Servie/Ingress

Service

  • K8S的世界里,虽然每个Pod都会被分配一个单独的ip地址,但这个ip地址会随着Pod的销毁而消失
  • Service(服务)就是用来解决这个问题的核心概念
  • 一个Service可以看作一组提供相同服务的Pod的对外访问接口
  • Service作用于那些Pod是通过标签来定义的

Ingress

  • IngressK8s集群里工作在OSI网络参考模型下,第七层的应用,对外暴露的接口
  • Service只能进行L4流量调度,表现形式是ip+port
  • Ingress则可以调度不同业务域,不同URL访问路径的业务流量

三、实验部署集群架构详解

  • 部署k8s集群前准备工作
  • 部署主控点服务
  • 完成部署并验证集群
  • 资源需求说明

四、k8s相关概念

主节点 ----Master—大脑

  • API Server: 整个系统的对外接口,供客户端使用和其他的组件调用,相当于 营业厅
  • Scheduler:负责对集群内部的资源进行调度,相当于 调度室 将pod调度到相应的机器上
  • Controller manager:负责管控控制器,相当于 大总管
  • etcd 主要负责存储各个woker节点的状态和其它相关数据,与数据库通信

计算节点—Node/worker —多个 劳动者

  • docker 创建容器
  • kubelet 主要负责监视指派到它所在node上的pod,包括创建,修改,监控,删除等 维护容器的生命周期,负责volume(CVI)和网络(CNI)的管理
  • kube-proxy 主要负责为pod对象提供代理
  • fluentd主要负责日志收集,存储与查询
  • kube-dns(可选)
  • pod

相关概念

Deployment 部署

  • 类似于docker中的镜像image,也就是容器(pods)实例的模板,容器实例时根据deploy创建出来的,在deployment对象中会写明容器的镜像,容器的版本没人气要部署的数量等信息

容器组 pods

  • podskubernetes中的最小管理单元,podsdocker中的容器可以理解为包含关系,在pods中可以包含有多个docker容器
  • 我们可以把一个pod比作一个豌豆荚,里面一颗颗的豌豆就是容器,其中会有一颗豌豆是pod派进去的监工:kube-proxy

服务 service

  • sercice是一个对象,这个对象有自己的ip,也就是clusterip,可以理解为就是下层服务的负载均衡

路由 ingress

  • 无论时容器组还是service,外网都是无法直接访问的,ingress就可以通过一个负载ipkubernetes集群内部进行通信,一般会和service对象进行配合使用

配置项 configmap

  • 简单理解为一个管理配置的对象,可以将项目的配置写入到confgimap中,,项目中的配置使用相应的变量名就可以读取相应的变量值

本文地址:https://blog.csdn.net/wuzeipero/article/details/111036173

相关标签: Linux