容器及虚拟化技术发展

  • 物理机:硬件环境,物理资源
  • 虚拟机:硬件环境,物理资源,虚拟资源,虚拟机(共享物理资源)
  • 集装箱:硬件环境,物理资源,虚拟资源,虚拟机,虚拟环境(共享宿主机内核)

alt text

注:集装箱即容器

容器及虚拟化技术术语

  • 编排:通过编排,⽤户可以构建多个容器的应⽤服务,跨集群调度、扩展这些容器,并长期持续管理这些容器和检测健康状况 。
  • 宿主机:
    • 虚拟化的宿主机则是指所在的物理机
    • 容器的宿主机则是指所在的操作系统
      • Linux操作系统可运行Linux容器
      • Windows操作系统则即可运行Windows容器,也可运行Linux容器
  • 容器镜像:一组打包的容器文件

关于Kubernetes的核心概念和组件的概述

  1. Kubernetes (K8S):一个用于自动化部署、扩展和管理容器化应用程序的开源平台。
  2. 核心功能
    • 负载均衡:Kubernetes提供Ingress资源,用于实现负载均衡。
    • 调度:Kubernetes负责决定容器在哪个节点上运行。
    • 资源管理:Kubernetes管理集群资源,确保容器化应用程序高效运行。
  3. 容器运行时接口(CRI):Kubernetes通过CRI与不同的容器运行时环境进行通信,如Docker、CRI-O、rkt等。
  4. Docker Shim:当Kubernetes与Docker通信时,需要Docker Shim这个额外的插件。
  5. 调度器:Kubernetes的Kube Scheduler组件负责容器的调度。
  6. 容器环境:Kubernetes支持多种类型的容器环境,包括但不限于Docker、CRI-O、rkt、MESOS、kata、LXC和OpenVZ。
  7. 复制控制器:确保指定数量的Pod副本始终运行。
  8. 核心对象
    • Pod:Kubernetes中的基本部署单元,可以包含一个或多个容器。
    • 节点:工作节点,运行容器化应用程序。
      这些核心内容概括了Kubernetes的主要功能和组件,以及它如何与容器环境进行交互。
      alt text

K8S部署架构,系统架构

alt text
alt text

1
2
3
4
5
6
7
8
9
10
11
1️⃣Kubernetes (k8s):一个开源的容器编排平台,用于自动化部署、扩展和管理容器化应用程序。
2️⃣容器编排系统:帮助管理容器的生命周期,包括部署、扩展和运行容器化应用程序。
3️⃣控制平面 (Control Plane):负责管理Kubernetes集群中的工作节点和Pods,是集群的大脑。
4️⃣工作节点 (Worker Nodes):运行容器化应用程序的机器,是Kubernetes集群中的执行者。
5️⃣Pods:Kubernetes中最小的部署单元,可以包含一个或多个容器,它们共享网络和存储。
6️⃣API服务器 (API Server):作为集群内所有组件通信的枢纽,所有操作都通过API服务器进行。
7️⃣ 调度器 (Scheduler):负责监控新创建的Pods,并决定将它们分配到哪个节点上运行。
8️⃣控制器管理器 (Controller Manager):运行各种控制器,如节点控制器、作业控制器等,负责维护集群状态。
9️⃣etcd:一个分布式键值存储系统,用作Kubernetes集群数据的持久化存储。
10. Kubelet:在每个节点上运行的代理,确保容器运行在Pods中。
11. Kube Proxy:在每个节点上运行的网络代理,负责服务的网络规则和转发。

K8S服务架构,业务架构

alt text
alt text
alt text

1
2
此云提供商控制器监视 Kubernetes 主服务器以添加和删除服务资源,并在云提供商网络中配置第 4 层负载均衡器以代理多个  
Kubernetes 节点上的 NodePort。上图业务架构中显示外部流量如何借助负载均衡器进入 Kubernetes 集群。

K8S服务控制器-service

K8S服务控制器type:ClusterIP

alt text

1
2
3
4
5
6
7
8
9
10
11
12
apiVersion: v1
kind: Service
metadata:
name: employee-producer-service
spec:
selector:
app: boot-jar
ports:
- protocol: TCP
port: 80
targetPort: 8080
type: ClusterIP

K8S服务控制器type:NodePort

alt text

1
2
3
4
5
6
7
8
9
10
11
12
13
apiVersion: v1
kind: Service
metadata:
name: employee-producer-service
spec:
selector:
app: boot-jar
ports:
- protocol: TCP
port: 80
targetPort: 8080
nodePort: 30080
type: NodePort

K8S服务控制器type:LoadBalancer

alt text

1
2
3
4
5
6
7
8
9
10
11
12
apiVersion: v1
kind: Service
metadata:
name: employee-producer-service
spec:
selector:
app: boot-jar
ports:
- protocol: TCP
port: 80
targetPort: 8080
type: LoadBalancer

<持续完善中>