01. Kubernetes基础入门

news2024/11/16 21:43:21

目录

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: nginx
  replicas:2    #设置Deployment 的副本数为2
  template:
    metadata:
      labels:
        app: nginx
    spec:
      containers:
      - name: nginx
        image: nginx:1.14.2
        ports:
        - 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.coloradmin.cn/o/972789.html

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

相关文章

静态路由:配置和使用详解

文章目录 一、静态路由的配置和使用详解1. 配置要点1.1 点到点接口配置1.2 以太网接口配置 2. 默认路由3. 静态路由的配置命令4. 静态路由实现路由备份和负载分担 二、静态路由的优先级和比较1. 静态路由的优先级设置2. 静态路由与动态路由的比较2.1 静态路由优缺点2.2 动态路由…

《阿里巴巴 Java 开发手册》(一)命名风格

《阿里巴巴 Java 开发手册》 一、编程规约(一)命名风格 一、编程规约 (一)命名风格

【U盘】实现U盘清空并重置恢复存储

打开电脑,将U盘插入USB端口,点按快捷键【WinR】,弹出运行对话框,输入命令 diskpart 进入命令提示符窗口 输入指令 list disk 查看现在的硬盘 这里显示的U盘编号是“1”,因此输入select disk “1”,就是选择…

leetcode56. 合并区间(java)

合并区间 题目描述贪心算法代码演示 题目描述 难度 - 中等 leetcode56. 合并区间 以数组 intervals 表示若干个区间的集合,其中单个区间为 intervals[i] [starti, endi] 。请你合并所有重叠的区间,并返回 一个不重叠的区间数组,该数组需恰好…

微服务[Nacos]

CAP 1)一致性(Consistency) (所有节点在同一时间具有相同的数据) 2)可用性(Availability)(保证每个请求不管成功或者失败都有响应) 3)分区容错(Partition tolerance)(系统中任意信息的丢失或失败不会影响系统的继续运作) 一、虚拟机镜像准备 …

知识储备--基础算法篇-滑动窗口

1.滑动窗口 1.1第3题-无重复字符的最长子串 给定一个字符串 s ,请你找出其中不含有重复字符的 最长子串 的长度。 示例 1: 输入: s "abcabcbb" 输出: 3 解释: 因为无重复字符的最长子串是 "abc",所以其长度为 3。 心得&#…

2023年海运行业研究报告

第一章 行业概况 1.1 定义 海运行业,按照全球行业分类标准(GICS)的定义,是交通运输行业的一个重要子集。这个行业包括那些提供以海洋为主要运输途径的货物和乘客运输服务的公司。这些公司可以运营各种类型的船只,包括…

购物商场项目实践

1.项目开始 1)此项目为在线电商项目 2)包含首页,搜索列表,商品详情,购物车,订单,支付,用户登录/注册等多个子模块 3)使用Vue全家桶ES6webpackAxios等前端技术 4&…

IDea寻找冲突的依赖包

场景:boot项目运行时,提示log4j2依赖包冲突。 SLF4J: Class path contains multiple SLF4J bindings. SLF4J: Found binding in [jar:file:/D:/maven/repository/ch/qos/logback/logback-classic/1.2.3/logback-classic-1.2.3.jar!/org/slf4j/impl/Stati…

Web安全测试(五):XSS攻击—存储式XSS漏洞

一、前言 结合内部资料,与安全渗透部门同事合力整理的安全测试相关资料教程,全方位涵盖电商、支付、金融、网络、数据库等领域的安全测试,覆盖Web、APP、中间件、内外网、Linux、Windows多个平台。学完后一定能成为安全大佬! 全部…

RHCA之路---EX280(5)

RHCA之路—EX280(5) 1. 题目 Using the example files from the wordpress directory under http://materials.example.com/exam280/wordpress create a WordPress application in the farm project For permanent storage use the NFS shares /exports/wordpress and /export…

蓝桥杯打卡Day1

文章目录 全排列八皇后 一、全排列IO链接 本题思路:本题是一道经典的全排列问题&#xff0c;深度优先搜索即可解决。 #include <bits/stdc.h>constexpr int N10;std::string s; std::string ans; int n; bool st[N];void dfs(int u) {if(un){std::cout<<ans<…

java 基础面试题 静态绑定与动态绑定

一 静态绑定与动态绑定 1.1 前言概述 昨天去用友面试&#xff0c;被问到了如下几个问题 1.单例模式使用场景 2.责任链模式 3.分布式事务TCC 4.动态绑定和静态绑定 5.类加载器 今天就来研究一下静态绑定和动态绑定 1.2 静态绑定代码 1.父类&#xff1a;定义一个stati…

OpenCV实现Photoshop曲线调整

《QT 插件化图像算法研究平台》有仿Photoshop曲线调整图像的功能&#xff0c;包括RGB曲线调整和HSV曲线调整。 Photoshop曲线调整原理&#xff1a;RGB、HSV各通道曲线&#xff0c;可以理解为一个值映射&#xff08;值转换&#xff09;函数。X轴是输入&#xff0c;Y轴是输出。x0…

什么是SpringCloud Eureka服务注册与发现

&#x1f600;前言 本篇博文是关于SpringCloud Eureka 介绍&#xff0c;希望你能够喜欢 &#x1f3e0;个人主页&#xff1a;晨犀主页 &#x1f9d1;个人简介&#xff1a;大家好&#xff0c;我是晨犀&#xff0c;希望我的文章可以帮助到大家&#xff0c;您的满意是我的动力&…

包管理工具--》npm的配置及使用(一)

目录 &#x1f31f;概念 &#x1f31f;背景 &#x1f31f;前端包管理器 &#x1f31f;包的安装 本地安装 全局安装 &#x1f31f;包配置 配置文件 保存依赖关系 &#x1f31f;包的使用 &#x1f31f;概念 模块&#xff08;module&#xff09; 通常以单个文件形式存…

解决windows下git操作提示用户名密码错误的问题

当代码从一个平台切换到另一个平台的时候&#xff0c;需要做两步操作&#xff0c;第一步就是更新git的仓库地址&#xff0c;在项目的.git/config文件里面修改&#xff0c;这一步做完之后&#xff0c;就可以推送代码到新的仓库了&#xff0c;这里就是重点来了。 一般第一次推动代…

数据结构与算法复杂度介绍

目录 一、基本概念 二、时间复杂度 【2.1】时间复杂度概念 【2.2】大O的渐进表示法 【2.3】举例时间复杂度计算 三、空间复杂度 一、基本概念 数据结构&#xff1a;相互之间存在一种或者多种特定关系的数据元素的集合。在逻辑上可以分为线性结构&#xff0c;散列结构、树…

关于 ignore

当使用 insert into xxx 时&#xff0c;可能出现因数据类型错误插入失败的情况&#xff0c;如图所示&#xff1a; 当出现这种情况时&#xff0c;可以通过 ignore 来“强制”插入&#xff0c;提示插入成功 但是这种操作会带来隐患如图&#xff1a; 时间有问题&#xff0c;但是时…

SMU200A/罗德与施瓦茨SMU200A信号发生器

181/2461/8938产品概述 R&S SMU200A信号发生器旨在满足现代通信系统研发及其生产中遇到的所有要求。R&S SMU200A矢量信号发生器不仅将多达两个独立的信号发生器组合在一个只有四个高度单位的机柜中&#xff0c;还提供无与伦比的RF和基带特性。 Rohde & Schwarz S…