修炼k8s+flink+hdfs+dlink(四:k8s(一)概念)

一:概念

1. 概述

1.1 kubernetes对象.

k8s对象包含俩个嵌套对象字段。
spec(规约):期望状态
status(状态):当前状态
当创建对象的时候,会按照spec的状态进行创建,如果这些实例中有些失败了。那么会重新启动一个新的来替换这个实例。

对象样例
按照规定,app要求主体是json格式。但是也可以使用YAML清单格式,后续通过http访问app的时候,会将信息转化位JSON格式或者其他受支持的序列化格式。

apiVersion: apps/v1
kind: Deployment
metadata:name: nginx-deployment
spec:selector:matchLabels:app: nginxreplicas: 2 # 告知 Deployment 运行 2 个与该模板匹配的 Podtemplate:metadata:labels:app: nginxspec:containers:- name: nginximage: nginx:1.14.2ports:- containerPort: 80
  • apiVersion - 创建该对象所使用的 Kubernetes API 的版本

  • kind - 想要创建的对象的类别

  • metadata - 帮助唯一标识对象的一些数据,包括一个 name 字符串、UID 和可选的 namespace

  • spec - 你所期望的该对象的状态

1.1.1 对象的管理(增删)

三种模式
在这里插入图片描述

  1. 指令式命令
    案例:通过创建 Deployment 对象来运行 nginx 容器的实例。
kubectl create deployment nginx --image nginx

权衡
与对象配置相比的优点:

  1. 命令用单个动词表示。
  2. 命令仅需一步即可对集群进行更改。

与对象配置相比的缺点:

  • 命令不与变更审查流程集成。
  • 命令不提供与更改关联的审核跟踪。
  • 除了实时内容外,命令不提供记录源。
  • 命令不提供用于创建新对象的模板。
  1. 指令式对象配置
    创建对象
kubectl create -f nginx.yaml

删除俩个对象

kubectl delete -f nginx.yaml -f redis.yaml

通过覆盖活动配置来更新配置文件中定义的对象

kubectl replace -f nginx.yaml

权衡
与指令式命令相比的优点:

对象配置可以存储在源控制系统中,比如 Git。
对象配置可以与流程集成,例如在推送和审计之前检查更新。
对象配置提供了用于创建新对象的模板。

与指令式命令相比的缺点:

对象配置需要对对象架构有基本的了解。
对象配置需要额外的步骤来编写 YAML 文件。

与声明式对象配置相比的优点:

指令式对象配置行为更加简单易懂。
从 Kubernetes 1.5 版本开始,指令对象配置更加成熟。

与声明式对象配置相比的缺点:

指令式对象配置更适合文件,而非目录。
对活动对象的更新必须反映在配置文件中,否则会在下一次替换时丢失。

  1. 声明式对象配置
    案例
    处理 configs 目录中的所有对象配置文件,创建并更新活跃对象。 可以首先使用 diff 子命令查看将要进行的更改,然后在进行应用:
kubectl diff -f configs/
kubectl apply -f configs/

递归处理目录:

kubectl diff -R -f configs/
kubectl apply -R -f configs/

权衡
与指令式对象配置相比的优点:

对活动对象所做的更改即使未合并到配置文件中,也会被保留下来。
声明性对象配置更好地支持对目录进行操作并自动检测每个文件的操作类型(创建,修补,删除)。

与指令式对象配置相比的缺点:

声明式对象配置难于调试并且出现异常时结果难以理解。
使用 diff 产生的部分更新会创建复杂的合并和补丁操作。

1.1.2 对象名称和ID。

对象名称
三种命名规则
DNS 子域名

很多资源类型需要可以用作 DNS 子域名的名称。 DNS 子域名的定义可参见 RFC 1123。 这一要求意味着名称必须满足如下规则:

不能超过 253 个字符
只能包含小写字母、数字,以及 ‘-’ 和 ‘.’
必须以字母数字开头
必须以字母数字结尾

RFC 1123 标签名

某些资源类型需要其名称遵循 RFC 1123 所定义的 DNS 标签标准。也就是命名必须满足如下规则:

最多 63 个字符
只能包含小写字母、数字,以及 ‘-’
必须以字母数字开头
必须以字母数字结尾

RFC 1035 标签名

某些资源类型需要其名称遵循 RFC 1035 所定义的 DNS 标签标准。也就是命名必须满足如下规则:

最多 63 个字符
只能包含小写字母、数字,以及 ‘-’
必须以字母开头
必须以字母数字结尾

ID
k8s会对整个生命周期中创建的每一个对象都有不同的UID。

1.1.3 标签和选择算符。

标签
定义
标签是附加到kubenetes对象上的键值对。标签在用于指定的用户有意义且相关的对象的标识属性,但不对核心系统有语义含义。
标签使用户能够以松散耦合的方式将他们自己的组织结构映射到系统对象,而无需客户端存储这些映射。
标签能够支持高效的查询和监听操作,对于用户界面和命令行是很理想的
规则
必须为 63 个字符或更少(可以为空)
除非标签值为空,必须以字母数字字符([a-z0-9A-Z])开头和结尾
包含破折号(-)、下划线(_)、点(.)和字母或数字
选择运算符
用户外面根据标签进行选择。
等值需求 =(等于)、==(等于) 和 !=(不等于)
基于集合 in、notin 和 exists

1.1.4 命名空间。

名字空间(Namespace) 提供一种机制,将同一集群中的资源划分为相互隔离的组。
k8s在启动的时候会有四个初始化名字空间
default
Kubernetes 包含这个名字空间,以便于你无需创建新的名字空间即可开始使用新集群。
kube-node-lease
该名字空间包含用于与各个节点关联的 Lease(租约)对象。 节点租约允许 kubelet 发送心跳, 由此控制面能够检测到节点故障。
kube-public
所有的客户端(包括未经身份验证的客户端)都可以读取该名字空间。 该名字空间主要预留为集群使用,以便某些资源需要在整个集群中可见可读。 该名字空间的公共属性只是一种约定而非要求。
kube-system
该名字空间用于 Kubernetes 系统创建的对象。

增加命名空间

要为当前请求设置名字空间,请使用 --namespace 参数。
kubectl run nginx --image=nginx --namespace=<名字空间名称>
kubectl get pods --namespace=<名字空间名称>

1.1.5 注释。

apiVersion: v1
kind: Pod
metadata:name: annotations-demoannotations:imageregistry: "https://hub.docker.com/"
spec:containers:- name: nginximage: nginx:1.14.2ports:- containerPort: 80

annotations:
imageregistry: “https://hub.docker.com/”

1.1.6 字段选择器。

允许你根据一个或多个资源字段的值筛选 Kubernetes 对象。
语法 一:=、== 和 != (= 和 == 的意义是相同的)操作符

kubectl get pods --field-selector status.phase=Running

语法二:链式选择器,使用’,‘隔开。

kubectl get pods --field-selector=status.phase!=Running,spec.restartPolicy=Always

1.1.7 Finalizers。

Finalizer 是带有命名空间的键,告诉 Kubernetes 等到特定的条件被满足后, 再完全删除被标记为删除的资源。
当你使用清单文件创建资源时,你可以在 metadata.finalizers 字段指定 Finalizers。

1.1.8 属主合附属。

在 Kubernetes 中,一些对象是其他对象的“属主(Owner)。一个有效的属主引用, 包含与附属对象同在一个命名空间下的对象名称和一个 UID。 Kubernetes 自动为一些对象的附属资源设置属主引用的值。

metadata.ownerReferences
附属对象有一个 metadata.ownerReferences 字段,用于引用其属主对象。一个有效的属主引用。

ownerReferences.blockOwnerDeletion
附属对象还有一个 ownerReferences.blockOwnerDeletion 字段,该字段使用布尔值, 用于控制特定的附属对象是否可以阻止垃圾收集删除其属主对象

1.1.9 共享标签。

除了 kubectl 和 dashboard 之外,你还可以使用其他工具来可视化和管理 Kubernetes 对象。 一组通用的标签可以让多个工具之间相互操作,用所有工具都能理解的通用方式描述对象。

在这里插入图片描述

# 这是一段节选
apiVersion: apps/v1
kind: StatefulSet
metadata:labels:app.kubernetes.io/name: mysqlapp.kubernetes.io/instance: mysql-abcxzyapp.kubernetes.io/version: "5.7.21"app.kubernetes.io/component: databaseapp.kubernetes.io/part-of: wordpressapp.kubernetes.io/managed-by: helm

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

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

相关文章

Hadoop3教程(四):HDFS的读写流程及节点距离计算

文章目录 &#xff08;55&#xff09;HDFS 写数据流程&#xff08;56&#xff09; 节点距离计算&#xff08;57&#xff09;机架感知&#xff08;副本存储节点选择&#xff09;&#xff08;58&#xff09;HDFS 读数据流程参考文献 &#xff08;55&#xff09;HDFS 写数据流程 …

【Vue 2】Props

Prop大小写 Prop的命名规则有camelCase&#xff0c;驼峰命名和kebab-case&#xff0c;短横线分隔。 由于HTML对大小写不敏感&#xff0c;所以浏览器会把大写字母解释为小写字母。 当我们使用camelCase命名prop时&#xff0c;在Dom中的template模板使用该prop就需要换成对应的…

Leetcode刷题详解——盛最多水的容器

1.题目链接&#xff1a;盛最多水的容器 2.题目描述&#xff1a; 给定一个长度为 n 的整数数组 height 。有 n 条垂线&#xff0c;第 i 条线的两个端点是 (i, 0) 和 (i, height[i]) 。 找出其中的两条线&#xff0c;使得它们与 x 轴共同构成的容器可以容纳最多的水。 返回容…

修改http_charfinder.py使能在python311环境中运行

需要修改两个函数&#xff0c;第一个是init函数&#xff0c;修改如下&#xff1a; async def init(loop, address, port): # <1> # app web.Application(looploop) # <2> # app.router.add_route(GET, /, home) # <3> app web.Application(…

企业级CI/CD 持续集成/交付/发布

jenkins 安装与使用 nmcli g hostname jenkins 加载缓存 yum makecache fast 上传jdk11、jdk8 获取、上传war包 1、jenkins.io/download 2.4.27 2、老师发的 上传 maven 上传tomcat软件包 &#xff08;apache.org-tomcat8-下载&#xff09; 注意8009端口 /usr... vi /etc/pro…

Redis 图形化界面下载及使用超详细教程(带安装包)! redis windows下客户端下载

另一个完全不同的redis图形化界面教程链接&#xff08;带安装包&#xff09;&#xff1a; Redis 最流行的图形化界面下载及使用超详细教程&#xff08;带安装包&#xff09;&#xff01; redis windows客户端下载_dream_ready的博客-CSDN博客 redis图形化界面的压缩包&#xff…

18.(开发工具篇Gitlab)Git如何回退到指定版本

首先: 使用git log命令查看提交历史,找到想要回退的版本的commit id. 使用git reset命令 第一步:git reset --hard 命令是强制回到某一个版本。执行后本地工程回退到该版本。 第二步:利用git push -f命令强制推到远程 如下所示: 优点:干净利落,回滚后完全回到最初状态…

Leetcode刷题笔记--Hot61-70

1--课程表&#xff08;207&#xff09; 主要思路&#xff1a; 用 in 记录每一门课程剩余的先修课程个数&#xff0c;当剩余先修课程个数为0时&#xff0c;将该课程加入到队列q中。 每修队列q中的课程&#xff0c;以该课程作为先修课程的所有课程&#xff0c;其剩余先修课程个数…

K8S云计算系列-(3)

K8S Kubeadm案例实战 Kubeadm 是一个K8S部署工具&#xff0c;它提供了kubeadm init 以及 kubeadm join 这两个命令来快速创建kubernetes集群。 Kubeadm 通过执行必要的操作来启动和运行一个最小可用的集群。它故意被设计为只关心启动集群&#xff0c;而不是之前的节点准备工作…

12.JVM

一.JVM类加载机制:把类从硬盘文件加载到内存中 1.java文件,编写时是一个.java文件,编译后现成一个.class的字节码文件,运行的时候,JVM就会读取.class文件,放到内存中,并且构造类对象. 2.类加载流程: a.加载:找到.class文件,打开文件,读取内容,尝试解析文件内容. b.验证:检查…

GIS小技术分享(一):python中json数据转geojson或者shp

1.环境需求 geopandspandasshapelyjsonpython3 2.输入数据&#xff08;path字段&#xff0c;线条&#xff09; [{"id": "586A685D568311B2A16F33FCD5055F7B","name": "普及江","path": "[[116.35178835446628,23.57…

Android Handler/Looper视角看UI线程的原理

概述 Handler/Looper机制是android系统非重要且基础的机制&#xff0c;即使在rtos或者linux操作系统上开发应用框架时&#xff0c;也经常借鉴这个机制。通过该机制机制可以让一个线程循环处理事件&#xff0c;事件处理逻辑即在Handler的handleMessge种。本文建议android8.1源码…

JVM基础:初识JVM

IDE&#xff1a;IntelliJ IDEA 2022.1.3 x64 操作系统&#xff1a;win10 x64 位 家庭版 文章目录 一、JVM是什么&#xff1f;二、JVM有哪些功能&#xff1f;2.1 解释和运行2.2 内存管理2.3 即时编译 三、有哪些常见的JVM&#xff1f;3.1 常见JVM3.2 Java虚拟机规范3.3 HotSpot的…

Mongodb----部署副本集 实现读写分离

使用软件&#xff1a; xshell7 vmware16 centos8 nosql booster 1 部署副本集 推荐方案&#xff1a; 为了降低资源分配&#xff0c;这里仅使用一台服务器&#xff0c;但是分配3个端口&#xff08;27017、27018、27019&#xff09;来分别实现 主节点、副本节点…

【软考-中级】系统集成项目管理工程师-立项管理历年案例

持续更新。。。。。。。。。。。。。。。 目录 2023 上 试题一(18分) 2023 上 试题一(18分) A公司跨国收购了B公司的主营业务&#xff0c;保留了B公司原有的人员组织结构和内部办公系统。 为了解决B公司内部办公系统与A公司原有系统不兼容的问题&#xff0c;财务、人力和行政部…

深入浅出ThreadPoolExecutor(一)

文章目录 线程池简诉ThreadPoolExecutor详解ThreadPoolExecutor参数详解创建线程池的工具类Executors 线程池简诉 针对各种池子,比如 连接池:用于管理和重复使用数据库连接&#xff0c;避免频繁创建和销毁数据库连接带来的性能开销。对象池&#xff1a;用于管理和重复使用对象…

Linux shell编程学习笔记12:布尔运算和逻辑运算

Linux Shell 脚本编程和其他编程语言一样&#xff0c;支持算数、关系、布尔、逻辑、字符串、文件测试等多种运算。前面几节我们陆续研究了 Linux shell编程 中的 字符串运算、算术运算和关系运算&#xff0c;今天我们来研究 Linux shell编程中的的布尔运算、逻辑运算。 一、…

LENOVO联想笔记本小新 Pro-14 2021AMD处理器ACH版(82MS)原厂Win10系统

下载链接&#xff1a;https://pan.baidu.com/s/1-KZ8Y9NmkS7nDXcMbhZLHw?pwdyrkx 系统自带所有驱动、出厂主题壁纸、系统属性专属LOGO标志、Office办公软件、lenovo联想电脑管家等预装程序 所需要工具&#xff1a;16G或以上的U盘 文件格式&#xff1a;ISO 文件大小&#xff1…

kafka广播消费组停机后未删除优化

背景 kafka广播消息的时候为了保证groupId不重复&#xff0c;再创建的时间采用前缀时间戳的形式&#xff0c;这样可以保证每次启动的时候是创建的新的&#xff0c;但是 会出现一个问题&#xff1a;就是每次停机或者重启都会新建一个应用实例&#xff0c;关闭应用后并不会删除…