k8s的陈述式资源管理(命令行操作)

(一)k8s的陈述式资源管理

1、命令行:kubectl命令行工具——用于一般的资源管理

1优点:90%以上ce场景都可以满足
2特点:对资源的增、删、查比较方便,对改不是很友好
3缺点:命令比较冗长,复杂,难记

2、声明式:k8s当中的yaml文件来实现资源管理——用于配置部署服务

3、GUI:图形化工具的管理

(二)kubectl命令的详解:查看、部署、查看pod的情况(详细信息和日志,发布和回滚)

kubectl命令的详解

kubectl命令行大全:http://docs.kubernetes.org.cn/683.html

先声明动作:create、delete、get、describe

对象:ns、pod、service

对象的名称:hyde nginx

查看

查看版本

kubectl version

查看所有api的资源对象的名称

kubectl api-resources

查看k8s的集群信息

kubectl cluster-info

基本信息查看:

查看master节点的状态

kubectl get cs

查看默认命令空间内的pod信息

kubectl get pod/pods

查看当前集群的所有命名空间

kubectl get ns

查看指定命名空间内的pod信息

kubectl get pod -n kube-system命名空间的名称

查看默认命名空间内pod的详细信息(IP、节点信息)

kubectl get pod -o wide

查看指定命名空间内pod的详细信息

kubectl get pod -o wide -n kube-system

查看node节点的信息和状态

kubectl get nodes/node

查看node节点的详细信息

kubectl get node -o wide

查看已经部署好的pod的详细信息

kubectl describe pod nginx-6799fc88d8-89g2npod的名称

查看指定命名空间内pod的详细信息

kubectl describe pod -n kube-system etcd-master

查看pod的日志

kubectl logs nginx-6799fc88d8-89g2n

动态查看pod的日志

kubectl logs -f nginx-6799fc88d8-89g2n

查看指定命名空间内的日志

kubectl logs -n kube-system etcd-master

创建命名空间

kubectl create ns hyde

删除命名空间

kubectl delete ns hyde

删除pod

kubectl delete pod nginx-6799fc88d8-89g2npod名称)——实际上并没有删除

deployment的部署pod

deployment部署的方式:陈述式部署(命令行)、声明式部署(yml文件)

deployment部署的特点:

①滚动更新:不是一次性的把所有pod全部部署,而是一个一个来,pod更新时使用,逐步的引入新的pod,逐步的减少旧的pod

②自我修复:如果有pod节点发生故障,deployment会自动启动新的pod来进行代替,如果更新有问题,deployment会提供还原点,可以手动还原到未更新前的状态

③扩容和缩容:deployment可以随时调整pod的数量,以适应流量的变化

* 上述的功能必须是基于deployment创建的服务才可以,大多数的pod都是使用deployment创建的

* 基于deployment创建的pod,或者是daemonset方式创建的pod,是由控制器创建的pod,使用delete删除pod是删除不掉,相当于重启pod

查看命名空间内通过deployment创建的pod

kubectl get deployments

查看指定命名空间内通过deployment创建的pod

kubectl get deployments -n kube-system

查看命名空间内通过daemonset创建的pod

kubectl get daemonsets

查看指定命名空间内通过daemonset创建的pod

kubectl get daemonsets -n kube-system

* daemonset部署不能通过命令行创建,只能在yml文件中定义这种创建方式。

* daemonset后台运行创建,在每个节点上都创建一个相同方式的,相同版本的容器运行的pod,一般都是依赖环境和重要组件,一般也不会对这些资源进行操作

创建deployment副本

kubectl create deployment nginx-dn --image=nginx

在指定命名空间创建deployment

kubectl create deployment nginx-dn --image=nginx --replicas=3 -n hyde

删除pod(一旦删除deployment,基于deployment创建的pod都会被删除)——慎用

kubectl delete deployments.apps nginx-dn -n hyde

不是基于控制器deployment创建的pod,用delete可以直接删除

kubectl run nginx2 --image=nginx很少使用

kubectl delete pod nginx2

远程进入节点容器

kubectl exec -it nginx-6799fc88d8-blx25 bash

docker的exec只能在本机内部使用,不能跨主机,kubectl的exec可以跨主机进入容器

指定命名空间进入容器

kubectl exec -it  nginx-6799fc88d8-4zqld bash -n hyde

kubectl delete pod nginx1-6f54f4bd96-gmkdb --force --grace-period=0

主要用于结束卡在Terminating销毁状态的pod

grace-period

表示过度的存活期,默认是30秒,可以让pod优雅的结束容器内的进程,然后退出pod;0表示立刻停止pod,必须要force

对基于deployment创建的pod进行扩容和缩容:

扩容

kubectl scale deployment nginx-dn --replicas=3

缩容

kubectl scale deployment nginx-dn --replicas=1

发布服务的service:

service的类型:生产中用ExternalName做域名映射+NodePort对外提供访问

ClusterIP

创建service的默认类型,提供一个集群内部的虚拟IP地址,这是service的默认类型,通过这个虚拟IP可以直接访问pod 的资源,无法对外提供访问

NodePort

会在每一个node节点上都开放一个相同的端口,外部可以通过node的本机IP+端口,访问pod资源(集群外部访问service的一种方式,四层代理方式),访问方式是nodeip:nodeport,nodeport可以随机指派,也可以指定(范围30000-32767)

LoadBalancer

如果service的类型设定为LoadBalancer,映射地址(云平台提供LoadBalancer的地址),这种用法仅用于公有云服务供应商在云平台上设置的service的场景,外部来访问,实现负载均衡,LoadBalancer的地址是要付费的。创建好了service,指定类型为LoadBalancer,会给你提供一个地址来代理pod内部的IP地址

ExternalName

DNS映射,给service分配一个域名,通过域名来访问后端的pod资源,ExternalName的service类型,不能提供负载均衡,必须要设置一个LoadBalancer的地址才能实现

查看集群中的service

kubectl get svc

删除service

kubectl delete svc nginx

查看指定命名空间的service

kubectl get svc -n kube-system

①创建pod:kubectl create deployment nginx --image=nginx:1.10 --replicas=3

②基于deployment创建service:

kubectl expose deployment nginx --port=80 --target-port=80 --name=nginx-service --type=NodePort

* --port=80:service集群内部的端口,是service和容器映射的端口,任意

* --target-port=80:pod内部容器的端口

NodePort  10.96.112.70:集群内部的IP地址,外部可不易访问这个IP地址

80:32168/TCP

* 80:对应的内部的service的端口

* 32168:和内部的service的80端口做映射(本机的端口)

③实现负载均衡:

④修改service中nodeport的地址:

更新和回滚,以及发布的方式:

项目的生命周期:创建——发布——更新——回滚——删除

更新

kubectl set image deployment nginx nginx=nginx:1.20

curl -I 20.0.0.71:31000

回滚

①查看回滚点:kubectl rollout history deployment nginx

②记录回滚点变更:kubectl set image deployment nginx nginx=:1.15 --record

③回滚:kubectl rollout undo deployment nginx --to-revision=2

查看回滚的状态

kubectl rollout status deployment nginx

②kubectl get pod -w:动态查看pod的更新情况

查看集群内部的所有信息

kubectl get all

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

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

相关文章

如何使用idea部署springboot项目全过程

博主介绍: ✌至今服务客户已经1000、专注于Java技术领域、项目定制、技术答疑、开发工具、毕业项目实战 ✌ 🍅 文末获取源码联系 🍅 👇🏻 精彩专栏 推荐订阅 👇🏻 不然下次找不到 Java项目精品实…

Adobe 设计精髓:创新的用户体验 | 开源日报 No.130

adobe/react-spectrum Stars: 10.1k License: Apache-2.0 React Spectrum Libraries 是一系列的库和工具,旨在帮助开发者构建适应性强、可访问性好且稳健的用户体验。 核心优势: 提供全面的可访问性和行为支持,符合 WAI-ARIA 编写实践&…

vcpkg 安装开源包 以及 配置 已解决

Vcpkg 可帮助您在 Windows、 Linux 和 MacOS 上管理 C 和 C 库。 这个工具和生态链正在不断发展,我们一直期待您的贡献! 若您从未使用过 vcpkg,或者您正在尝试了解如何使用 vcpkg,请查阅 入门 章节。 如需获取有关可用命令的简短…

大创项目推荐 深度学习乳腺癌分类

文章目录 1 前言2 前言3 数据集3.1 良性样本3.2 病变样本 4 开发环境5 代码实现5.1 实现流程5.2 部分代码实现5.2.1 导入库5.2.2 图像加载5.2.3 标记5.2.4 分组5.2.5 构建模型训练 6 分析指标6.1 精度,召回率和F1度量6.2 混淆矩阵 7 结果和结论8 最后 1 前言 &…

Animate 2024(Adobe an2024)

Animate 2024是一款由Adobe公司开发的动画和互动内容创作工具,是Flash的演进版本。Animate 2024为设计师和开发者提供了更丰富的功能,让他们能够创建各种类型的动画、交互式内容和多媒体应用程序。 Animate 2024具有以下特点: 强大的设计工…

k8s的资源管理

命令行: kubectl命令行工具优点: 90%以上的场景都可以满足 对资源的增,删,查比较方便,对改不是很友好缺点:命令比较冗长,复杂难记 声明方式:k8s当中的yaml文件实现资源管理----声明式GUI:图形化工具的管理。 查看k8s的…

PiflowX组件-WriteToKafka

WriteToKafka组件 组件说明 将数据写入kafka。 计算引擎 flink 有界性 Streaming Append Mode 组件分组 kafka 端口 Inport:默认端口 outport:默认端口 组件属性 名称展示名称默认值允许值是否必填描述例子kafka_hostKAFKA_HOST“”无是逗号…

使用Commons JXPath简化XML/JSON处理

第1章:引言 咱们都知道,在现代软件开发中,处理XML和JSON数据几乎是家常便饭。这两种格式广泛应用于配置文件、数据交换、API响应等领域。不过,要手动解析和操作它们,有时候真是让人头大。 当你面对一堆复杂的XML或JS…

JavaSE语法之十一:接口(超全!!!)

文章目录 1. 概念2. 语法规则3. 接口使用4. 接口特性5. 实现多个接口6. 接口间的继承7. 接口使用实例8. Clonable 接口和深拷贝9. 抽象类和接口的区别(重要!) 1. 概念 在现实生活中的接口比比皆是,如:笔记本上的USB接…

Flink 输出至 Elasticsearch

【1】引入pom.xml依赖 <dependency><groupId>org.apache.flink</groupId><artifactId>flink-connector-elasticsearch6_2.12</artifactId><version>1.10.0</version> </dependency>【2】ES6 Scala代码&#xff0c;自动导入的…

私有部署ELK,搭建自己的日志中心(五)-- 使用filebeat采集K8S pod的jvm日志

一、背景 前文采集的日志是来源于虚拟机&#xff0c;在云原生下的容器化部署时&#xff0c;需要采集Pod里的jvm日志。 二、术语 1、临时存储emptyDir emptyDir在Pod被分配到Node时创建的&#xff0c;它的初始内容为空&#xff0c;并且无须指定宿主机上对应的目录文件&#…

分布式系统架构设计之分布式系统架构演进和版本管理

在分布式系统的生命周期中&#xff0c;架构演进和版本管理是很重要的两个环节。本部分会介绍分布式系统架构演进的原则、策略以及版本管理的最佳实践&#xff0c;以帮助研发团队更好地应对需求变化、技术发展和系统升级。 架构演进 演进原则 渐进式演进 采用渐进式演进的原…

VsCode(Visual Studio Code) 安装插件教程

VsCode&#xff08;Visual Studio Code&#xff09; 安装插件教程 1、打开VsCode 桌面上、最近安装程序上找找吧 在桌面上双击&#xff0c;打开 2、打开的效果图 3、点击左侧最后的插件图标 4、打开后如下图所示 5、在输入框中输入Go 6、同样在安装插件页面也可以卸载、安装…

WPF 显示气泡提示框

气泡提示框应用举例 有时候在我们开发的软件经常会遇到需要提示用户的地方&#xff0c;为了让用户更直观&#xff0c;快速了解提示信息&#xff0c;使用简洁、好看又方便的气泡提示框显得更加方便&#xff0c;更具人性化。如下面例子&#xff1a;(当用户未输入账号时&#xff0…

抬头举手阅读YOLOV8NANO

首先用YOLOV8NANO得到PT模型&#xff0c;转换成ONNX,OPENCV调用&#xff0c;PYTHON,C,ANDROID都可以举手写字阅读YOLOV8NANO

android studio 将含有jni c++ 的library项目封装成jar并调用

请参考博客&#xff1a;android studio 4.1.1 将library项目封装成aar 并调用_android studio 4.1 aar release-CSDN博客 一 . 简单叙述 android studio 中可以创建Module 的两种属性&#xff0c;可以在build.gradle 中查看&#xff1a; 1. application属性&#xff1a;可以独…

DM、Oracle、GaussDB、Kingbase8(人大金仓数据库)和HIVE给列增加注释

DM数据库给列增加注释 1、创建表 CREATE TABLE test222 ( id int NOT NULL PRIMARY KEY, name varchar(1000) DEFAULT NULL, email varchar(1000) DEFAULT NULL, phone varchar(1000) DEFAULT NULL ) 2、给列添加注释 comment on column TEST222.NAME is 这是一个列注释; 例如…

[Angular] 笔记 17:提交表单 - ngSubmit

Submitting Forms (ngSubmit) 表单的一般完整写法&#xff1a; 如果表单验证失败&#xff0c;必须 disable 提交按钮&#xff0c;阻止用户提交不合法的数据。 提交表单后&#xff0c;与表单对应的 json 数据 post 到后端&#xff1a; {"id":1,"name":…

【Week-P3】CNN天气识别

文章目录 一、环境配置二、准备数据三、搭建网络结构四、开始训练五、查看训练结果六、总结6.1 不改变学习率的前提下&#xff0c;将训练epoch分别增加到50、60、70、80、90&#xff08;1&#xff09;epoch 50 的训练情况如下&#xff1a;&#xff08;2&#xff09;epoch 60 …

JAVA B/S架构智慧工地源码,PC后台管理端、APP移动端

智慧工地系统充分利用计算机技术、互联网、物联网、云计算、大数据等新一代信息技术&#xff0c;以PC端&#xff0c;移动端&#xff0c;设备端三位一体的管控方式为企业现场工程管理提供了先进的技术手段。让劳务、设备、物料、安全、环境、能源、资料、计划、质量、视频监控等…