Kuebernetes资源控制管理

news2024/12/30 3:11:45

第四阶段

时  间:2023年8月11日

参加人:全班人员

内  容:

Kuebernetes资源控制管理

目录

Kubectl命令工具

一、kubectl 命令行的语法

二、kubectl命令列表

三、使用 Kubectl 工具容器资源

(一)创建Pod

(二)发布服务

自我修复测试:

负载均衡测试:


Kubectl命令工具

        Kubectl 是一个用于操作 Kubernetes 集群的命令行工具,利用 Kubectl 的各种子命令可以实现各种功能,在管理 Kubernetes 集群过程中kubectl是非常实用的工具。

        Kube-apiserver是整个Kubernetes集群管理的入口。

        API Server运行在Kubernetes 集群的主管理节点(Master)上,用户需要通过 API Server 配置和组织集群,同时集群中各节点与 Etcd 存储的交互也是通过 API Server 来进行的。

        API Server 实现了一套 RESTfull 的接口,用户可以直接使用 API 与 API Server 进行交互。另外官方还提供了一个客户端 Kubectl 工具集,可直接通过 Kubectl 命令行的方式与集群进行交互。

一、kubectl 命令行的语法

格式:kubectl [command] [TYPE] [NAME] [flags]  

command:子命令,用于操作 Kubernetes 集群资源对象的命令。例如:create、delete、describe、get、apply 等。

TYPE:资源对象的类型,区分大小写,能以单数、复数或者简写形式表示。例如:kubectl get pod pod1、kubectl get pods pod1、kubectl get po pod1 三种 TYPE 是等价的。

NAME:资源对象名称,区分大小写。如果不指定名称,系统则返回属于 TYPE 的全部对象列表,例如,执行 kubectl get pods 命令即可返回所有 Pod 的列表。

flags:kubectl 子命令的可选参数,例如使用“-s”指定 API Server 的 URL 地址而不用默认值。

        kubectl 的子命令非常丰富,涵盖了对 Kubernetes 集群的主要操作,包括资源对象的创建、删除、查看、修改、配置、运行等操作。

二、kubectl命令列表

 

 

三、使用 Kubectl 工具容器资源

        Kubectl 是管理Kubernetes集群的命令行工具,通过生成的 json 格式传递给 API Server 进行创建、查看、管理的操作。

使用 kubectl --help 命令可以查看 Kubectl 帮助命令,其中包括基本命令、部署命令、群集管理命令、调试命令以及高级命令等。

[root@k8s-master ~]# kubectl --help

        在一个完整的项目周期中,包含创建->发布->更新->回滚->删除等过程,下面针对该过程依次进行操作命令的演示。

(一)创建Pod

        kubectl run 命令可以创建并运行一个或多个Pod,也可以创建一个 deployment 或job 来管理Pod。此命令和 docker run 相类似,也是实现Pod的创建,先从仓库中拉取基础镜像,然后对容器进行操作。

kubectl run 的命令语法如下所示:

kubectl run NAME --image=image [--env="key=value"] [--port=port] [--replicas=replicas] [--dry-run=bool] [--overrides=inline-json] [--command] -- [COMMAND] [args...] [options]

各选项的作用分别如下所示:

NAME:指定容器运行的名称;

Image:指定运行的基础镜像;

env:指定在容器中设置的环境参数;

port:指定容器暴露的端口;

replicas:指定启动容器设置的副本数;

dry-run:dry-run 值如果为 true,则只打印要发送的对象,而不发送它;

overrides:生成对象的内联 JSON 重写。如果非空,则用于覆盖生成的对象。要求对象提供有效的 apiVersion 字段。

前提配置:

[root@k8s-master ~]# kubectl get nodes

例:通过 kubectl run 命令创建 Nginx 容器, 指定名称为 nginx-deployment,指定基础镜像为 Nginx 目前最新版本,指定对外暴露的端口为 80 以及副本数为 3。

[root@k8s-master ~]# kubectl run nginx-deployment --image=nginx:1.14 --port=80 --replicas=3(已禁用)

可以通过下列命令,实时查看创建过程:

[root@k8s-master ~]# watch -n1 kubectl get pods -o wide

[root@k8s-master ~]# kubectl get pods

[root@k8s-master ~]# kubectl get pods -o wide

 

(二)发布服务

        容器资源创建完成,就需要完成发布工作,确保 Pod 能够对外提供服务,保证客户端能够正常访问,使用 kubectl expose 命令可以实现该目的。

kubectl expose 的命令语法如下所示:

kubectl expose (-f FILENAME | TYPE NAME) [--port=port] [--protocol=TCP|UDP] [--target -port=number-or-name] [--name=name] [--external-ip=external-ip-of-service] [--type=type]

上述命令语法中,各选项的作用分别如下所示:

-f:标识公开服务的资源的文件的文件名,目录或 URL;

TYPE NAME:指定 deployment 名称;

port:指定内部通信端口;

protocol:指定网络协议,tcp 或者 udp;

target-port:指定暴露在外部的端口;

name:指定最新创建的对象的名称;

external-ip:为 service 的外部 IP 地址;

type:指定此服务的类型 ClusterIP,NodePort,LoadBalancer 或 ExternalName,默认 ClusterIP。

        通过 kubectl expose 命令创建 Service,设置内部通信端口和外部暴露的端口均为 80、名称为 nginx-service、类型是 NodePort。创建 Service 完后,就可以通过 kubectl get svc命令查看到对外暴露的端口是30037,内部通信的地址是10.96.0.1

前提配置:!!!!

[root@k8s-master k8s]# vim nginx-deployment.yaml

[root@k8s-master k8s]# kubectl create -f nginx-deployment.yaml

[root@k8s-master ~]# kubectl expose deployment nginx-deployment --port=80 --target-port=80 --name=nginx-service --type=NodePort

service/nginx-service exposed

[root@k8s-master ~]# kubectl get pods,svc

        执行 kubectl get endpoints 查看容器自带的负载均衡。从执行结果可以得知容器自带的负载均衡分别是 10.244.1.4:80、10.244.2.4:80、10.244.2.5:80

[root@k8s-master ~]# kubectl get endpoints

执行 kubectl get pods 命令时加参数 -o wide 可以查看到 Node 真实节点上的分布。

[root@k8s-master ~]# kubectl get pods -o wide

完成上述步骤就已经完成了发布,并且可以进行对其访问。

[root@k8s-node01 ~]# curl 10.244.1.3

[root@k8s-node01 ~]# curl 10.244.1.4

 

自我修复测试:

[root@k8s-master k8s]# kubectl delete pod nginx-deployment-644599b9c9-6zznv

[root@k8s-master k8s]# watch -n 1 kubectl get pod -o wide

会自动生成新的pod,这就是k8s的自我修复!

 

负载均衡测试:

创建测试页面:

[root@k8s-node01 ~]# docker ps -a

[root@k8s-node01 ~]# docker exec -it 4686eb55f05c /bin/bash

root@nginx-deployment-644599b9c9-jqxxx:/# cd /usr/share/nginx/html/

root@nginx-deployment-644599b9c9-jqxxx:/usr/share/nginx/html# echo "k8s-node01" > index.html

 

[root@k8s-node01 ~]# docker exec -it 076e08274415  /bin/bash

root@nginx-deployment:/# cd /usr/share/nginx/html/

root@nginx-deployment:/usr/share/nginx/html# echo "k8s-node01-test" > index.html 

[root@k8s-master k8s]# kubectl get pod,svc

[root@k8s-master ~]# curl 192.168.100.131:30037

[root@k8s-master ~]# curl 192.168.100.131:30037

 

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

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

相关文章

并发——ThreadLocal关键字详解

文章目录 前言ThreadLocal代码演示ThreadLocal的数据结构GC 之后key是否为null?ThreadLocal.set()方法源码详解ThreadLocalMap Hash算法ThreadLocalMap Hash冲突ThreadLocalMap.set()详解ThreadLocalMap.set()原理图解ThreadLocalMap.set()源码详解 ThreadLocalMap过…

游戏选香港主机会很卡吗?

​  经常会有用户问道:做游戏服务器,使用香港主机会很卡吗?要知道,游戏运营最看重的就是用户体验,而游戏流畅不流畅要看所使用香港服务器本身的稳定性。因此,卡不卡,这样的形式提问是比较笼统的&#xf…

【EI检索】第九届建筑、土木与水利工程国际学术会议(ICACHE 2023)

第九届建筑、土木与水利工程国际学术会议(ICACHE 2023) 2023 9th International Conference on Architectural, Civil and Hydraulic Engineering 第九届建筑、土木与水利工程国际学术会议(ICACHE 2023)将于2023年10月13-15日在中…

现代无人机技术

目录 1.发展 2.应用领域 3.对战争的影响 4.给人类带来的福利 5.给人类带来的坏处 1.发展 无人机的发展可以分为以下几个关键步骤: 1. 早期试验和研究:20世纪初,飞行器的概念开始出现,并进行了一些早期的试飞和实验。这些尝试包…

第一部分:核心容器

前言:学习路线 Spring就是一个轻量级的控制反转(IOC)和面向切面编程(AOP)的框架! 第一章:纯手写 一、核心概念 什么是IoC、IoC容器、bean、DI ? IoC:对象创建控制权由程…

springboot项目为什么加载不出来页面

路径啥的都没问题。hh,非常简单,因为springboot项目默认访问静态static文件,把那种静态图片放在static文件下就解决了。

订单支付超时未支付关闭订单的解决方案

订单支付超时未支付关闭订单的解决方案 假设有客户下了订单但是迟迟未曾支付,会产生什么样的问题呢,大家联想一下京东淘宝拼多多,想一下大家购物的场景中,人家是怎么做的,然后再看看我们这么这篇文章!&…

微信怎么恢复好友?这8个方法值得一试!

【微信之前忘记给别人备注名字,昨天清理好友时不小心误删了该怎么办啊!好尴尬!】 随着社交网络的快速发展,微信已成为我们生活中必不可少的交流工具。日积月累下来,微信里的联系人也就变得越来越多。但是,…

Map映射学习

一、Map的遍历 创建Map集合 Map<String, Integer> map new HashMap<>();添加元素 map.put("java", 99);map.put("c", 88);map.put("c", 93);map.put("python", 96);map.put("Go", 88); 遍历方法&#xff1a; …

自主学习库简化智能代理创建

观看当今毁灭人类的智能代理玩复杂的视频游戏可能很有趣 - 但创建一个是另一回事。构建有效的智能代理需要设置大量超参数来塑造环境、建立奖励等。来自马萨诸塞大学阿默斯特分校的一组研究人员试图通过他们新的自主学习图书馆项目来简化这一过程。 自治学习库是 PyTorch 的深…

Mysql - 配置Mysql主从复制-keepalived高可用-读写分离集群

目录 高可用&#xff1a; 为什么需要高可用呢&#xff1f; 高可用的主要作用&#xff1a; keepalived是什么&#xff1f;它用在哪里&#xff1f; 什么是VRRP协议&#xff0c;它的作用是什么&#xff1f; 搭建一个基于keepalived的高可用Mysql主从复制读写分离集群 一、项…

【vue3】解决scope.row.id套标签太多无法随着点击按钮而变化

实现要求:再点击每一行的修改按钮时&#xff0c;动态拿取该行的id传给后端作为pk(主键)实现数据库数据的修改&#xff0c;并显示在vue前端&#xff1b; 我遇到的问题&#xff1a;在2处使用 scope 作用域插槽拿取每一行的数据&#xff0c;在3处&#xff0c;删除按钮那一行代码&a…

BGP小综合

实验要求及拓扑 一、思路 1.使用OSPF使R2-R7之间可通。 2.各自宣告AS区域&#xff0c;两个区域两两之间建邻&#xff0c;AS2两个小区域之间建联邦&#xff08;R2与R5、R4与R7&#xff09;。 3.使R3、R6为路由反射器 RR反射器选取各小区域的路由器作为客户端 、非客户端 4.优…

分布式事务模式理论详解

&#x1f680; 分布式事务 &#x1f680; &#x1f332; AI工具、AI绘图、AI专栏 &#x1f340; &#x1f332; 如果你想学到最前沿、最火爆的技术&#xff0c;赶快加入吧✨ &#x1f332; 作者简介&#xff1a;硕风和炜&#xff0c;CSDN-Java领域优质创作者&#x1f3c6;&…

SaaS,PaaS,IaaS之间的主要区别

SaaS&#xff0c;PaaS&#xff0c;IaaS之间的主要区别 不久之前&#xff0c;公司的所有IT系统都是本地部署&#xff0c;而云也只是天空中蓬松的白色物体。现在&#xff0c;几乎所有系统和进程都可以使用云平台。SaaS&#xff0c;PaaS和IaaS只是描述如何在企业中使用云的三种方…

DL_20无线串口模块

今日介绍一块最近入手的无线串口模块&#xff0c;40r左右&#xff0c;精简好用&#xff0c;虽然感觉配置波特率啥的并不智能化&#xff0c;但250米的通信距离还是很顶的&#xff01;它的升级版甚至有1000米的通信距离&#xff08;空旷地带&#xff09; 这篇文章不多讲其余话&am…

(二)结构型模式:1、适配器模式(Adapter Pattern)(C++实现示例)

目录 1、适配器模式&#xff08;Adapter Pattern&#xff09;含义 2、适配器模式应用场景 3、适配器模式的UML图学习 4、C实现适配器模式的示例 1、适配器模式&#xff08;Adapter Pattern&#xff09;含义 将一个接口转换为客户端所期待的接口&#xff0c;从而使两个接口…

Java基础篇--运算符

目录 算术运算符 赋值运算符 比较运算符 逻辑运算符 条件运算符&#xff08;?:&#xff09; instanceof 运算符 Java运算符优先级 在程序中经常出现一些特殊符号&#xff0c;如、-、*、、>等&#xff0c;这些特殊符号称作运算符。运算符用于对数据进行算术运算、赋值…

@RequestHeader使用

RequestHeader 请求头参数的设置 GetMapping("paramTest/requestHeader")public String requestHeaderTest(RequestHeader("name") String name){return name;} 在Postman的Headers中添加请求头参数&#xff0c;不过貌似不能加中文

k8s 滚动更新控制(一)

在传统的应用升级时&#xff0c;通常采用的方式是先停止服务&#xff0c;然后升级部署&#xff0c;最后将新应用启动。这个过程面临一个问题&#xff0c;就是在某段时间内&#xff0c;服务是不可用的&#xff0c;对于用户来说是非常不友好的。而kubernetes滚动更新&#xff0c;…