k8s笔记1- 初步认识k8s

k8s简介:       

         kubernetes,俗称k8是,用于自动部署,扩缩和管理容器化应用程序的开源系统,它将组成应用程序的容器,组合成逻辑单元,便于管理和服务发现。

k8s的作用

        自动化上线和回滚、存储编排、自动装箱、ipv4和ipv6双协议、自我修复、服务发现与负载均衡、secret和配置管理、批量执行、水平扩缩、为扩展性设计

k8s核心组件

  1.  etcd:分布式高性能数据库,key-value的形式存储节点上部署的容器信息等
  2.  api-server:资源操作入口,提供认证、授权、访问控制、api注册和发现等机制
  3.  controller manager:负责维护集群状态、故障检测、自动扩展、滚动更新等
  4.  scheduler:负责资源的调度,按照预定的调度策略将pod调度到相应的节点上
  5.  kubelet:负责维护容器的生命周期和CVI、CNI的管理
  6.  kubectl:在master节点上对k8s集群运行命令

Pod:

        k8s本身是以容器运行在目标机器上,每个k8s节点被称为Node,k8s集群是一组node机器组成的,k8s不直接无操作容器,而是提供了一个pod组件,封装了一组容器,容器都被pod管理。

       Pod是 K8s的最小的可部署的计算单元,它是Kubernetes创建和管理的。一个Pod通常包含一个或者多个容器,这些容器会共享存储、网络资源和运行配置

       可以通过一个YAML或JSON格式的配置文件定义Pod属性,包括容器镜像、环境变量、存储卷等。然后使用Kubernetes API或命令行工具(如kubectl)来创建和管理Pods。

k8s组件创建pod流程

  1. 在master节点写yaml,描述对容器的运行要求,创建pod的要求
  2. 使用kubectl命令创建应用这个资源的描述文件,开始k8s组件交互,把命令发给api-server
  3. api-server 利用本地https证书验证 kubectl请求是否被允许
  4. api-server 将pod创建信息记录到etcd数据库中,如应用的镜像版本、容器名、端口等
  5. api-server通知scheduler准备pod的调度
  6. scheduler调度从etcd中获取pod的部署信息,判断出一个合适的node节点准备部署pod 
  7. scheduler告知api-server决定部署pod的node节点
  8. apiserver将部署信息写入etcd中
  9. api-server通知远程具体的机器去读取etcd中的信息,根据这些信息创建pod

    

YAML语言介绍:

        YAML语言是一个类似xml、json的标志性语言,以数据为中心。 

格式如下:

#yml格式
user:age: 18address: zhengzhou

     YMAL语法:

  1. 大小写敏感
  2. 使用空格缩进表示层级关系,高版本可以使用tab
  3.  缩进空格数不重要,但是同层级的元素需要相同,左对齐
  4.  # 表示注释                                    

数据类型:

        纯量:单个的不可再分的值(字符串、布尔、整数、浮点、null、时间、日期) 

        对象:键值对的集合,又称为映射(mapping)/哈希(hash)/字典(dictionary)

        数组:一组按照次序排列的值,又称为序列(sequence)/列表(list)

纯量

        布尔:true 或false

        整型:整数,例如123、345等

        浮点:小数,例如3.1415926

        null:不写值 或者写~,建议~

        日期:必须使用iso 8601格式,即yyyy-mm-dd

        时间:必须使用iso 8601格式,即2024-01-03T14:47:00+08:00 时间和日期用T链接,+后边是时区

        字符串:直接写值,如果有特殊符号,必须使用单/双引号包裹

对象:

#yml格式对象格式1 -- 推荐
user:age: 18address: zhengzhou#yml格式对象格式2
user: {age: 18,address: zhengzhou}

数组

格式1 -- 推荐
address: -zhengzhou-beijing
--格式2。
address: {zhengzhou,beijing}

一个yml文件如果想写两段yml内容,中间使用 --- 隔开 

address: -zhengzhou-beijing---address: -zhengzhou-beijing

资源管理方式

 1.命令式对象管理:直接使用命令操作Kubernetes资源

        例如:kubectl run nginx-pod --image=nginx:1.17.1 --port=80

kubectl 固定写法 ,要执行的指令,--image=nginx:1.17.1 --port=80 要干的事

2.命令式对象配置:通过命令配置和配置文件去操作Kubernetes资源

        例如:kubectl create/patch -f nginx-pod.yaml

kubectl固定写法 ,create/patch要执行的指令,nginx-pod.yaml通过配置文件执行

3.声明式对象配置:通过apply命令和配置文件去操作Kubernetes资源

kubectl apply -f nginx-pod.yaml  

对比第二条,apply 只能更新或创建资源

类型操作对象适用环境优点缺点
命令式对象管理对象测试简单只能操作对象,无法审计跟踪
命令式对象配置  文件开发可以审计跟踪项目较大时,配置文件会很多,操作麻烦
声明式对象配置目录开发支持目录操作意外情况下难以调试

 命令式对象管理

        kubectl是Kubernetes集群的命令行工具,通过它能够对集群本身进行管理,并能够在集群上进行容器化应用的安装部署

 语法:kubectl [command] [type] [name] [flags]

  •         command:指定要对资源的操作,例如:create get delete
  •         type:指定资源类型,deployment、pod、service
  •         name:指定资源的名称,名称大小写敏感
  •         flags:指定额外可选参数

案例

#创建一个名为 dev的namespace 名称为

kubectl create ns dev

#查看已有namespace

kubectl get ns

#在dev中创建一个nginx 的应用(pod)

kubectl run pod --image=nginx:1.17.1 -n dev

#查看 dev中的pod

kubectl get pod -n dev

#查看创建过程

kubectl describe pods pod -n dev

#删除namespace dev

kubectl delete ns dev

 

 命令式对象配置

1.创建一个nginxpod.yaml,内容如下

apiVersion: v1 
#创建一个 namespcae
kind: Namespace 
#namespcae 名称为dev
metadata: name: dev ---apiVersion: v1 
#创建一个 pod
kind: Pod 
#pod名称为 nginxpod ,在dev的namespace中
metadata: name: nginxpodnamespace: dev 
# pod 中容器的名字是nginx-containers, 镜像为nginx:1.17.1
spac: 
# 注意containers 是一个数组 name和image是一组数据,注意对齐containers:- name: nginx-containersimage: nginx:1.17.1

2.使用create 创建资源

kubectl create -f nginxpod.yaml 

 3.可以使用delete 和配置文件删除 namespace 和 pod

kubectl delete  -f nginxpod.yaml 

声明式对象配置

        使用声明式对象配置就是使用apply描述一个资源的最终状态(yaml)中定义的状态

kubectl apply -f yaml文件

        使用apply操作资源

                如果资源不存在就创建,等同于 kubectl create

                如果资源已存在,就更新,相当于 kubectl patch

root@***:/usr/local/k8code# kubectl delete  -f nginxpod.yaml 
namespace "dev" deleted
pod "nginxpod" deleted
root@***:/usr/local/k8code# kubectl get ns dev
Error from server (NotFound): namespaces "dev" not found
##资源不存在时会直接创建
root@***:/usr/local/k8code# kubectl apply -f nginxpod.yaml 
namespace/dev created
pod/nginxpod created
##资源已存在,但是资源文件没有更新
root@***:/usr/local/k8code# kubectl apply -f nginxpod.yaml 
namespace/dev unchanged
pod/nginxpod unchanged
##做了资源文件更新后可以看到 pod/nginxpod configured 配置有变更
root@***:/usr/local/k8code# vi nginxpod.yaml 
root@***:/usr/local/k8code# kubectl apply -f nginxpod.yaml 
namespace/dev unchanged
pod/nginxpod configured
##使用create 操作已存在资源,会抛出错误
root@***:/usr/local/k8code# kubectl create -f nginxpod.yaml 
Error from server (AlreadyExists): error when creating "nginxpod.yaml": namespaces "dev" already exists
Error from server (AlreadyExists): error when creating "nginxpod.yaml": pods "nginxpod" already exists

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

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

相关文章

Spring中的工厂类、bean的作用范围和生命周期

1.Spring中的工厂类 1.1ApplicationContext ClassPathXmlApplicationContext:加载类路径下 Spring 的配置文件 FileSystemXmlApplicationContext:加载本地磁盘下 Spring 的配置文件 1.1.1service ApplicationContext:只要一读取配置文件…

PyTorch|PyTorch张量解释

神经网络中的输入、输出和转换都使用张量表示,因此,神经网络编程大量使用张量,张量是我们在 PyTorch 中编程神经网络时将使用的数据结构。 关于张量及其维数的简要说明,以及术语: 你有时会看到一个称为向量的一维张量…

[论文分享]TimesURL:通用时间序列表示学习的自监督对比学习

论文题目:TimesURL: Self-supervised Contrastive Learning for Universal Time Series Representation Learning 论文地址:https://arxiv.org/abs/2312.15709 代码地址:暂无 摘要 学习适用于各种下游任务的通用时间序列表示具有挑战性&…

Springboot整合RocketMQ 基本消息处理

目录 1. 同步消息 2. 异步消息 3. 单向消息 4. 延迟消息 5. 批量消息 6. 顺序消息 7. Tag过滤 导入依赖 <dependency><groupId>org.apache.rocketmq</groupId><artifactId>rocketmq-spring-boot-starter</artifactId></dependency> …

14:00面试,14:08就出来了,问的问题过于变态了。。。

从小厂出来&#xff0c;没想到在另一家公司又寄了。 到这家公司开始上班&#xff0c;加班是每天必不可少的&#xff0c;看在钱给的比较多的份上&#xff0c;就不太计较了。没想到10月一纸通知&#xff0c;所有人不准加班&#xff0c;加班费不仅没有了&#xff0c;薪资还要降40…

机器学习原理到Python代码实现之LinearRegression

Linear Regression 线性回归模型 该文章作为机器学习的第一篇文章&#xff0c;主要介绍线性回归模型的原理和实现方法。 更多相关工作请参考&#xff1a;Github 算法介绍 线性回归模型是一种常见的机器学习模型&#xff0c;用于预测一个连续的目标变量&#xff08;也称为响应变…

Spring的bean的生命周期!!!

一.单例模式 单例&#xff1a;[启动容器]--->通过构造方法&#xff08;创建对象&#xff09;---->调用set方法&#xff08;注入&#xff09;--->调用init方法&#xff08;初始化&#xff09;----[容器关闭]----->调用destroy方法&#xff08;销毁&#xff09; app…

死锁的处理策略“检测和解除”-第三十九天

目录 前言 死锁的检测 数据结构资源分配图 基于“图”检测死锁 可以消除所有边 不能消除所有边 结论 死锁定理 死锁的解除 本节思维导图 前言 如果系统中既不采取预防死锁的措施&#xff0c;也不采取避免死锁的措施&#xff0c;系统就很可能发生死锁&#xff0c;在这种…

西电期末1019.校验和计算

一.题目 二.分析与思路 难点在于逐个取出数据的每一位&#xff0c;我们编写f函数&#xff0c;使用了一个while函数&#xff0c;每次循环中用取余的运算符找到数据的个位累加&#xff0c;再将n/10&#xff0c;如此n便被去除了个位&#xff0c;十位就成了新的个位&#xff0c;最…

案例精选|淄博绿能燃气工程有限公司日志审计系统建设方案

淄博绿能燃气工程有限公司&#xff0c;成立于1994年&#xff0c;前身为淄博市煤气公司管道液化气分公司。公司业务主要涉及天然气、液化气等市政工程施工及城镇燃气供应等领域&#xff0c;具有市政公用工程施工总承包二级资质&#xff0c;《压力管道安装许可证》压力管道安装GB…

利用Embedding优化搜索功能

我们继续用Gemini学习LLM编程之旅。 Embedding是一种自然语言处理 (NLP) 技术&#xff0c;可将文本转换为数值向量。Embedding捕获语义含义和上下文&#xff0c;从而导致具有相似含义的文本具有更接近的Embedding。例如&#xff0c;句子“我带我的狗去看兽医”和“我带我的猫去…

LeetCode---378周赛

题目列表 2980. 检查按位或是否存在尾随零 2981. 找出出现至少三次的最长特殊子字符串 I 2982. 找出出现至少三次的最长特殊子字符串 II 2983. 回文串重新排列查询 一、检查按位或是否存在尾随零 这题和位运算有关&#xff0c;不是很难&#xff0c;题目要求至少有两个数的…

案例073:基于微信小程序的智慧旅游平台开发

文末获取源码 开发语言&#xff1a;Java 框架&#xff1a;SSM JDK版本&#xff1a;JDK1.8 数据库&#xff1a;mysql 5.7 开发软件&#xff1a;eclipse/myeclipse/idea Maven包&#xff1a;Maven3.5.4 小程序框架&#xff1a;uniapp 小程序开发软件&#xff1a;HBuilder X 小程序…

用贪心算法编程求解任务安排问题

题目&#xff1a;用贪心算法编程求解以下任务安排问题 一个单位时间任务是恰好需要一个单位时间完成的任务。给定一个单位时间任务的有限集S。关于S的一个时间表用于描述S中单位时间任务的执行次序。时间表中第1个任务从时间0 开始执行直至时间1 结束&#xff0c;第2 个任务从时…

20240104确认AIO-3399J的开发板适配ov13850摄像头不支持4K分辨率录像

20240104确认AIO-3399J的开发板适配ov13850摄像头不支持4K分辨率录像 2024/1/4 13:23 开发板&#xff1a;Firefly的AIO-3399J【RK3399】 SDK&#xff1a;rk3399-android-11-r20211216.tar.xz【Android11】 Android11.0.tar.bz2.aa【ToyBrick】 Android11.0.tar.bz2.ab Android1…

人工智能如何重塑金融服务业

在体验优先的世界中识别金融服务业中的AI使用场景 人工智能&#xff08;AI&#xff09;作为主要行业的大型组织的重要业务驱动力&#xff0c;持续受到关注。众所周知&#xff0c;传统金融服务业在采用新技术方面相对滞后&#xff0c;一些组织使用的还是上世纪50年代和60年代发…

Android Jetpack学习系列——Navigation

写在前面 Google在2018年就推出了Jetpack组件库&#xff0c;但是直到今天我才给重视起来&#xff0c;这真的不得不说是一件让人遗憾的事。过去几年的空闲时间里&#xff0c;我一直在尝试做一套自己的组件库&#xff0c;帮助自己快速开发&#xff0c;虽然也听说过Jetpack&#…

Android如何正确使用 Canvas 的 save() 和 restore() 方法

如何正确使用 Canvas 的 save() 和 restore() 方法 在Android的绘图API中&#xff0c;Canvas类提供了一系列强大的功能来绘制自定义视图。为了更高效地管理绘图状态和变换&#xff0c;Canvas类提供了save()和restore()方法。正确使用这些方法是高效绘图和避免常见错误的关键。 …

任务需求分析中的流程图、用例图、er图、类图、时序图线段、图形的作用意义

任务需求分析中的流程图、用例图、er图、类图、时序图线段、图形的作用意义 流程图 流程图中各种图形的含义及用法解析 连接线符号 连接各要素&#xff0c;表示流程的顺序或过程的方向。 批注符号 批注或说明&#xff0c;也可以做条件叙述。 子流程 流程中一部分图形的逻辑…

机器人动力学一些笔记

动力学方程中&#xff0c;Q和q的关系(Q是sita) Q其实是一个向量&#xff0c;q(Q1&#xff0c;Q2&#xff0c;Q3&#xff0c;Q4&#xff0c;Q5&#xff0c;Q6)&#xff08;假如6个关节&#xff09; https://zhuanlan.zhihu.com/p/25789930 举个浅显易懂的例子&#xff0c;你在房…