初探kubernetes--什么是kubernetes

Kubernetes的目标是让部署容器化的应用简单并且高效(powerful),Kubernetes提供了应用部署,规划,更新,维护的一种机制

架构

API设计原则

K8s集群系统每支持一项新功能,引入一项新技术,一定会新引入对应的API对象,支持对该功能的管理操作,理解掌握的API,就好比抓住了K8s系统的牛鼻子

  1. 所有API应该是声明式的
  2. API对象是彼此互补而且可组合的
  3. 高层API以操作意图为基础设计
  4. 低层API根据高层API的控制需要设计。
  5. 尽量避免简单封装,不要有在外部API无法显式知道的内部隐藏的机制。
  6. API操作复杂度与对象数量成正比。
  7. API对象状态不能依赖于网络连接状态
  8. 尽量避免让操作机制依赖于全局状态

控制机制设计原则

  • 控制逻辑应该只依赖于当前状态
  • 假设任何错误的可能,并做容错处理
  • 尽量避免复杂状态机,控制逻辑不要依赖无法监控的内部状态
  • 假设任何操作都可能被任何操作对象拒绝,甚至被错误解析
  • 每个模块都可以在出错后自动恢复
  • 每个模块都可以在必要时优雅地降级服务

Service

在K8s集群中,客户端需要访问的服务就是Service对象。每个Service会对应一个集群内部有效的虚拟IP,集群内部通过虚拟IP访问一个服务。

在K8s集群中微服务的负载均衡是由Kube-proxy实现的。

Kube-proxy是K8s集群内部的负载均衡器。它是一个分布式代理服务器,在K8s的每个节点上都有一个;这一设计体现了它的伸缩性优势,需要访问服务的节点越多,提供负载均衡能力的Kube-proxy就越多,高可用节点也随之增多。

与之相比,我们平时在服务器端做个反向代理做负载均衡,还要进一步解决反向代理的负载均衡和高可用问题

Pod

Pod的设计理念是支持多个容器在一个Pod中共享网络地址和文件系统,可以通过进程间通信和文件共享这种简单高效的方式组合完成服务

PetSet

在云原生应用的体系里,有下面两组近义词

第一组是无状态(stateless)、牲畜(cattle)、无名(nameless)、可丢弃(disposable)

第二组是有状态(stateful)、宠物(pet)、有名(having name)、不可丢弃(non-disposable)

对于RC和RS中的Pod,一般不挂载存储或者挂载共享存储,保存的是所有Pod共享的状态,Pod像牲畜一样没有分别(这似乎也确实意味着失去了人性特征);对于PetSet中的Pod,每个Pod挂载自己独立的存储,如果一个Pod出现故障,从其他节点启动一个同样名字的Pod,要挂载上原来Pod的存储继续以它的状态提供服务

适合于PetSet的业务包括数据库服务MySQL和PostgreSQL,集群化管理服务Zookeeper、etcd等有状态服务。

PetSet的另一种典型应用场景是作为一种比普通容器更稳定可靠的模拟虚拟机的机制。

传统的虚拟机正是一种有状态的宠物,运维人员需要不断地维护它,容器刚开始流行时,我们用容器来模拟虚拟机使用,所有状态都保存在容器里,而这已被证明是非常不安全、不可靠的。使用PetSet,Pod仍然可以通过漂移到不同节点提供高可用,而存储也可以通过外挂的存储来提供高可靠性,PetSet做的只是将确定的Pod与确定的存储关联起来保证状态的连续性

原文地址:https://www.cnblogs.com/YC-L/p/12568527.html

时间: 2024-11-10 16:43:08

初探kubernetes--什么是kubernetes的相关文章

kubernetes学习01—kubernetes介绍

一.简介 1.Kubernetes代码托管在GitHub上:https://github.com/kubernetes/kubernetes/. 2.Kubernetes是一个开源的,容器集群管理系统,Kubernetes的目标是让部署容器化的应用简单并且高效(powerful),Kubernetes提供了应用部署,规划,更新,维护的一种机制.通过Kubernetes你可以: 快速部署应用 快速扩展应用 无缝对接新的应用功能 节省资源,优化硬件资源的使用 3.Kubernetes一个核心的特点就

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

1.Kubernetes设计架构 Kubernetes集群包含有节点代理kubelet和Master组件(APIs, scheduler, etc),一切都基于分布式的存储系统.下面这张图是Kubernetes的架构图. 2.Kubernetes节点 2.1 介绍 ① 在这张系统架构图中,我们把服务分为运行在工作节点上的服务和组成集群级别控制板的服务. ② Kubernetes节点有运行应用容器必备的服务,而这些都是受Master的控制. ③ 每次个节点上当然都要运行Docker.Docker来

Kubernetes系列之Kubernetes部署metrics-server

四.Kubernetes系列之Kubernetes部署metrics-server#一.metrics-server简介自kubernetes 1.8开始,资源使用指标(如容器 CPU 和内存使用率)通过 Metrics API 在 Kubernetes 中获取,metrics-server 替代了heapster.Metrics Server 实现了Resource Metrics API,Metrics Server?是集群范围资源使用数据的聚合器.?Metrics Server 从每个节点

Kubernetes系列之Kubernetes资源管理

Kubernetes 从创建之初的核心模块之一就是资源调度.想要在生产环境使用好 Kubernetes,必须对它的资源模型以及资源管理非常了解.这篇文章算是对散布在网络上的 Kubernetes 资源管理内容的一个总结.干货文章,强列推荐一读. Kubernetes 资源简介 什么是资源? 在 Kubernetes 中,有两个基础但是非常重要的概念:Node 和 Pod.Node 翻译成节点,是对集群资源的抽象:Pod 是对容器的封装,是应用运行的实体.Node 提供资源,而 Pod 使用资源,

How To Build Kubernetes Platform (构建Kubernetes平台方案参考)

Architecture Architecture Diagram Non-Prod Environment Prod Environment Cluster Networking Container RepositorySetup Minikube For Dev Env Kubeadm For Non-Prod Env Other IaaC For Prod Env Devops CI/CD Source Code Management PipeLine Monitoring Dashboa

[Kubernetes] 国内获取 Kubernetes 镜像的方法

https://blog.csdn.net/shida_csdn/article/details/78480241一. 背景介绍 众所周知,由于国内网络原因,在搭建 Kubernetes 环境时,经常遇到必须的镜像找不到的情况. 到 DockerHub 捡垃圾毕竟不是个好办法,本文就教大家在 DockerHub 搭建自己的镜像仓库. 要求:有 GitHub 账号,有 DockerHub 账号,没有请注册. 二. 基本步骤 2.1 登陆 GitHub,创建代码仓库,比如:googlecontain

Kubernetes 入门之Kubernetes 的基本概念和术语

Kubernetes是什么? 他是一个全新的基于容器技术分布式架构领先方案: 他也是一个开放的开发平台: 他也是一个完备的分布式系统支撑平台: Kubernetes的基本慨念和术语 Master Kubernetes 里的Master 指的是集群控制节点,每个Kubernetes 集群里需要有一个 Master 节点负责整个集群的管理和控制,基本上Kuberneter所有的控制命令都发给它,他来负责具体的执行过程,我们后面所执行的所有命令基本上都是在Master节点上运行的.Masteer通常会

Kubernetes学习之Kubernetes架构

架构 Kubernetes历史 原文地址:https://www.cnblogs.com/twodoge/p/10296034.html

Kubernetes 学习21 kubernetes高级调度方式

一.概述 1.上集讲了Scheduler在实现调度时分三步实现调度过程.首先是预选,即从所有节点中选择基本符合选择条件的节点.而后在基本符合条件的节点中使用优选函数计算他们各自的得分并加以比较.并从最高得分的节点中随机选择出一个运行pod的节点,这就是我们的控制平面中scheduler所实现负责的主要功用.同时如果在某些调度场景中我们期望能够通过自己的预设去影响他的一些调度方式,比如就是把我们的pod运行在某些特定的节点之上的时候可以通过自己的预设操作去影响他的预选和优选过程从而使得调度操作能符