01. Kubernetes基础入门

目录

1、前言

2、Kubernetes介绍

2.1、什么是Kubernetes

2.2、主要功能

2.3、与Docker的关系

2.4、Kubernetes集群架构体系

3、Kubernetes组件

3.1、核心组件

3.2、附加组件

4、Kubernetes对象

4.1、对象管理

4.2、命名空间

4.3、标签


1、前言

Docker 容器技术将应用及其依赖打包到镜像中,从而很好地解决了应用部署与集成的问题。低在现实中却很少通过 Docker 将应用进行大规模的部署。这主要是因为,Docker 本质上是一种单的容器技术(或者说是一种工具),并不能很好地将应用组织起来,难以独立地支撑起生产环境中应用的大规模容器化部署。而采用 Kubernetes 则可以很好地解决这个问题。

2、Kubernetes介绍

Kubernetes官方网站:Kubernetes

2.1、什么是Kubernetes

Kubernetes 简称 K8s,是一个用于自动化部署、扩展和管理容器化应用程序的开源系统。它最初源于谷歌内部的 Borg 系统,提供的功能包括:

  • 应用的服务排
  • 容器集群的部署
  • 集群的管理

通过它能够非常方便地进行集群的扩容与缩容。

Borg 系统是一个集群管理器,它管理着 Google 内部很多个应用集群,而每个集群都有成千上万台机器。Borg 系统通过准入控制、高效的任务打包、超额的资源分配,以及进程级隔离的机器共享,实现了超高的资源利用率。

Kubernetes 通过一个抽象的逻辑单元 Pod 将应用的容器组合在一起,从而让服务更容易被发现和管理。Kubernetes 中沉淀了 Google 多年的生产环境运行经验,目前已经形成了一个完善的生态圈。Google在2014年将其开源。

2.2、主要功能

Kubernetes主要提供了7个重要功能:

1、自动发布和回滚

通过持久化存储来保存应用发布时的相关配置信息,从而在部署过程中发生问题时能够执行回滚操作。

2、自动化装箱

按照应用对资源的要求将容器进行自动部署,从而提高了资源的利用率,节省了资源。

3、水平扩容

根据应用在运行过程中对 CPU、内存的使用情况,通过简单的命令即可对应用进行扩容和缩容。

4、配置管理

将集群和应用的配置信息进行了持久化存储,可以在不重新构建镜像的情况下更新应用的配置信息。

5、自愈能力

实现了容器的高可用。当节点上运行的容器失败后,Kubernetes 会对容器进行重启。即使节点出现宕机,Kubernetes 也会对容器进行重新部署和重新调度,容器能够正常运行后才会对外提供服务。

6、服务发现和负载均衡

内置了服务发现机制和负载均衡功能,不需要使用额外的服务。

7、存储编排

利用持久卷和持久卷声明完成存储系统的自动挂载,同时支持多种存储系统(如本地存储、云存储和网络存储等 )。

2.3、与Docker的关系

Kubernetes 并不能够取代 Docker,它们之间是平台与组件的关系: Kubernetes 可以将Docker 作为运行时组件,但并不完全依赖 Docker。因此严格地说,Kubernetes 应该被称为容器编排技术,而不是容器技术。

2.4、Kubernetes集群架构体系

Kubernetes是属于主从分布式架构,包括了master节点和node节点,master为主节点,而node为工作节点,一般实际项目中,至少要有2个node节点。

  • master节点:控制着整个集群,并对集群进行管理和调度。master 节点上运行着 APIServer、scheduler、controller-manager 等服务组件,并且 master 节点还管理着集群的持久化存储。
  • node 节点: 实际运行业务应用容器的节点。node 节点上运行着 kubelet、kube-proxy和Docker 容器的守护进程。node 节点通过 kubelet 与 master 节点上的APIServer进行交互,从而在集群中对各种资源执行增加、删除、修改和查询等操作。

3、Kubernetes组件

3.1、核心组件

1、API Server

它提供了操作 Kubernetes 集群的唯一入口,通过它可以访问集群中的所有资源。它也提供了用户的认证及授权功能,并支持访问控制的管理和服务的注册与发现等机制。API Server 也可以与ETCD 存储器进行交互,从而将集群的信息持久化保存。

2、scheduler

它负责管理和调度集群资源。Kubernetes 许用户预先定义集群资源的调度策略,通过scheduler 将 Pod 调度到相应的 node 节点上。

3、controller-manager

它负责维护集群的状态,如故障检测、自动扩展、滚动更新等。

4、kubelet

它负责管理 node 节点上运行的 Pod,包括 Pod 的创建、修改、删除、重启及健康状态监控等。它还负责与 master 节点上的API Server 进行交互,定时将 node 节点的状态发送给API Server,并接收APIServer 下发的指令。

5、kube-proxy

它会根据 ETCD 中存储的应用配置信息在 node 节点上启动一个监听进程,从而将外部请求路由转发到后端正确的容器中。另外,kube-proxy 还解决了服务端口冲突的问题,并为部署在Kubernetes 集群中的应用提供访问外部网络的能力。kube-porxy 支持随机和轮询这两种负载均衡的路由算法。

6、Docker 容器的守护进程

它负责 Docker 的镜像管理,以及 Pod 和容器的真正运行,是 Kubernetes 真正的执行引擎。

3.2、附加组件

附加组件不是必需的,但是可以增强Kubernetes功能。

1、kube-dns

为整个Kubernetes集群提供DNS服务。

2、Ingress

为集群中的服务提供最佳的外部访问方式。

3、Heapster

监控Kubernetes集群资源。

4、Dashboard

Web UI。

5、Federation

提供跨可用的k8s集群。

6、Fluentd-elasticsearch

提供k8s集群日志的采集、存储和查询。

4、Kubernetes对象

Kubernetes 将所有的内容(如 Pod、Service、PV和PVC等)都抽象为“资源”。“资源的实例是“对象”,而对象可以被持久化。Kubernetes 使用对象去代表整个集群。对象描述了如下信息:

  • 集群中有哪些应用,它们运行在哪些节点上。
  • 应用可以使用哪些资源或对象。

4.1、对象管理

由于 master 节点上的 API Server 是操作集群资源的唯一入口,因此,对象的管理都是通过API Server 来完成的。Kubernetes 提供的这些API是Restful API,所以,即使使用命令行I具kubectl 来操作集群,实际上也是调用 API Server 中提供的接口来完成客户端的请求的。

Kubernetes 使用配置文件来描述和管理对象,配置文件格式可以是JSON或YAML 格式,更常用的是YAML格式。

下面是 Kubernetes 官方提供的一个 YAML 示例文件,它展示了 Kubernetes Deployment对象的属性的必需字段和规约。

apiVersion: apps/vl
kind: Deployment
metadata:name: nginx-deployment
spec:selector:matchLabels:app: nginxreplicas:2    #设置Deployment 的副本数为2template:metadata:labels:app: nginxspec:containers:- name: nginximage: nginx:1.14.2ports:- containerPort: 80

参数说明:

  • apiVersion:创建该对象所使用的 Kubernetes API的版本
  • kind:指定对象的类型
  • metadata:设置对象的元信息,包括对象的名称、ID 及命名空间等
  • spec:设定对象的规约信息

4.2、命名空间

Kubernetes 支持多个虚拟集群,它们的底层依赖同一个物理集群。通过命名空间可以将这些虚拟集群从逻辑上进行隔离。同一个命名空间中的对象名称必须唯一,并且不能跨越命名空间。每个Kubernetes的对象只能属于一个命名空间。不同的命名空间不能互相嵌套。

获取当前命名空间的命令:

kubectl get namespaces

4.3、标签

标签(Labels)是附加到 Kubernetes 对象上的键值对。通过使用标签,用户可以为对象指有意义且相关的标识属性。标签用于组织和选择对象。可以在创建对象时创建标签,也可以在对创建成功后随时添加标签。可以为一个对象添加多个标签,但是同一个对象上的标签不能重复.

标签的定义可以在“metadata”字段中通过“labels”关键字进行定义。如:

"metadata": {"labels": {"keyl" :"valuel","key2":"value2"}
}

对象的标签可以与“selector”选择器配合使用,并用表达式对条件加以限制,从而实现更精确、更灵活的资源查找。

标签是Kubernetes 中非常强大的一个功能。所有的 Kuberetes 资源都可以使用标签例如:在 node 节点上增加标签,然后利用 Pod的标签选择器将Pod分配到不同类型的 node节点上。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/67327.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

uniapp实现微信小程序全局可分享功能

uniapp实现微信小程序全局【发送给朋友】、【分享到朋友圈】、【复制链接】 主要使用 Vue.js 的 全局混入 1.创建一个全局分享的js文件。示例文件路径为:./utils/shareWx.js ,在该文件中定义全局分享的内容: export default {data() {retur…

【广州华锐互动】智能变电站AR仿真实训系统大大提高培训的效率和质量

随着电力行业的不断发展,变电站的建设和运维变得越来越重要。传统的变电站运维培训方式存在着诸多问题,如难以真实模拟变电站运行环境、信息传递不及时、难以掌握实际操作技能等问题。而智能变电站AR仿真实训系统可以为变电站运维人员带来全新的培训方式…

WebSocket与SSE区别

一,websocket WebSocket是HTML5下一种新的协议(websocket协议本质上是一个基于tcp的协议) 它实现了浏览器与服务器全双工通信,能更好的节省服务器资源和带宽并达到实时通讯的目的 Websocket是一个持久化的协议 websocket的原理 …

ceph架构及 IO流程

CEPH是由多个节点构成的集群,它具有良好的可扩展性和可靠性。节点之间相互通信以达到: 存储和检索数据 数据复制 监控集群的健康状况 保证数据的完整性 检测故障并恢复 基本架构如下图: 分布式对象存储系统RADOS是CEPH最为关键的技术&a…

20.添加HTTP模块

添加一个简单的静态HTTP。 这里默认读者是熟悉http协议的。 来看看http请求Request的例子 客户端发送一个HTTP请求到服务器的请求消息,其包括:请求行、请求头部、空行、请求数据。 HTTP之响应消息Response 服务器接收并处理客户端发过来的请求后会返…

android studio 的 adb配置

首先在 Android Studio 中 打开 File -> Settings: 下载 “Google USB Driver” 这个插件 (真机调试的时候要用到), 并且记一下上面的SDK路径: 右键桌面上的 “我的电脑”, 点击 “高级系统设置”, 配置计算机的高级属性, 有两步: 添加一个新的环境变量 ANDROID_HOME, 变量…

【C++】C++面向对象编程三大特性之一——继承

❤️前言 本篇博客主要是关于C面向对象编程中的三大特性之一的继承,希望大家能和我一起共同学习进步! 正文 我们刚刚学习一块全新的知识,首先简单关注一下它的概念和简单的使用方法。 继承的概念及定义 继承的概念 继承的概念:…

WordPress Page Builder KingComposer 2.9.6 Open Redirection

WordPress Page Builder KingComposer 2.9.6 Open Redirection WordPress 插件 KingComposer 版本2.9.6 以及以前版本受到开放重定向漏洞的影响。该漏洞在packetstorm网站披露于2023年7月24日,除了该漏洞,该版本的插件还存在XSS攻击的漏洞风险 图1.来自…

AI「反腐」,德国马普所结合 NLP 和 DNN 开发抗蚀合金

内容一览:在被不锈钢包围的世界中,我们可能都快忘记了腐蚀的存在。然而,腐蚀存在于生活中的方方面面。无论是锈迹斑斑的钢钉,老化漏液的电线,还是失去光泽的汽车,这一切的发生都与腐蚀有关。据统计&#xf…

通信笔记:RSRP、RSRQ、RSNNR

0 基础概念:RE、RS和RB RE (Resource Element):资源元素是 LTE 和 5G 网络中的最小物理资源单位。一个资源元素对应于一个子载波的一个符号周期。 RS (Reference Signal):参考信号是在 LTE 和 5G 网络中用于多种目的的特定类型的信号。它们可…

数学建模--三维图像绘制的Python实现

目录 1.绘制三维坐标轴的方法 2.绘制三维函数的样例1 3.绘制三维函数的样例2 4.绘制三维函数的样例3 5.绘制三维函数的样例4 6.绘制三维函数的样例5 1.绘制三维坐标轴的方法 #%% #1.绘制三维坐标轴的方法 from matplotlib import pyplot as plt from mpl_toolkits.mplot3…

【算法系列篇】分冶-快排

文章目录 前言什么是分冶1.颜色分类1.1 题目要求1.2 做题思路1.3 Java代码实现 2. 排序数组2.1 题目要求2.2 做题思路2.3 Java代码实现 3.数组中的第k个最大元素3.1 题目要求3.2 做题思路3.3 Java代码实现 4. 最小的k个数4.1 题目要求4.2 做题思路4.3 Java代码实现 总结 前言 …

Python Tkinter Multiple Windows 教程

一、说明 在这个Python Tkinter教程中,我们将学习如何在Python Tkinter中创建多个窗口,我们还将介绍与多个窗口相关的不同示例。而且,我们将介绍这些主题。 Python Tkinter multiple windows使用多个窗口的 Python Tkinter 用户注册Python Tk…

【聚类】DBCAN聚类

OPTICS是基于DBSCAN改进的一种密度聚类算法,对参数不敏感。当需要用到基于密度的聚类算法时,可以作为DBSCAN的一种替代的优化方案,以实现更优的效果。 原理 基于密度的聚类算法(1)——DBSCAN详解_dbscan聚类_root-ca…

跨源资源共享(CORS)Access-Control-Allow-Origin

1、浏览器的同源安全策略 没错,就是这家伙干的,浏览器只允许请求当前域的资源,而对其他域的资源表示不信任。那怎么才算跨域呢? 请求协议http,https的不同域domain的不同端口port的不同 好好好,大概就是这么回事啦&…

【权限提升-Windows提权】-UAC提权之MSF模块和UACME项目-DLL劫持-不带引号服务路径-不安全的服务权限

权限提升基础信息 1、具体有哪些权限需要我们了解掌握的? 后台权限,网站权限,数据库权限,接口权限,系统权限,域控权限等 2、以上常见权限获取方法简要归类说明? 后台权限:SQL注入,数…

1780_添加鼠标右键空白打开命令窗功能

全部学习汇总: GitHub - GreyZhang/windows_skills: some skills when using windows system. 经常执行各种脚本,常常需要切换到命令窗口中输入相关的命令。从开始位置打开cmd然后切换目录是个很糟糕的选择,费时费力。其实Windows 7以及Windo…

经管博士科研基础【19】齐次线性方程组

1. 线性方程组 2. 非线性方程组 非线性方程,就是因变量与自变量之间的关系不是线性的关系,这类方程很多,例如平方关系、对数关系、指数关系、三角函数关系等等。求解此类方程往往很难得到精确解,经常需要求近似解问题。相应的求近似解的方法也逐渐得到大家的重视。 3. 线…

vue3 封装千分位分隔符自定义指令

toLocaleString作用:在没有指定区域的基本使用时,返回使用默认的语言环境和默认选项格式化的字符串。可点击进入MDN查看 // 千分位分隔符指令 import { Directive, DirectiveBinding } from vueconst thousandSeparator: Directive {mounted(el: any, …

Win10搭建VisualSvn Server

Win10搭建VisualSvn Server 目录 Win10搭建VisualSvn Server一、下载VisualSvn Server安装包二、安装VisualSvn Server三、配置和使用VisualSVN Server四、添加用户及权限设定方法五、创建目录及配置权限 1、服务端:有集成了Subversion和Apache、安装使用非常简单且…