第143天学习打卡( Kubernetes 初识K8s Pod)

Posted doudoutj

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了第143天学习打卡( Kubernetes 初识K8s Pod)相关的知识,希望对你有一定的参考价值。

Kubernetes

MESOS APACHE 分布式资源管理框架

Docker Swarm

Kubernetes 特点:

  • 轻量级:消耗资源小
  • 开源
  • 弹性伸缩
  • 负载均衡:IPVS

K8S是一个开源的,用于管理云平台中多个主机上的容器化的应用, K8S的目标是让部署容器化的应用简单并且高效,K8S提供应用部署,规划,更新和维护的一种机制。

传统的应用部署方式是通过插件或脚本来安装应用的,这样做的缺点是应用的运行、配置、管理、所有生存周期将与当前操作系统绑定,这样做并不利于应用的升级更新/回滚等操作,当然也可以通过创建虚拟机的方式来实现某些功能,但是虚拟机非常重,不利于可移植性。

新的方式是通过部署容器方式实现,每个容器之间互相隔离,每个容器有自己的文件系统,容器之间进程不会相互影响,能区分计算资源。相对于虚拟机,容器能快速部署,由于容器与底层设施、机器文件系统解耦的,所以他能在不同云、不同版本操作系统之间进行迁移。

容器占用资源少,部署快,每个应用可以被打包成一个容器镜像,每个应用与容器间成一对一关系也使容器有更大优势,使用容器可以在build或release的阶段,为应用创建容器镜像,因为每个应用不需要与其余的应用堆栈组合,也不依赖于生产环境基础结构,这使得从研发到测试,生产能提供一致环境。类似的,容器比虚拟机轻量,更透明,这便于监控和管理。

K8S功能:

  • 自动装箱

    • 基于容器对应用运行环境的资源配置要求自动部署应用容器
  • 自我修复(自愈能力

    • 容器失败时,会对容器进行重启
    • 当所部署的Node节点有问题时,会对容器进行重新部署和重新调度
    • 当容器未通过监控检查时,会关闭此容器直到容器正常运行时,才会对外提供服务
  • 水平扩展

    • 通过简单的命令、用户UI界面或基于CPU等资源使用情况,对应用容器进行规模扩大或规模剪裁
  • 服务发现

    • 用户不需要使用额外的服务发现机制,就能基于K8S自身能力实现服务发现和负载均衡
  • 滚动更新

    • 可以根据应用的变化,对应用容器运行的应用,进行一次性或批量式更新
  • 版本退回

    • 可以根据应用部署情况,对应用容器运行的应用,进行历史版本即时回退
  • 密钥和配置管理

    • 在不需要重新构建镜像的情况下,可以部署和更新密钥和应用配置,类似热部署
  • 存储编排

    • 自动实现存储系统挂载及应用,特别对有状态应用实现数据持久化非常重要,存储系统可以来自本地目录、网络存储(NFS、Gluster、Ceph等)、公共云存储服务
  • 批处理

    • 提供一次性任务,定时任务;满足批量数据处理和分析的场景。

基础概念:什么是Pod 控制器类型 K8s 网络通讯模式

kubernetes:构建K8s集群

资源清单:资源, 掌握资源清单的语法,编写Pod 掌握Pod的生命周期

Pod控制器:掌握各种控制器的特点以及使用定义方式

服务发现:掌握SVC原理及其构建方式

存储:掌握多种存储类型的特点,并且能够在不同环境中选择合适的存储方案

调度器:掌握调度器原理 能够根据要求把Pod定义到想要的节点运行

安全:集群的认证 鉴权 访问控制 原理及其流程

HELM: Linux yum 掌握HELM原理 HELM自定义模板 HELM部署一些常用插件

运维:修改Kubeadm达到证书可用期限为10年或者更久, 能够构建高可用的Kubernetes集群。

服务分类:

  • 有状态服务 :DBMS
  • 无状态服务:LVS APACHE

高可用集群副本数据最好是 >=3 基数个

image-20210531164152132

K8S架构:

image-20210531164445742

etcd 的官方将它定位成一个可信赖的分布式键值存储服务,它能够为整个分布式集群存储一些关键数据,协助分布式集群的正常运转。

etcd的目标是构建一个高可用的分布式键值(key-value)数据库。etcd内部采用raft协议作为一致性算法,etcd基于Go语言实现。

etcd作为服务发现系统,有以下的特点:

  • 简单:安装配置简单,而且提供了HTTP API进行交互,使用也很简单
  • 安全:支持SSL证书验证
  • 快速:根据官方提供的benchmark数据,单实例支持每秒2k+读操作
  • 可靠:采用raft算法,实现分布式系统数据的可用性和一致性

image-20210531165240141

APISERVER:所有服务访问统一入口

ControllerManager:维持副本期望数目

Scheduler: 负责介绍任务,选择合适的节点进行分配任务

ETCD:键值对数据库,存储K8S集群所有的重要信息(持久化)

Kubelet:直接根容器引擎交互实现容器的生命周期管理

Kube-proxy:负责写入规则至IPTABLES、IPVS实现服务映射访问的

image-20210531170809567

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

Dashboard:给K8S集群提供一个B / S结构访问体系

INGRESS CONTROLLER: 官方只能实现四层代理,INGRESS可以实现七层代理

FEDERATION:提供一个可以跨集群中心多K8S统一管理功能。

Prometheus:提供K8S集群的监控能力

ELK:提供K8S集群日志统一分析接入平台.

Pod

自主式Pod

控制器管理的Pod

ReplicationController & ReplicaSet & Deployment

ReplicationController用来确保容器应用的副本数始终保持在用户定义的副本数,即如果有容器异常退出,会自动创建新的Pod来替代,而如果异常多出来的容器也会自动回收。在新版的Kubernetes中建议使用ReplicaSet来取代ReplicationController.

ReplicaSet跟ReplicationController没有本质的不同,只是名字不一样,并且ReplicaSet支持集合式的selector

虽然 ReplicaSet 可以独立使用,但一般还是建议使用Deployment来自动管理 ReplicaSet ,这样就无需担心跟其他机制的不兼容问题(比如 ReplicaSet 不支持rolling-update但Deployment支持)

**Horizontal Pod Autoscaling 仅适用于Deployment和ReplicaSet,**在V1版本中仅支持根据Pod的CPU利用率扩容,在vlalpha版本中,支持根据内存和用户自定义的metric扩缩容。

StatefulSet是为了解决有状态服务的问题(对应Deployments和ReplicaSets是为无状态服务而设计),其应用场景包括:

  • 稳定的持久化存储,即Pod重新调度后还是能访问到相同的持久化数据,基于PVC来实现
  • 稳定的网络标志,即Pod重新调度后其PodName和HostName不变,基于Headless Service(即没有Cluster IP 的Service)来实现
  • 有序部署,有序扩展,即Pod是有顺序的,在部署或者扩展的时候要依据定义的顺序依次进行(即从0到N-1, 在下一个Pod运行之前的Pod必须都是Running 和 Ready状态),基于init containers来实现
  • 有序收缩,有序删除(即从N-1到0)

B站学习网址:k8s教程由浅入深-尚硅谷_哔哩哔哩_bilibili

尚硅谷Kubernetes教程(K8s新版已上传,推荐观看)_哔哩哔哩_bilibili

以上是关于第143天学习打卡( Kubernetes 初识K8s Pod)的主要内容,如果未能解决你的问题,请参考以下文章

第147天学习打卡(Kubernetes 部署)

第156天学习打卡(Kubernetes 搭建监控平台 高可用集群部署 )

第152天学习打卡(Kubernetes 集群安全机制)

第149天学习打卡(Kubernetes 部署nginx 部署Dashboard)

第128天学习打卡(ElasticSearch 初识elasticreach 及安装)

第151天学习打卡(Kubernetes 集群YAML文件详解 Pod Controller)