1. 基本概念

1.1 什么是 Kubernetes 集群

  1. Kubernetes用于协调高度可用的计算机集群,这些计算机群集被连接作为单个单元工作
  2. Kubernetes在一个集群上以更有效的方式自动分发和调度容器应用程序

1.2 Kubernetes集群资源组成:

  • Master是集群的调度节点
  • Nodes是应用程序实际运行的工作节点
  1. Master 负责管理集群
  2. Node是Kubernetes集群中的工作机器,可以是物理机或虚拟机
  • 每个工作节点都有一个Kubelet,它是管理 节点 并与 Kubernetes Master 节点进行通信的代理。节点上还应具有处理容器操作的工作,例如 Docker。一个 Kubernetes 工作集群至少有三个节点

  • 节点 使用 Master 公开的 Kubernetes APIMaster 通信

1.3 无状态和有状态的区别

1.3.1 无状态服务

  1. 是指该服务运行的实例不会在本地存储需要持久化的数据,并且多个实例对于同一个请求响应的结果是完全一致的。
  2. 多个实例可以共享相同的持久化数据。例如:nginx实例,tomcat实例等
  3. 相关的k8s资源有:ReplicaSet, ReplicationController、Deployment等,由于是无状态服务,所以这些控制器创建的pod序号都是随机值。并且在缩容的时候并不会明确缩容某一个pod,而是随机的,因为所有实例得到的返回值都是一样,所以缩容任何一个pod都可以。

1.3.2 有状态服务

  1. 有状态服务可以说是需要数据存储功能的服务、或者指多线程类型的服务,队列等。(mysql数据库、kafka、zookeeper等)
  2. 每个实例都需要有自己独立的持久化存储,并且在k8s中是通过申明模板来进行定义。持久卷申明模板在创建pod之前创建,绑定到pod中,模板可以定义多个。

2. Kubernetes结构划分

2.1 Kubernetes总体结构划分

  1. 只有中间的是k8s的部分
  2. 左边是管理master的
  3. 右边的是镜像仓库

2.2 Master结构划分

  1. API Server

负责与外部通信,有:接口,GUI,命令行

  1. Scheduler

调度器,容器调度

  1. Controller

控制器,负责具体工作: 还有容器监控等等

  1. etcd

第三方的,保存应用程序配置信息的守护进程,K/V存储

2.3 Node结构划分

  1. kubelet

管理node,而且是负责与master API Server通信

  1. pod

k8s运行的核心基本单元,也是被编排对象

  • k8s上不会直接运行容器,而是运行pod
  • 说白了pod是容器的外壳
  • 但是一个pod可能会包含多个容器,在这种情况下,多个容器被当作一个原子单位管理
  • pod运行在一个私有的隔离的网络上,默认情况下在同一集群的其他pod和service中可见,但是外部不可见,需要借助service暴露给外部

  1. node还应该具有处理容器操作的工具

例如docker或者rkt,一般是docker

3. Kubernetes的组件组成

3.1 Master Components

  1. kube-apiserver
  2. etcd
  3. kube-scheduler
  4. kube-controller-manager
  5. cloud-controller-manager

3.2 Node Components

  1. kubelet

与API server进行交互的

  1. kube-proxy
  2. Container Runtime

docker等

3.3 Addons拓展

  1. DNS

服务注册和服务发现

  1. CNI

必须要一个,容器网络接口实现,flannel,calico。。。

  1. Web UI(Dashboard)

GUI界面

  1. Container Resource Monitoring
  2. Cluster-level Logging

4. Kubernetes的一些对象(资源)

4.1 Kubernetes基础对象

  1. pod
  2. service

可以认为是pod的反向代理,负责接收客户端请求,把请求转给pod

  • 因为每个pod都有自己的内部ip,但是针对一个deployment的pod是有可能变的【pod挂掉或者复制】,所以需要一个service来做一个类似中间者的一个抽象的存在
  • 通过typeServiceSpec中指定可以以不同的方式公开服务
    • ClusterIP(默认): 在集群的内部ip上公开服务。这种类型使得只能从集群内访问服务
    • NodePort:在每个node上的相同端口上公开服务,可以从集群外部访问服务。ClusterIP的超集, 最常用
    • LoadBalancer: 在当前云中创建一个外部负载平衡器(如果支持),并为该服务分配一个固定的外部IP。NodePort的超集。
    • ExternalName-externalName: 通过返回具有该名称的CNAME记录,使用任意名称(在规范中指定)公开服务。不使用代理。此类型需要v1.7或更高版本kube-dns
  1. pod controller(统称)

Deployment最常见

  1. Namespace
  2. Volume

4.2 高级对象

建立在基础对象之上,提供额外功能

  1. pod controller(抽象概念):Deployment(具体实现)【负责操作pod】

5. 部署相关

5.1 部署高可用要点

5.2 部署工具

5.3 安装和部署K8S的两种方式

  1. 二进制部署

让基础程序运行为守护进程

  1. 让基础程序运行为容器

自动化部署工具kubeadm

其他章节

kubernetes系列(二) - kubectl的入门操作

Kubernetes系列(一) - kubernetes入门基本概念的更多相关文章

  1. Kubernetes系列02—Kubernetes设计架构和设计理念

    本文收录在容器技术学习系列文章总目录 1.Kubernetes设计架构 Kubernetes集群包含有节点代理kubelet和Master组件(APIs, scheduler, etc),一切都基于分 ...

  2. kubernetes系列06—kubernetes资源清单定义入门

    本文收录在容器技术学习系列文章总目录 1.认识kubernetes资源 1.1 常用资源/对象 workload工作负载型资源:pod,ReplicaSet,Deployment,StatefulSe ...

  3. Kubernetes系列:Kubernetes Dashboard

    15.1.Dashboard 作为Kube认得Web用户界面,用户可以通过Dashboard在Kubernetes集群中部署容器化的应用,对应用进行问题处理和管理,并对集群本身进行管理.通过Dashb ...

  4. K8S从入门到放弃系列-(16)Kubernetes集群Prometheus-operator监控部署

    Prometheus Operator不同于Prometheus,Prometheus Operator是 CoreOS 开源的一套用于管理在 Kubernetes 集群上的 Prometheus 控 ...

  5. 从0到1使用Kubernetes系列——Kubernetes入门

    基本概念 Docker 是什么 Docker 起初是 dotCloud 公司创始人 Solomon Hykes 在法国的时候发起的一项公司内部项目,Docker 是基于 dotCloud 公司多年云服 ...

  6. K8S从入门到放弃系列-(10)kubernetes集群之kube-proxy部署

    摘要: kube-proxy的作用主要是负责service的实现,具体来说,就是实现了内部从pod到service和外部的从node port向service的访问 新版本目前 kube-proxy ...

  7. K8S从入门到放弃系列-(9)kubernetes集群之kubelet部署

    摘要: Kubelet组件运行在Node节点上,维持运行中的Pods以及提供kuberntes运行时环境,主要完成以下使命: 1.监视分配给该Node节点的pods 2.挂载pod所需要的volume ...

  8. K8S从入门到放弃系列-(7)kubernetes集群之kube-scheduler部署

    摘要: 1.Kube-scheduler作为组件运行在master节点,主要任务是把从kube-apiserver中获取的未被调度的pod通过一系列调度算法找到最适合的node,最终通过向kube-a ...

  9. K8S从入门到放弃系列-(6)kubernetes集群之kube-controller-manager部署

    摘要: 1.Kubernetes控制器管理器是一个守护进程它通过apiserver监视集群的共享状态,并进行更改以尝试将当前状态移向所需状态. 2.kube-controller-manager是有状 ...

  10. K8S从入门到放弃系列-(5)kubernetes集群之kube-apiserver部署

    摘要: 1.kube-apiserver为是整个k8s集群中的数据总线和数据中心,提供了对集群的增删改查及watch等HTTP Rest接口 2.kube-apiserver是无状态的,虽然客户端如k ...

随机推荐

  1. Kubernetes CNI 插件选型和应用场景探讨

    作者:马伟,青云科技容器顾问,云原生爱好者,目前专注于云原生技术,云原生领域技术栈涉及 Kubernetes.KubeSphere.KubeKey 等. 本文介绍容器环境常见网络应用场景及对应场景的 ...

  2. Java新特性-stream流

    Java 8 API添加了一个新的抽象称为流Stream,可以让你以一种声明的方式处理数据. Stream 使用一种类似用 SQL 语句从数据库查询数据的直观方式来提供一种对 Java 集合运算和表达 ...

  3. 饿了么element-ui的图标设置大小

    给element-ui的图标设置大小,其实就是给此组件或其父组件设置字体大小 方法一 需要给父盒子设置字体大小 效果如下 父组件scss样式: 子组件样式: 方法二 直接给当前组件设置字体大小!省事儿 ...

  4. CSS动画(动态导航栏)

    1.项目简介 一个具有创意的导航菜单不仅能为你的大作业增色,还能展示你的技术实力.本文将分享一系列常用于期末大作业的CSS动画导航效果,这些效果不仅外观酷炫,而且易于实现.我们提供了一键复制的代码,让 ...

  5. .NET使用Moq开源模拟库简化单元测试

    前言 今天大姚给大家推荐一个.NET开源.流行.使用简单的.NET模拟库:Moq. Moq类库介绍 Moq是一个.NET开源.流行.使用简单的 .NET 模拟库,充分利用了.NET 的 Linq 表达 ...

  6. 基于wxpython的跨平台桌面应用系统开发

    我曾在随笔<基于Python后端构建多种不同的系统终端界面研究>介绍了多种系统终端界面开发的处理,其中涉及到的wxpython,是一个非常不错的原生界面效果组件,我们可以通过利用其各种界面 ...

  7. 24暑集训Week1

    24暑集训Week1 夜行的人,若你不唱歌的话,不惊醒这黑夜的话,就永远也走不出呼蓝别斯了. 这重重的森林,这崎岖纤细的山路,这孤独疲惫的心. 亲爱的,哪怕后来去到了城市,走夜路时也要大声地唱歌,像喝 ...

  8. 强化学习:塑造奖励(Shaping reward)

    "塑造奖励"(Shaping reward)是一个主要用于行为心理学和强化学习领域的技术.它通过对目标行为或结果的逐步接近进行强化,逐渐通过奖励越来越接近目标的行为来"塑 ...

  9. 解密prompt系列42. LLM通往动态复杂思维链之路

    最近大家都在探讨和尝试复现OpenAI O1的思考效果,解码出的关键技术方向,包括之前已经探讨过的Inference Time Scaling在推理过程中进行路径决策和选择.但想要更优的Inferen ...

  10. 利用腾讯元器,将公众号变身为强大的.NET AI智能体

    前言 经常有粉丝朋友在公众号后台私信提问,因为个人平时比较少看公众号后台的私信所以没法及时回复.最近发现腾讯推出了一个可以创建和使用各种智能体的平台(帮助小白也能快速使用AI):腾讯元器,正好自己每天 ...