10

Kubernetes 学习笔记-基础篇

 3 years ago
source link: https://pylixm.top/posts/2020-08-20-k8s-base.html
Go to the source link to view the article. You can view the picture content, updated content and better typesetting reading experience. If the link is broken, please click the button below to view the snapshot at that time.
neoserver,ios ssh client

Kubernetes 学习笔记,是个人学习记录文章,主要内容为摘录、总结和自己实践的记录,希望能帮助到和我一样正在学习的朋友。作为学习笔记,难免有理解不到位的地方,还请指正。

Kubernetes 学习笔记-基础篇

容器发展史

容器发展到今天,已成为各大公司保障快速响应复杂业务场景的利器。容器的发展史,可通过下面这张图了解,一图胜千言。

1598610145413-itops-history_of_containers.png

(图片来源:https://searchcloudcomputing.techtarget.com/tip/The-future-of-the-Kubernetes-ecosystem-isnt-all-about-cloud)

网上能找到大量的资料,这里找了些不错的资料,可以参考:

Kubernetes 简介

Kubernetes ,简称K8S,是Google在2014年6月开源的一个容器集群管理系统,K8S主要用于自动化部署、扩展和管理容器应用,提供了资源调度、部署管理、服务发现、扩容缩容、监控等一套功能,Kubernetes目标是让部署容器化应用更简单。

K8S,这是一种数字缩写 (Numeronym) 方式。类似的如internationalization(国际化) 叫做i18naccessibility叫做a11y

Kubernetes 主要有以下特性:

自我修复

在节点故障时重新启动失败的容器,替换和重新部署,保证预期的副本数量,杀死健康检查失败的容器,并且在未准备好之前不会处理客户端请求,确保线上服务不中断

弹性伸缩

使用命令、UI或者基于CPU使用情况自动快速扩容和缩容程序实例,确保应用服务高峰并发时的高可用性,业务低峰时回收资源,以最小成本运行服务,这个比较流啤

自动部署和回滚

K8S采用滚动更新策略更新应用,一次更新一个Pod,如果过程中出现问题,将回滚更改,保证升级不会影响业务

服务发现和负载均衡

K8S为多个容器提供一个统一访问入口(内部IP地址和一个DNS名称),并且负载均衡关联所有容器,是用户无需考虑容器IP问题。

机密和配置管理

管理机密数据和应用程序配置,而不需要把敏感数据暴露在镜像里,提高敏感数据安全性,并可以将一些常用的配置存储在K8S里,方便应用程序使用。

存储编排

挂载外部存储系统,无论是来自本地存储,公有云,还是网络存储(如NFS)都作为集群资源的一部分使用,极大提高存储使用的灵活性。

批处理

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

Kubernetes 架构组件

Kubernetes 集群架构可按角色分为Master 和 Node ,简单的架构图下图所示:

1598861072373-Chart_02_Kubernetes-Architecture.png

(图片来源:https://thenewstack.io/kubernetes-an-overview/)

Master 节点

1598861072375-Chart_03_Kubernetes-Master.png

Master 节点主要包括如下组件:

  • Kube-apiserver
    • Kubernetes API 集群统一入口,各组件协调者,以RESTful API 提供接口服务,所有对象资源的增删改查和监听都交给APIServer处理后在提交给Etcd存储。
  • kube-controller-manager
    • 处理集群中常规后台任务,一个资源对应一个控制器,而Controller Manager 就是负责管理这些控制器的。管理维护集群的状态,比如故障检测、自动扩展、滚动更新等
  • kube-scheduler
    • 负责集群pod的调度。根据调度算法为新创建的Pod选择一个Node节点,可以任意部署,可以部署在同一个节点上,也可以部署在不同的节点上。
  • etcd
    • 分布式键值存储系统,用户保存集群状态数据,比如PodService等对象信息

Node 节点

1598861072377-Chart_04_Kubernetes-Node.png
  • kubelet
    • MasterNode节点上的Agent,管理本机运行容器的生命周期,如创建容器、获取容器和节点状态等工作,同时也负责容器卷插件Volume(CVI)和容器网络插件(CNI)的管理。
  • kube-proxy
    • Node节点上实现Pod网络代理并执行链接转发,维护网络规则和四层负载均衡工作。
  • 容器运行时(docker 或 rocket)
    • 容器引擎,运行容器

kubernetes 核心概念

  • 最小部署单元
  • 一组容器的集合
  • 一个Pod中的容器共享网络命名空间
  • Pod是短暂的

Controllers控制资源

  • ReplicaSet:确保预期的Pod副本数量
  • Deployment:无状态应用部署
  • StatefulSet:有状态应用部署
  • DaenonSet:确保所有的Node运行同一个Pod
  • Job:一次性任务
  • Cronjob:定时任务
  • 更高层次对象,部署和管理Pod

Service

  • Pod 的上层统一访问入口,防止pod 扩缩容后ip或端口变化后失联。
  • 定义一组Pod访问策略:ClusterIP、NodePort 、LoadBalancer等。

Label

  • 标签,附加到某个资源上,用于关联对象,查询和筛选

Namespaces

  • 命名空间,将对象逻辑上隔离

Annotations

至此,Kubernetes 基本概念学习完成了。后续我会根据自己对K8S的理解不定期更新,也请期待后续的学习笔记。希望能帮助到学习K8S的同学,欢迎留言交流,共同学习。


Recommend

  • 12

    0x00 前言 作为一名在安全和运维岗位都有过从业经验的人来说,我一直觉得运维和安全是密不可分的,运维和安全团队的特点就是时常要面对非常棘手的事故,一没处理好造成公司的损失那年终奖就鸡飞蛋打了,并且这两个岗位都是属于平...

  • 9
    • www.cnblogs.com 3 years ago
    • Cache

    Java基础学习总结笔记

    Java基础 Java常用内存区域 栈内存空间:存储引用堆内存空间的地址 堆内存空间:保存每个对象的具体属性内容 全局数据区:保存static类型的属性 全局代码区:保存所有的方法定义

  • 7

    flex布局体验传统布局和Flex布局局限性,不能再移动端很好的布局Flex布局操作方便,布局极为简单,移动端应用很广泛PC 端浏览器支持情况较差IE 11或更低版本,不支持或仅部分支持...

  • 7

    1、引用概念 C++中 引用 的概念表示给当前的变量重新取一个名字(别名),但其表示的内存空间还是同一块。 引用符号为&,最简单的引用如下: int x = 10; int& b = x; ...

  • 6
    • segmentfault.com 2 years ago
    • Cache

    Java学习笔记01 - JavaSE基础

    java https://c.runoob.com/compile/10在线编写运行 Java 8

  • 3
    • segmentfault.com 2 years ago
    • Cache

    Gin学习笔记01 框架基础

    Go Webnet/http库package main import ( "fmt" "net/http" ) func sayHello(w http.ResponseWriter, r *http.Request) { fmt.Fprintf(w, "Hello") } func main() { http.HandleFunc("/hello", sayHello) err := http...

  • 5
    • dawnki.github.io 2 years ago
    • Cache

    Python基础学习笔记

    抽空整理了下Python的笔记,可能有点不全,不过过一遍大概就好…. Python笔记Python 2.7 while循环while True: 判断条件为真则继续循环 for循环L = [1,2,3,4]fo...

  • 5
    • www.cnblogs.com 2 years ago
    • Cache

    基础数论学习笔记 - qAlex_Weiq

    CHANGE LOG 2021.12.6. 重构文章,删去线性筛部分,修改部分表述。 2022.3.15 二次重构文章。 2022.3.23 三次重构文章。 2022.3.24 重构完成,新增威尔逊定理,素数在阶乘和组合数中的幂次,阶与原根,高次剩余和卢...

  • 2

    Python学习笔记003-爬虫基础:公开数据获取互联网DIY信息姿势

  • 6

    【精华】深度学习中从基础综述、论文笔记到工程经验、训练技巧 文章目录 经验 | 深度学习中从基础综述、论文笔记到工程经验、训练技巧 依稀记得两年前刚开...

About Joyk


Aggregate valuable and interesting links.
Joyk means Joy of geeK