电子商务网站开发背景及意义,制作网站需要怎么做的,论坛排名,合肥门户网站制作建设第四阶段
时 间#xff1a;2023年8月11日
参加人#xff1a;全班人员
内 容#xff1a;
Kuebernetes资源控制管理
目录
Kubectl命令工具
一、kubectl 命令行的语法
二、kubectl命令列表
三、使用 Kubectl 工具容器资源
#xff08;一#xff09;创建Pod
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 的列表。flagskubectl 子命令的可选参数例如使用“-s”指定 API Server 的 URL 地址而不用默认值。 kubectl 的子命令非常丰富涵盖了对 Kubernetes 集群的主要操作包括资源对象的创建、删除、查看、修改、配置、运行等操作。 二、kubectl命令列表 三、使用 Kubectl 工具容器资源 Kubectl 是管理Kubernetes集群的命令行工具通过生成的 json 格式传递给 API Server 进行创建、查看、管理的操作。 使用 kubectl --help 命令可以查看 Kubectl 帮助命令其中包括基本命令、部署命令、群集管理命令、调试命令以及高级命令等。 [rootk8s-master ~]# kubectl --help 在一个完整的项目周期中包含创建-发布-更新-回滚-删除等过程下面针对该过程依次进行操作命令的演示。
一创建Pod kubectl run 命令可以创建并运行一个或多个Pod也可以创建一个 deployment 或job 来管理Pod。此命令和 docker run 相类似也是实现Pod的创建先从仓库中拉取基础镜像然后对容器进行操作。
kubectl run 的命令语法如下所示 kubectl run NAME --imageimage [--envkeyvalue] [--portport] [--replicasreplicas] [--dry-runbool] [--overridesinline-json] [--command] -- [COMMAND] [args...] [options] 各选项的作用分别如下所示 NAME指定容器运行的名称 Image指定运行的基础镜像 env指定在容器中设置的环境参数 port指定容器暴露的端口 replicas指定启动容器设置的副本数 dry-rundry-run 值如果为 true则只打印要发送的对象而不发送它 overrides生成对象的内联 JSON 重写。如果非空则用于覆盖生成的对象。要求对象提供有效的 apiVersion 字段。 前提配置
[rootk8s-master ~]# kubectl get nodes 例通过 kubectl run 命令创建 Nginx 容器 指定名称为 nginx-deployment指定基础镜像为 Nginx 目前最新版本指定对外暴露的端口为 80 以及副本数为 3。 [rootk8s-master ~]# kubectl run nginx-deployment --imagenginx:1.14 --port80 --replicas3已禁用 可以通过下列命令实时查看创建过程
[rootk8s-master ~]# watch -n1 kubectl get pods -o wide [rootk8s-master ~]# kubectl get pods
[rootk8s-master ~]# kubectl get pods -o wide 二发布服务 容器资源创建完成就需要完成发布工作确保 Pod 能够对外提供服务保证客户端能够正常访问使用 kubectl expose 命令可以实现该目的。
kubectl expose 的命令语法如下所示 kubectl expose (-f FILENAME | TYPE NAME) [--portport] [--protocolTCP|UDP] [--target -portnumber-or-name] [--namename] [--external-ipexternal-ip-of-service] [--typetype] 上述命令语法中各选项的作用分别如下所示 -f标识公开服务的资源的文件的文件名目录或 URL TYPE NAME指定 deployment 名称 port指定内部通信端口 protocol指定网络协议tcp 或者 udp target-port指定暴露在外部的端口 name指定最新创建的对象的名称 external-ip为 service 的外部 IP 地址 type指定此服务的类型 ClusterIPNodePortLoadBalancer 或 ExternalName默认 ClusterIP。 通过 kubectl expose 命令创建 Service设置内部通信端口和外部暴露的端口均为 80、名称为 nginx-service、类型是 NodePort。创建 Service 完后就可以通过 kubectl get svc命令查看到对外暴露的端口是30037内部通信的地址是10.96.0.1
前提配置
[rootk8s-master k8s]# vim nginx-deployment.yaml [rootk8s-master k8s]# kubectl create -f nginx-deployment.yaml [rootk8s-master ~]# kubectl expose deployment nginx-deployment --port80 --target-port80 --namenginx-service --typeNodePort
service/nginx-service exposed [rootk8s-master ~]# kubectl get pods,svc 执行 kubectl get endpoints 查看容器自带的负载均衡。从执行结果可以得知容器自带的负载均衡分别是 10.244.1.4:80、10.244.2.4:80、10.244.2.5:80
[rootk8s-master ~]# kubectl get endpoints 执行 kubectl get pods 命令时加参数 -o wide 可以查看到 Node 真实节点上的分布。
[rootk8s-master ~]# kubectl get pods -o wide 完成上述步骤就已经完成了发布并且可以进行对其访问。
[rootk8s-node01 ~]# curl 10.244.1.3
[rootk8s-node01 ~]# curl 10.244.1.4 自我修复测试
[rootk8s-master k8s]# kubectl delete pod nginx-deployment-644599b9c9-6zznv [rootk8s-master k8s]# watch -n 1 kubectl get pod -o wide 会自动生成新的pod这就是k8s的自我修复 负载均衡测试
创建测试页面
[rootk8s-node01 ~]# docker ps -a[rootk8s-node01 ~]# docker exec -it 4686eb55f05c /bin/bashrootnginx-deployment-644599b9c9-jqxxx:/# cd /usr/share/nginx/html/rootnginx-deployment-644599b9c9-jqxxx:/usr/share/nginx/html# echo k8s-node01 index.html[rootk8s-node01 ~]# docker exec -it 076e08274415 /bin/bashrootnginx-deployment:/# cd /usr/share/nginx/html/rootnginx-deployment:/usr/share/nginx/html# echo k8s-node01-test index.html [rootk8s-master k8s]# kubectl get pod,svc [rootk8s-master ~]# curl 192.168.100.131:30037
[rootk8s-master ~]# curl 192.168.100.131:30037