Kuebernetes资源控制管理

第四阶段

时 间:2023年8月11日

参加人:全班人员

内 容:

Kuebernetes资源控制管理

目录

Kubectl命令工具

[一、kubectl 命令行的语法](#一、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

相关推荐
ajassi200035 分钟前
AI语音智能体开发日记(十八)智能体服务器xiaozhi-esp32-server源码部署指南
运维·服务器·人工智能·ai·ai编程
‎ദ്ദിᵔ.˛.ᵔ₎39 分钟前
linux 进程信号(下)
linux·运维·服务器
AOI小白新手上路1 小时前
DRSformer·论文蒸馏笔记:可学习 Top-k 稀疏注意力去雨网络
网络·笔记·学习
Mikko71 小时前
Linux 磁盘满了但 du 找不到?LVM 扩容 df 不变?fstab 写错开不了机?三台真机实测磁盘排查
linux·运维·centos
蓝胖的四次元口袋1 小时前
Jenkins知识梳理(2)
运维·jenkins
yumgpkpm1 小时前
Acceldata ODP 3.3.6.4 vs CDP Private Cloud Base 7.3.2 对比
大数据·运维·服务器·hadoop·华为·zookeeper·hbase
Liuqy-051 小时前
特殊进程——孤儿、僵尸、守护进程
linux·运维·服务器
m4Rk_2 小时前
【论文阅读】Agent 记忆机制(96):M3-Agent——让 Agent 从视听经历中持续形成情景与语义长期记忆
论文阅读·人工智能·学习·开源·github
考研保研资料分享2 小时前
自动化控制保研经验合辑:上交夏令营、北工大预推免与跨专业面试复盘(2025)
运维·面试·自动化
灯澜忆梦2 小时前
【docker】#2 | 基础命令
docker·容器·eureka