关于kubernetes:从零开始的k8s之旅四集群架构

首先来看一个最简略的零碎架构图:由一个主节点和若干工作节点组成,开发者将一个利用列表提交到主节点,k8s会将它们部署到集群的工作节点,组件被部署在哪个节点对开发者和系统管理员来说都不必关怀。
在这个层级上,k8s能够看成是集群的操作系统,帮忙开发者聚焦外围利用性能,不用去思考额定的服务如:服务发现、扩容、负载平衡、自复原或者选举leader等,同时也可能帮忙运维团队获取更高的资源利用率。

视角拉近一点会看到k8s的架构是如下所示,在硬件层面,一个k8s集群由很多节点形成,次要分为两类:

  • 主节点,控制面板(master)
  • 工作节点(worker)


各节点具备的组件及其性能可参考我之前的文章[k8s-设计理念-原理图](https://segmentfault.com/a/1190000017535476)

最初看一个在k8s集群中是如何部署应用程序的繁难流程图。

右边的容器被分为3组,这些容器组被称为pod,旁边的数字代表pod的正本数量,后续将会具体解说。pod个别由deployment控制器负责创立,开发人员提交的deployment.yaml外面会蕴含创立pod所需的信息,上面是一个nginx-deployment.yaml的例子。

apiVersion: apps/v1         // 以后应用的apiVersion版本
kind: Deployment            // 要创立的资源类型
metadata:                   // 该资源的元数据,name是必须的元数据项
  name: nginx-deployment    
  labels:
    app: nginx
spec:                       // 该Deployment的规格阐明
  replicas: 2               // 正本数量
  selector:                 // label选择器
    matchLabels:
      app: nginx
  template:                 // 定义Pod的模板,这是配置文件的重要局部
    metadata:               // 定义Pod的元数据,至多要定义一个label
      labels:             
        app: nginx
    spec:                   // 形容Pod的规格,此局部定义Pod中每一个容器的属性,name和image是必须的
      containers:
      - name: nginx
        image: nginx:1.14.2
        ports:
        - containerPort: 80

执行kubectl apply -f nginx-deployment.yaml

通过 kubectl get 查看 nginx-deployment 的各种资源

评论

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

这个站点使用 Akismet 来减少垃圾评论。了解你的评论数据如何被处理