K8s 详解(一) K8s 架构和常用命令

news2024/11/16 9:40:35

🎈 作者:Linux猿

🎈 简介:CSDN博客专家🏆,华为云享专家🏆,Linux、C/C++、云计算、物联网、面试、刷题、算法尽管咨询我,关注我,有问题私聊!

🎈 欢迎小伙伴们点赞👍、收藏⭐、留言💬


本文主要介绍 K8s 的简介、架构以及常用命令。

一、K8s 起源

Kubernetes ( 简称为 K8s )最开始是由 Google 的工程师设计开发的。Google 作为 Linux 容器技术的早期贡献者之一,曾公开演讲介绍 Google 如何将一切都运行于容器之中。Google 一周内的容器部署超过 20 亿次,全部的工作都由内部平台 Borg 支撑。Borg 是 Kubernetes 的前身,几年来开发 Borg 的经验教训也成了影响 Kubernetes 中许多技术的主要因素。

二、简介

Kubernetes,简称 k8s(k,8个字符,s的组合)或者 “kube”,是一个开源的 Linux 容器自动化运维平台,它消除了容器化应用程序在部署、伸缩时涉及到的许多手动操作。换句话说,你可以将多台主机组合成集群来运行 Linux 容器,而 Kubernetes 可以帮助你简单高效地管理那些集群。构成这些集群的主机还可以跨越公有云、私有云以及混合云。

三、K8s 架构

图1 K8s 架构

各个组件的功能如下所示。

3.1 主节点 master 组件

(1)API Server

集群统一入口,各组件的协调者,提供认证、授权、访问控制、API注册和发现等机制,以 RESTful API 的方式提供接口服务,所有对象资源的增删改查和监听都由 API Server 处理后提交给 Etcd 存储。所有模块之前并不会之间互相调用,而是通过和 API Server 打交道来完成自己那部分的工作。

(2)Etcd

分布式键值存储系统集群,用于保存集群状态数据,如:Pod、Service 等资源对象信息。

另外,Etcd 有一个特性,可以调用它的 API 监听其中的数据,一旦数据发生变化,就会收到通知。有了这个特性之后,K8s 中的每个组件只需要监听 Etcd 中数据,就可以知道自己应该做什么。

(3)Scheduler

负责对集群内部的资源进行调度,相当于调度员的角色,按照预定的调度策略将 Pod 调度到相应的机器上,调度程序根据调度算法为新创建的 Pod 选择一个 Node 节点,可以任意部署,可以部署在同一个节点上,也可以部署在不同的节点上。

(4)Controller Manager

Controller Manager 是 K8s 的管理控制中心,控制器和资源一一对应,负责集群内 Node、Namespace、Service、Token、Replication 等资源对象的管理,使集群内的资源对象维持在预期的工作状态。每一个 controller 通过 api-server 提供的 restful 接口实时监控集群内每个资源对象的状态,当发生故障,导致资源对象的工作状态发生变化,就进行干预,尝试将资源对象从当前状态恢复为预期的工作状态,常见的 controller 有 Namespace Controller、Node Controller、Service Controller、ServiceAccount Controller、Token Controller、ResourceQuote Controller、Replication Controller等。

(5)kubectl

通过 Kubernetes API 与 Kubernetes 集群的控制面进行通信的命令行工具。

3.2 节点 node 组件

(1)Node

Node 是 K8s 集群中的节点,一个 Node 节点对应一台物理机或虚拟机,一个 Node 节点可以运行多个 Pod。

(2)Kubelet

运行在每个计算节点上。通过 API Server 提供的接口监测到 Scheduler 产生的 Pod 绑定事件,然后从 Etcd 获取 Pod 清单,下载镜像并启动容器。同时监视分配给该 节点的 Pods,周期性获取容器状态,再通过 API Server 通知各个组件。

(3)kube-proxy

网络代理程序,在 Node 节点上实现 Pod 网络代理,负责为 Service 提供 Cluster 内部的服务发现、网络规划和负载均衡。

(4)Pod

Pod 是 K8s 最小的操作单元。一个 Pod 代表着集群中运行的一个进程,它内部封装了一个或多个紧密相关的容器。

(5)Container

Container 表示容器,是镜像运行后的实例。

四、常用命令

执行 K8s 命令都是通过 kubectl 工具进行的。

4.1 Node 节点相关命令

(1)查看集群中所有节点

[node@k8s-master ~]$ kubectl get nodes
NAME         STATUS    AGE
k8s-node-1   Ready     50d
k8s-node-2   Ready     50d
[node@k8s-master ~]$

如上所示,K8s 集群中有两个节点 k8s-node-1 和 k8s-node-2。 

(2)查看节点的详细信息

[node@k8s-master ~]$ kubectl get nodes -o wide
NAME         STATUS    AGE       EXTERNAL-IP
k8s-node-1   Ready     50d       <none>
k8s-node-2   Ready     50d       <none>
[node@k8s-master ~]$

(3)删除指定节点

[node@k8s-master ~]$ kubectl delete node k8s-node-1
node "k8s-node-1" deleted
[node@k8s-master ~]$

4.2 Pod 相关命令

(1)列出 Pod 信息

[node@k8s-master demployment]$ kubectl get pods
NAME                    READY   STATUS    RESTARTS   AGE
myapp-6587ffc4b-6t4k4   1/1     Running   0          3m3s
myapp-6587ffc4b-dj887   1/1     Running   0          3m2s
myapp-6587ffc4b-j2jw5   1/1     Running   0          3m3s
myapp-6587ffc4b-p72wn   1/1     Running   0          3m3s
myapp-6587ffc4b-qv4qd   1/1     Running   0          3m2s
myapp-6587ffc4b-wnqmc   1/1     Running   0          3m2s
[node@k8s-master demployment]$

(2)列出 Pod 详细信息

[node@k8s-master demployment]$ kubectl get pods -o wide
NAME                    READY   STATUS    RESTARTS   AGE     IP               NODE         NOMINATED NODE   READINESS GATES
myapp-6587ffc4b-6t4k4   1/1     Running   0          3m45s   10.244.109.71    k8s-node-1   <none>           <none>
myapp-6587ffc4b-dj887   1/1     Running   0          3m44s   10.244.109.68    k8s-node-1   <none>           <none>
myapp-6587ffc4b-j2jw5   1/1     Running   0          3m45s   10.244.109.70    k8s-node-1   <none>           <none>
myapp-6587ffc4b-p72wn   1/1     Running   0          3m45s   10.244.235.193   k8s-master   <none>           <none>
myapp-6587ffc4b-qv4qd   1/1     Running   0          3m44s   10.244.235.194   k8s-master   <none>           <none>
myapp-6587ffc4b-wnqmc   1/1     Running   0          3m44s   10.244.109.69    k8s-node-1   <none>           <none>
[node@k8s-master demployment]$

(3)删除指定 Pod

[node@k8s-master demployment]$ kubectl delete pod myapp-6587ffc4b-6t4k4
pod "myapp-6587ffc4b-6t4k4" deleted
[node@k8s-master demployment]$

五、下期预告

下一篇文章将介绍 K8s 的命名空间,敬请期待!

参考链接:

https://www.cnblogs.com/renshengdezheli/p/16686769.html

k8s介绍及部署方式_k8s部署方式_南城诗客^的博客-CSDN博客

https://www.cnblogs.com/yjf512/p/11187064.html

K8s - Kubernetes重要概念介绍(Cluster、Master、Node、Pod、Controller、Service、Namespace)

云原生架构之【Kubernetes(K8s)】第一部分:技术评估 - 简书


🎈 感觉有帮助记得「一键三连支持下哦!有问题可在评论区留言💬,感谢大家的一路支持!🤞猿哥将持续输出「优质文章回馈大家!🤞🌹🌹🌹🌹🌹🌹🤞


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

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

相关文章

芯片制造详解.净洁室的秘密.学习笔记(三)

这是芯片制造系列的第三期跟学up主三圈&#xff0c;这里对其视频内容做了一下整理和归纳&#xff0c;喜欢的可以看原视频。 芯片制造详解03&#xff1a; 洁净室的秘密&#xff5c;为何芯片厂缺人&#xff1f; 芯片制造详解.净洁室的秘密.学习笔记 三 简介一、干净的级别二、芯片…

ClickHouse(四):ClickHouse分布式搭建及其他

进入正文前&#xff0c;感谢宝子们订阅专题、点赞、评论、收藏&#xff01;关注IT贫道&#xff0c;获取高质量博客内容&#xff01; &#x1f3e1;个人主页&#xff1a;含各种IT体系技术,IT贫道_Apache Doris,Kerberos安全认证,大数据OLAP体系技术栈-CSDN博客 &#x1f4cc;订阅…

Python爬虫实例之淘宝商品页面爬取(api接口)

可以使用Python中的requests和BeautifulSoup库来进行网页爬取和数据提取。以下是一个简单的示例&#xff1a; import requests from bs4 import BeautifulSoupdef get_product_data(url):# 发送GET请求&#xff0c;获取网页内容headers {User-Agent: Mozilla/5.0 (Windows NT…

管理类联考——大纲篇

综合能力考试大纲 Ⅰ、考试性质 综合能力考试是为高等院校和科研院所招收管理类专业学位硕士研究生而设置的具有选拔性质的全国联考科目&#xff0c;其目的是科学、公平、有效地测试考生是否具备攻读专业学位所必须的基本素质、一般能力和培养潜能&#xff0c;评价的标准是高…

python自动化测试+unittets框架

我们整个自动化才是报告的环节基本上分为三个部分&#xff1a; 1.测试用例的准备 2.测试用例的执行 3.测试报告的输出 1.测试用例的准备&#xff1a; 那我们就以搜孤网页做一个简单的用例&#xff1a; from selenium import webdriver import unittest class Case_1(unit…

【随机森林-鸢尾花分类】

1. 引言 随机森林是集成学习中的一颗瑞士军刀&#xff0c;它是一种强大的机器学习算法&#xff0c;常用于分类和回归任务。随机森林集合了“三个臭皮匠&#xff0c;顶个诸葛亮”的智慧&#xff0c;通过组合多个决策树的预测结果&#xff0c;来提高模型的鲁棒性和性能。 2. 随…

学习笔记|大模型优质Prompt开发与应用课(二)|第一节:大模型应用密码—Prompt的一千种打开方式

文章目录 第一节:大模型应用密码—Prompt的一千种打开方式01你可能听过一个小故事1910华盛顿纺织厂罢工事件 02 小问题:哪些场景会被提效类目一︰减少重复性工作的成本&#xff08;降本)例如∶做策划初稿、写JD、润色文案prompt生成结果prompt生成结果prompt生成结果promptprom…

个人博客系统项目进行自动化测试

目录 一、项目界面 二、博客系统自动化测试用例 三、自动化测试 1&#xff09;准备工作 2&#xff09;登录界面测试 测试正确的登录案例 登录界面测试出现问题 测试错误的登录案例 3&#xff09;博客列表界面测试 4&#xff09;博客详情界面测试 5&#xff09;博客编辑…

DEVICENET转ETHERNET/IP网关devicenet协议

捷米JM-EIP-DNT&#xff0c;你听说过吗&#xff1f;这是一款自主研发的ETHERNET/IP从站功能的通讯网关&#xff0c;它能够连接DEVICENET总线和ETHERNET/IP网络&#xff0c;从而解决生产管理系统中协议不同造成的数据交换互通问题。 这款产品在工业自动化领域可谓是一大利器&…

【QT 网络云盘客户端】——主窗口界面的设计

目录 1.设计主窗口界面 2.设置窗口的背景图片 3. 自定义标题栏 3.1 设置toolbutton按钮的图片 3.2 设置按钮的大小 3.3 将自定义标题栏添加设置到主页面中 3.4 去除窗口的原标题栏 3.5 设置按钮颜色 3.6 切换页面功能实现 4.我的文件页面的设计 4.1 菜单栏的设计 4…

插件使用权限管理软件(三)WebAPI项目IIS部署

前言 前面完成了WebAPI项目的接口服务类编写工作&#xff0c;接下来讲把项目部署到服务器的IIS上&#xff0c;让系统运行起来。 一. 项目发布 右键项目RightsManagementSystems.Web.Entry 选择“发布”选项 弹出发布选项界面&#xff0c;选择“文件夹”&#xff0c;点击下一步…

【Android知识笔记】UI体系(一)

Activity的显示原理 setContentView 首先开发者Activity的onCreate方法中通常调用的setContentView会委托给Window的setContentView方法: 接下来看Window的创建过程: 可见Window的实现类是PhoneWindow,而PhoneWindow是在Activity创建过程中执行attach Context的时候创建的…

SystemServer进程

前言 在systemServer启动文章中我们讲了在SystemServer.java的main方法里面调用new SystemServer().run&#xff08;&#xff09;方法启动System_server进程。那么我们接着看一下SystemServer.java具体做了哪些事情&#xff1f; ##SystemServer的run方法介绍 frameworks\base…

VictoriaMetrics

VictoriaMetrics是一个开源的时序数据库和监控解决方案&#xff0c;专门用于存储和查询大规模时间序列数据。它的设计灵感来自Prometheus&#xff0c;但在某些方面与Prometheus有所区别&#xff0c;主要关注于提供高性能、高可用性和低资源占用的特点。 一、与Prometheus区别和…

Kotlin Multiplatform 创建多平台分发库

目标&#xff1a;通过本教程学习如何使用 Kotlin Multiplatform Library 创建多平台分发库(iOS&#xff0c;安卓)。 创建一个项目 1、本教程使用的是Android Studio创建 2、选择 新建工程&#xff0c;选择 Kotlin Multiplatform Library 3、点击next 输入需要创建的项目名称以…

第2章 逻辑分页、AutoFac注入、工作单元与仓储

1 CoreCms.Net.Model.ViewModels.Basics.IPageList<T> namespace CoreCms.Net.Model.ViewModels.Basics { ///<typeparam name"T">泛型类型实例(1个指定实体的类型实例)。</typeparam> /// <summary> /// 【逻辑分页列表--接口】 /// <…

akka 简单使用

由于AKka的核心是Actor&#xff0c;而Actor是按照Actor模型进行实现的&#xff0c;所以在使用Akka之前&#xff0c;有必要弄清楚什么是Actor模型。 Actor模型最早是1973年Carl Hewitt、Peter Bishop和Richard Seiger的论文中出现的&#xff0c;受物理学中的广义相对论(general…

3ds MAX绘制茶壶

综合一下之前的内容画个茶壶 长方形&#xff0c;然后转化为可编辑多边形&#xff0c;添加节点并设置圆角&#xff0c;如下图 车削生成一个圆环&#xff0c;其实这一步也可以用一个圆柱体和两个圆角圆柱体解决 效果如下&#xff1a; 茶壶的底座绘制好了 接下来是茶壶的上半边 …

牛客网面试必刷:CD12 换钱的最少货币数

牛客网面试必刷&#xff1a;CD12 换钱的最少货币数 前言一、动态规划&#xff08;1&#xff09;需要判断钱币和总金额&#xff08;2&#xff09;不需要判断钱币和总金额 前言 问题链接: CD12 换钱的最少货币数 一、动态规划 参考自&#xff1a;【编程题 动态规划】兑换零钱(…

Coremail敏感配置信息泄露

生活是美好的&#xff0c;生命在其间又是如此短促。既然活着&#xff0c;就应该好好地活。应该更珍惜自己生命的每个时刻&#xff0c;精神上的消沉无异于自杀。像往日一样正常的投入生活吧&#xff0c;即便是痛苦&#xff0c;也应该被看做是人的正常情感&#xff0c;甚至它是组…