k8s是什么

news2024/11/18 3:47:05

生么是k8s:

Kubernetes:8个字母省略,就是k8s

自动部署,自动扩展和管理容器化部署的应用程序的一个开源系统、

k8s是负责自动化运维管理多个容器化程序的集群,是一个功能强大的容器编排工具。

分布式和集群化的分布式进行容器管理。

1.15   1.18    1.20  1.28   现在普遍用的是1.20

k8s是Google的borg系统作原型,后期经由go语言编写的开源软件。

Docker微服务,可以满足微服务使用,那么为什么还要使用k8s呢。

  1. 传统的部署方式:一般意义上的二进制部署,安装-运行-运行维护,需要专业的人员,如果出现故障还需要人工重新拉起来,而且如果业务量增大,只能水平的拓展,再部署一个。
  2. 容器化,可以用dockerfile编写好自定义的容器,随时基于镜像都可以运行,数量少,还能管的过来,数量一旦太多管理起来太复杂。而且。Docker一般是单机运行,没有高可用。

k8s的作用:简单,高效的部署容器化的应用。

  1. 解决了docker的单机部署和无法集群化的特点
  2. 解决了随着容器数量的增加,对应增加的管理成本。
  3. 容器的高可用,提供了一种容器的自愈机制。
  4. 解决了容器没有预设模版,以及无法快速,大规模部署,以及大规模的容器调度。
  5. ks8提供了集中化配置管理的中心。
  6. 解决了容器的生命周期的管理工具。
  7. 提供了图形化工具,可以用图形化工具对容器进行管理。

k8s是基于开源的容器集群管理系统,在docker容器技术的基础之上。为容器化的应用提供部署。运行,资源调度。服务发现,动态伸缩等一系列完整的功能。

大规模容器管理:作用

  1. 对docker容器技术从应用的包----部署----运行----停止----销毁,全部生命周期管理。
  2. 集群方式运行,跨机器的容器管理
  3. 解决docker的跨机器运行的网络问题
  4. k8s可以自动修复,使得整个容器集群可以在用户期待的状态下运行。

k8s的特性:

  1. 弹性伸缩:基于命令,或者图形化界面基于CPU的使用情况,自动的对部署的程序进行扩容和伸缩。以最小的成本运行服务。
  2. 自我修复:节点故障时,重启启动失败的容器,替换和重新部署。
  3. 服务发现和负载均衡:k8s为多个容器提供一个统一的访问入口(内部地址和一个内部的DNS名称),自动负载均衡关联所有的容器。
  4. 自动发布和回滚:k8s采用滚动的策略更新应用。如果更新过程中出现故障,可以根据回滚点来进行回滚。
  5. 集群化的配置管理和密钥管理。 k8s集群内的各个组件都是要进行秘钥对验证的。但是k8s的安全性不够。核心的组件不建议部署,自定义应用。

     6,存储编排:                 

                1,可以自动化的吧容器部署在节点上。

                2,可以通过命令行或者yml文件(自定义pod)实现指定节点部署

                3,可以通过网络存储,NFS g fs

     7,任务进行批次处理:

        提供一次性的任务, 定时任务,满足需要批量处理和分析的场景。   

k8s的核心组件:

  1. kube-apiserver:k8s集群之中每个组件都是要靠密钥对来进行验证,组件之间的通信apiserver.API是应用接口服务,k8s的所有资源请求和调用操作都是kube-apiserver来完成。

       所有对象资源的增,删,改。查和监听的操作都是kube-apiserver处理完成之后交给etcd来进行。

Api-server是k8s所有请求的入口服务,api-server接受k8s的所有请求(命令行和图像化界面)

然后根据用户的具体请求,通知对应的组件展示或者运行命令。

APIserver相当于整个集群的大脑。

    2,kube-controller-manager:运行管理控制器。是k8s集群中处理常规任务的后台线程。是集群中所有资源对象的自动化控制中心。一个资源对应一个控制器,controller-manager负责管理这些控制器。

  1. node controller(节点控制器):负责节点的发现以及节点故障时的发现和响应。
  2. Replication controller(副本控制器):控制关联pod的副本数。可以随时扩容。
  3. Endpoints controller(端点控制器):监听service和对应pod的福本变化。端点就是服务暴漏出的访问点。要访问这个服务,必须要知道他的endpoints。就是内部每个服务的IP地址+ 端口。
  4. Service account 和roken controllers(服务账户和令牌控制)      为命名空间创建,默认账户和API访问令牌。Namespace,访问不同的命令空间。
  5. resourcequota controller(资源控制器):可以对命名空间的资源使用进行控制。   也可以对pod的资源进行控制。
  6. namespace controller(命名空间的控制器):管理命名空间的生命周期。
  7. Server controller(服务器节点控制):k8s集群和外部的主机之间的接口控制器。

     

    3.kube-scheduler:资源调度组件,根据调度算法为新创建的pod选择一个合适的node节点。         可以理解为k8s的所有node节点的调度器,部署和调度node

       预先策略:人工定制,指定的node节点上部署

       预先策略:限制条件。

      根据调度算法选择一个合适的node,node的节点的资源情况,node的资源控制的情况等等,          选一个资源最富裕,负载最小的node来部署。

    4,ETCD:k8s的存储服务,etcd分布式键值存储系统(key:value)k8s的关键配置和用户配  置,     先通过APIserver调用etcd当中的存储信息。然后在实施。(这个集群当中,能对etcd存储进行    读写权限的,只有API-server)  主节点上

node组件:

  1. kubelet:node 节点的监视器,以及于MASTER节点的通讯器,可以理解为master在node节点上的眼线。

   Kubelet会定向时向API server汇报自己的node上的运行服务的状态,APl-server会把节点状态保存etcd存储当中。

   接受来自master节点的调度命令。 如果发现自己的状态和master状态不一致,会调用docker的接口,同步数据。

   对节点上容器的生命周期进行管理,保证节点上的镜像不会占满磁盘空间,退出的容器的资源,进行回收。

      2.kube-porxy:

   实现每个node节点上的pod网络代理。负责节点上的网络规划核四层负载工作。负责写入iptables(快淘汰)ipvs实现服务映射。

 Pod不是容器

Kube-prxoxy:本身不直接给pod提供网络代理,proxy是service资源的载体。

Kube-porxy:实际上代理的是pod的集群网络(虚拟网络)

k8s的每个node节点上都有一个kube-proxy组件。

       3,docker:容器引擎,运行容器。负责本机的容器创建和管理。

   k8s要创建pod时,kube-sheduler调度到节点上(node节点)。节点上的kubelet只是docker启动特点的溶气。

   Kubelet把容器的信息收集,发送给主节点。需要在主节点发布指令,节点上kubelet就会指示docker拉去镜像,启动或者停止容器。

      

      4,pod运行在节点上的。是k8s当中创建或者部署的最小最简单的一个基本单位,一个pod代表集群上正在运行的一个进程。

   同一个pod内的每个容器就是一颗豌豆。

Pod是由一个或者多个容器组成,pod中的容器共享网络,存储和计算资源,可以部署在不同的docker主机上。

   一个pod里面可以运行多个容器或者具有关联的多个容器组成一个pod

Deployment:无状态应用部署,作用就是管理和控制pod,以及replicaset(运行几个 容器)管控他的运行状态。

Replicaset:保证pod的副本数量,受控于deploment。

在k8s中,部署服务,实际上就是pod,deployment部署的服务就是pod,rereplicaset的就是来定义pod的容器数量。可以保证pod的不可重复性。在当前命名空间不能重复。不同命名空间名称可以重复。

官方推荐使用deploment进行服务部署。

Daemonset:确保所有节点运行同一类的pod

Statefulset:有状态应用部署。

Job:可以在pod中设置一次性任务,运行完即退出。

Cronjob:一直在运行的周期性任务。

Service的作用:

在k8s集群当中,创建一个pod之后,都会其中运行的容器分配一个集群内的IP地址。由于业务的变更,容器可能会发生变化,IP地址也会发生变化,service的作用就是提供整个pod对外统一的IP地址。

Service就是一个网管(路由器)通过访问service就可以访问pod内部的容器集群。

Service能实现负载均衡和代理-----kube-proxy-----来实现负载均衡

Service是k8s微服务的核心,屏蔽了服务的细节,统一的对外暴漏的端口,真正实现了“微服务”。

Service的流量调度:userspace(用户空间,废弃)iptablees(即将废弃),IPVS(目前1.20都用IPVS)

 Label:标签:

k8s的特色管理方式,分类管理资源对象。

Label标签可以用户自定义

Label选择器:等于 不等于 使用定义的标签名。

Ingress:的作用:

 k8s集群对外暴漏提供访问的接口。属于应用层,七层代理,转发的是http请求 http/https   service是四层转发,转发的是流量。

Namespace:

在k8s上可以通过namesapce来实现资源隔离,项目隔离。

通过namespace可以吧集群划分为多个资源不可共享的虚拟集群组。

不同命名空间里面的资源名称可以重复的。

工作过程

首先认证主节点

k8s管理员访问集群的第一步  auth(权限验证,有权限才能访问),API-server 提供集群的统一访问接口(调用集群内部的各个服务,收集集成信息保存到<etcd>所有集群信息)----->kube-contronller-manager(节点控制器)---> kube-schudel(调度器)主节点认证完成之后。

(kubelet)节点的监控器,管理node节点上的docker资源----> (kube-proxy)代理服务,负责代理pod节点的网络地址.

当客户端来访问节点:  客户端通过防护墙访问kube-proxy(kube-proxy对应pod的server)获取容器内部的资源

调度节点(kube-schudel)形成新的pod,会把pod指定安排到指定的容器上(创建pod的过程)

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

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

相关文章

关于MySQL、分布式系统、SpringCloud面试题

前言 之前为了准备面试&#xff0c;收集整理了一些面试题。 本篇文章更新时间2023年12月27日。 最新的内容可以看我的原文&#xff1a;https://www.yuque.com/wfzx/ninzck/cbf0cxkrr6s1kniv MySQL 索引 说一下有哪些锁&#xff1f; 行锁有哪些&#xff1f; 性能优化 分库分表…

GrayLog日志平台的基本使用-ssh接入Dashboards展示

这里使用的版本为graylog4.2.10 1、一键安装graylog4.2.10&#xff0c;解压zip包&#xff0c;执行脚本就行 链接&#xff1a;https://pan.baidu.com/s/11U7GpBZ1B7PXR8pyWVcHNw?pwdudln 提取码&#xff1a;udln 2、通过rsyslog采集系统日志&#xff0c;具体操作参考前面文…

Java框架基础--maven,http,postman

maven Maven 提供了一个标准的构建生命周期和一组约定的目录结构&#xff0c;以简化和规范项目的构建过程。它主要用于 Java 项目&#xff0c;但也可以用于其他类型的项目。提高了项目的可维护性、可重复性和一致性&#xff0c;简化了构建和依赖管理的复杂性&#xff0c;使得开…

人类偏好导向:DPO技术重塑SDXL-1.0图像生成

引言 在AI领域&#xff0c;适应和理解人类偏好一直是技术发展的重要方向。斯坦福大学研究团队最近提出的Diffusion-DPO方法&#xff0c;旨在将这一理念应用于图像生成模型&#xff0c;特别是在文本到图像的转换领域。 Huggingface模型下载: https://huggingface.co/mhdang/ A…

dl转置卷积

转置卷积 转置卷积&#xff0c;顾名思义&#xff0c;通过名字我们应该就能看出来&#xff0c;其作用和卷积相反&#xff0c;它可以使得图像的像素增多 上图的意思是&#xff0c;输入是22的图像&#xff0c;卷积核为22的矩阵&#xff0c;然后变换成3*3的矩阵 代码如下 import…

遗传算法的应用——求解一元函数的极值

遗传算法的应用——求解一元函数的极值 1 基本概念2 预备知识3.1 模拟二进制转化为十进制的方法3.2 轮盘赌选择算法 3 问题4 Matlab代码5 运行效果6 总结 1 基本概念 遗传算法(Genetic Algorithm,GA)是模拟生物在自然环境中遗传和进化过程从而形成的随机全局搜索和优化方法&am…

C#与php自定义数据流传输

C#与php自定义数据流传输 介绍一、客户端与服务器数据传输流程图客户端发送数据给服务器&#xff1a;服务器返回数据给客户端&#xff1a; 二、自定义数据流C#版本数据流PHP版本数据流 三、数据传输测试1.在Unity中创建一个C#脚本NetWorkManager.cs2.服务器www目录创建StreamTe…

Docker 创建容器

1、创建MySQL5.7 拉取镜像&#xff1a;docker pull mysql:5.7创建容器&#xff1a;docker run -d --name mysql57001 -p 3306:3306 -v D:\DockerImage\QhData\MySql57:/var/lib/mysql -e MYSQL_ROOT_PASSWORD123456 mysql:5.7进入容器&#xff1a;docker exec -it mysql57001 …

检测如下MHA运行条件【踩坑记录】

【masterha_check_ssh --conf/etc/mha/app1.cnf&#xff1a;SSH免密登录】 【错误信息1】 [error][/usr/share/perl5/vendor_perl/MHA/SSHCheck.pm, ln111] SSH connection from root10.0.0.53(10.0.0.53:22) to root10.0.0.51(10.0.0.51:22) failed! 【错误反馈】就是服务器…

2024 软件测试面试题(800道)【附带答案】持续更新...

&#x1f4e2;专注于分享软件测试干货内容&#xff0c;欢迎点赞 &#x1f44d; 收藏 ⭐留言 &#x1f4dd; 如有错误敬请指正&#xff01;&#x1f4e2;交流讨论&#xff1a;欢迎加入我们一起学习&#xff01;&#x1f4e2;资源分享&#xff1a;耗时200小时精选的「软件测试」资…

什么是数据分析思维

参考 一文学会如何做电商数据分析&#xff08;附运营分析指标框架&#xff09; 电子商务该如何做数据分析&#xff1f;如何数据分析入门&#xff08;从各项指标表象进入&#xff09; https://www.processon.com/outline/6589838c3129f1550cc69950 数据分析步骤 什么是数据分析…

HackTheBox - Medium - Linux - OnlyForYou

OnlyForYou OnlyForYou 是一台中等难度的 Linux 计算机&#xff0c;其特点是 Web 应用程序容易受到本地文件包含 &#xff08;LFI&#xff09; 的影响&#xff0c;该应用程序用于访问源代码&#xff0c;从而揭示盲目命令注入漏洞&#xff0c;从而导致目标系统上的 shell。该计…

k8s的二进制部署1

k8s的二进制部署&#xff1a;源码包部署 k8smaster01&#xff1a;192.168.176.61 kube-apiserver kube-controller-manager kube-scheduler etcd k8smaster01&#xff1a;192.168.176.62 kube-apiserver kube-controller-manager kube-scheduler node节点01&#xff1a;192.…

华清远见嵌入式学习——ARM——作业4

作业要求&#xff1a; 代码运行效果图&#xff1a; 代码&#xff1a; do_irq.c: #include "key_it.h" extern void printf(const char *fmt, ...); unsigned int i 0;//延时函数 void delay(int ms) {int i,j;for(i0;i<ms;i){for(j0;j<2000;j);} }void do_i…

VScode安装Remix.js开发环境

目录 1 Remix.js介绍 2 远程连接方法 3 安装remix环境 4 设置根路由 5 编译运行 6 自己的helloworld 7 总结 书接上回&#xff0c;我们已经完成了vue的基本开发环境配置&#xff0c;并成功跑了第一个vue程序。下面我们要尝试安装remix.js的开发环境。 1 Remix.js介绍 …

00-Git 应用

Git 应用 一、Git概述 1.1 什么是Git git 是一个代码协同管理工具&#xff0c;也称之为代码版本控制工具&#xff0c;代码版本控制或管理的工具用的最多的&#xff1a; svn、 git。 SVN 是采用的 同步机制&#xff0c;即本地的代码版本和服务器的版本保持一致&#xff08;提…

Java中实现百度浏览器搜索功能

要在Java中实现百度浏览器搜索功能&#xff0c;你可以使用Selenium WebDriver。Selenium是一个用于自动化浏览器的工具&#xff0c;WebDriver是Selenium的一个子项目&#xff0c;它提供了一套API&#xff0c;可以直接与浏览器交互。 依赖: <dependencies><dependency…

【http】HTTP/1.0、HTTP/1.1和HTTP/2.0

✨ 专栏介绍 在当今互联网时代&#xff0c;计算机网络已经成为了人们生活和工作中不可或缺的一部分。而要实现计算机之间的通信和数据传输&#xff0c;就需要依靠各种网络协议来进行规范和约束。无论是浏览网页、发送电子邮件还是进行在线交流&#xff0c;都离不开各种各样的网…

【PTA】L1-016 验证身份(C++)

题目链接 &#xff1a; 题目要求&#xff1a; 一个合法的身份证号码由17位地区、日期编号和顺序编号加1位校验码组成。校验码的计算规则如下&#xff1a; 首先对前17位数字加权求和&#xff0c;权重分配为&#xff1a;{7&#xff0c;9&#xff0c;10&#xff0c;5&#xff0…

手机无人直播:解放直播的新方式

现如今&#xff0c;随着科技的迅猛发展&#xff0c;手机已经成为我们生活中不可或缺的一部分。除了通讯、娱乐等功能外&#xff0c;手机还能够通过直播功能将我们的生活实时分享给他人。而针对传统的直播方式&#xff0c;使用手机进行无人直播成为了一种全新的选择。 手机无人…