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

2024-01-02 10:04

本文主要是介绍k8s陈述式资源管理(命令行),希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

1、资源管理

(1)陈述式资源管理(常用——查、增)

使用kubectl工具进行命令行管理

①特点:对资源的增删查比较方便,对改不友好

②优点:90%以上的场景都可以满足

③缺点:命令冗长、复杂

(2)声明式资源管理(常用——部署资源)

使用yml文件进行声明式资源管理

3GUI图形化资源管理

2、kubectl命令详解

(1)查看

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

查看版本信息

kubectl version

查看所有api的资源对象

kubectl api-resources

查看k8s的集群信息

kubectl cluster-info

自动补齐命令

基本信息查看

查看master节点的状态

kubectl get cs

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

kubectl get pod

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

kubectl get namespaces

查看指定命名空间里的pod

kubectl get pod -n 命名空间名称

查看默认命名空间内pod的详细信息

kubectl get pod -o wide

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

kubectl get pod -o wide -n 命名空间名称

查看node节点信息和状态

kubectl get node

查看node节点的详细信息

kubectl get node -o wide

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

kubectl describe pod pod名称

查看指定命名空间里的pod的详细情况

kubectl describe pod pod名称 -n 命名空间名称

动态查看pod日志

kubectl logs -f pod名称

动态查看指定命名空间的pod日志

kubectl logs -f pod名称 -n 命名空间名称

创建命名空间

kubectl create ns 名称

删除命名空间

kubectl delete ns 名称

删除pod(没有真正删除)

 kubectl delete pod pod名称

生成一个新的pod

(2)部署

1)deployment部署pod的两种方式

①陈述式部署(命令行)

②声明式部署(yml)

2)特点

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

②自我修复:若有pod节点发生故障,deployment会自动启动新的pod进行代替

③回滚:若更新有问题,deployment会提供还原点,可以手动还原到未更新前的状态

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

注:必须基于deployment创建的服务才能实现以上功能(绝大多数都使用deployment创建)

查看默认命名空间里基于deployment创建的pod

 kubectl get deployments.apps

查看指定命名空间里deployment创建的pod

kubectl get deployments.apps -n kube-system

查看默认空间里daemonsets创建的pod

kubectl get daemonsets.apps

daemonset不能在命令行创建,只能用yml文件来创建pod,后台运行创建,在每个节点上创建一个方式相同、版本相同的容器运行的pod。一般是依赖环境和重要组件,不会对这些资源进行操作

创建pod

(同一个命名空间pod不能重名)

kubectl create deployment pod名称 --image=nginx (--replicas=3)

注:若是基于deployment方式创建的pod ,或基于daemonset方式创建的pod,均是由控制器创建的pod,使用delete删除pod无法删除,相当于重启pod。先删除控制器,才能删除pod,但删除控制器,所有基于这个控制器的pod全部被删除(慎用)

kubectl delete deployments.apps nginx

kubectl delete deployments.apps nginx

不是基于控制器创建的pod

(可以直接删除,很少用)

kubectl run pod名称 --image=nginx

远程进入节点容器

kubectl exec -it 容器名称 bash

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

指定命名空间进入容器

kubectl exec -it 容器名称 bash -n 命名空间名称

快速结束容器

(用于结束卡在销毁状态的pod)

kubectl delete pod nginx-6799fc88d8-j4hxc --force --grace-period=0

--grace-period表示过度的存活期(默认30秒,可以让pod优雅的结束容器内的进程,然后退出pod)

--grace-period=0表示立刻退出

对deployment创建的pod扩、缩容

(仅限于deployment控制器)

kubectl scale deployment nginx1 --replicas=3

扩容:

缩容:

发布服务的service

查看当前命名空间的service

kubectl get svc

删除service

kubectl delete svc nginx

service的类型

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

②NodePort(常用)在每个node节点上都开放一个相同的端口,外部可以通过node的本机IP+端口访问pod资源,这是集群外部访问service资源的一种方式(四层代理),基于deployment创建的pod可以使用这种方式

nodeip:nodeport(nodeport可随机指派,也可指定,范围30000~32767)

对外暴露service端口

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

--port=80    service集群的端口(可随意指定)

--target-port=80    pod内部容器的端口(服务固定的端口号)

10.96.26.83:集群内部的IP地址,外部不可以访问

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

30934:和内部的service的80端口做映射

pod内部的容器的端口是固定的,--port是service和容器映射端口,可以随意指定

--target-port是容器内部的服务端口

修改service端口

kubectl edit svc service名称

③LoadBalance:若service类型设定为LoadBalance,映射地址(云平台提供LoadBalance的地址,需要付费),这种用法仅用于公有云服务供应商在云台上设置的service的场景,外部访问,实现负载均衡

创建service,指定类型为LoadBalance

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

注:企业内部最常见的是NodePort和ExternalName结合一起使用

3更新、回滚、发布方式

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

更新服务版本

kubectl set image deployment nginx nginx=nginx:1.22.0

查看还原点

kubectl rollout history deployment nginx

数字越大,就是最近的一次的操作

设置还原点时加上标识便于识别还原点

kubectl set image deployment nginx nginx=nginx:1.15 --record

回滚

kubectl rollout undo deployment nginx --to-revision=1

查看还原状态

①kubectl rollout status deployment nginx

②kubectl get pod -w动态查看

查看默认命名空间集群内的所有信息

kubectl get all

看默认命名空间集群内的所有详细信息

kubectl get all -o wide

查看指定命名空间集群内的所有详细信息

kubectl get all -o wide -n 命名空间名称

这篇关于k8s陈述式资源管理(命令行)的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/562124

相关文章

sqlite3 命令行工具使用指南

《sqlite3命令行工具使用指南》本文系统介绍sqlite3CLI的启动、数据库操作、元数据查询、数据导入导出及输出格式化命令,涵盖文件管理、备份恢复、性能统计等实用功能,并说明命令分类、SQL语... 目录一、启动与退出二、数据库与文件操作三、元数据查询四、数据操作与导入导出五、查询输出格式化六、实用功

k8s上运行的mysql、mariadb数据库的备份记录(支持x86和arm两种架构)

《k8s上运行的mysql、mariadb数据库的备份记录(支持x86和arm两种架构)》本文记录在K8s上运行的MySQL/MariaDB备份方案,通过工具容器执行mysqldump,结合定时任务实... 目录前言一、获取需要备份的数据库的信息二、备份步骤1.准备工作(X86)1.准备工作(arm)2.手

SQLite3命令行工具最佳实践指南

《SQLite3命令行工具最佳实践指南》SQLite3是轻量级嵌入式数据库,无需服务器支持,具备ACID事务与跨平台特性,适用于小型项目和学习,sqlite3.exe作为命令行工具,支持SQL执行、数... 目录1. SQLite3简介和特点2. sqlite3.exe使用概述2.1 sqlite3.exe

Java资源管理和引用体系的使用详解

《Java资源管理和引用体系的使用详解》:本文主要介绍Java资源管理和引用体系的使用,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录1、Java的引用体系1、强引用 (Strong Reference)2、软引用 (Soft Reference)3、弱引用 (W

Python的pip在命令行无法使用问题的解决方法

《Python的pip在命令行无法使用问题的解决方法》PIP是通用的Python包管理工具,提供了对Python包的查找、下载、安装、卸载、更新等功能,安装诸如Pygame、Pymysql等Pyt... 目录前言一. pip是什么?二. 为什么无法使用?1. 当我们在命令行输入指令并回车时,一般主要是出现以

windows和Linux使用命令行计算文件的MD5值

《windows和Linux使用命令行计算文件的MD5值》在Windows和Linux系统中,您可以使用命令行(终端或命令提示符)来计算文件的MD5值,文章介绍了在Windows和Linux/macO... 目录在Windows上:在linux或MACOS上:总结在Windows上:可以使用certuti

Python使用getopt处理命令行参数示例解析(最佳实践)

《Python使用getopt处理命令行参数示例解析(最佳实践)》getopt模块是Python标准库中一个简单但强大的命令行参数处理工具,它特别适合那些需要快速实现基本命令行参数解析的场景,或者需要... 目录为什么需要处理命令行参数?getopt模块基础实际应用示例与其他参数处理方式的比较常见问http

SpringShell命令行之交互式Shell应用开发方式

《SpringShell命令行之交互式Shell应用开发方式》本文将深入探讨SpringShell的核心特性、实现方式及应用场景,帮助开发者掌握这一强大工具,具有很好的参考价值,希望对大家有所帮助,如... 目录引言一、Spring Shell概述二、创建命令类三、命令参数处理四、命令分组与帮助系统五、自定

Spring Shell 命令行实现交互式Shell应用开发

《SpringShell命令行实现交互式Shell应用开发》本文主要介绍了SpringShell命令行实现交互式Shell应用开发,能够帮助开发者快速构建功能丰富的命令行应用程序,具有一定的参考价... 目录引言一、Spring Shell概述二、创建命令类三、命令参数处理四、命令分组与帮助系统五、自定义S

Windows server服务器使用blat命令行发送邮件

《Windowsserver服务器使用blat命令行发送邮件》在linux平台的命令行下可以使用mail命令来发送邮件,windows平台没有内置的命令,但可以使用开源的blat,其官方主页为ht... 目录下载blatBAT命令行示例备注总结在linux平台的命令行下可以使用mail命令来发送邮件,Win