当前位置:网站首页 > C++编程 > 正文

kubelet 参数(kubectl scale deployment 参数)



一、kubectl概述

kubectl一个用于操作kubernetes集群的命令行接口,通过利用kubectl的各种命令可以实现各种功能。

二、通过kubect命令工具创建容器:

  在minion运行容器(nginx):

角色 IP   master/etcd 192.168.10.5 node-1 192.168.10.8 node-2 192.168.10.9

1、检查集群节点,及服务健康状态:

2、在node-1和node-2节点服务器上下载docker镜像:

查看下载镜像:

3、创建一个容器:

kubectl run 和docker run 都是来启动运行容器:

参数说明:

  • --image :指定docker运行的容器镜像
  • --env : docker环境变量
  • --port : 映射端口
  • --replicas : 副本数

启动pod:

注:使用docker.io/nginx镜像 ,--port=暴露容器端口 9000 ,设置副本数1

注: 如果docker.io/nginx镜像没有,那么node1和node2会自动在dockerhub上下载。也可以改成自己的私有仓库地址:--image= 192.168.10.5:5000/nginx:1.13

查看运行状态:

同时在node-1节点服务器查看容器是否运行:

pods常见的状态:

  I、 ContainerCreating #容器创建  

  注:如果这里pod是ContainerCreating ,检查要运行的容器镜像是否存在,或其他问题,通过 kubectl describe pod nginx 命令查看详细信息

  II、ImagePullBackOff #从后端把镜像拉取到本地

  注:如果这里pod没有正常运行,都是因为docker hub没有连接上,导致镜像没有下载成功,这时,可以在node节点上把相关镜像手动上传一下或把docker源换成阿里云的。

  III、terminating ['tɜ:mɪneɪtɪŋ] #终止 。当删除pod时的状态

  V、Running : 容器正在运行中

4、使用kubectl delete删除创建的对象

4.1、删除POD:

当我们使用delete删除pod时,可以看到kubectl又重新创建启动一个POD ,而且我们通过describe指令看到pod已经运行在node-2服务器上了,这是正是replicas为1的作用,平台会一直保证有一个副本在运行

4.2、删除deployment

三、使用yaml文件生成deployment

  • kubectl 常用命令和参数说明:
  • 命令              说明
  • kubectl run 运行一个pod
  • kubectl delete 删除一个POD
  • kubectl get 查看pod相关信息
  • kubectl create 创建deployment
  • kubectl logs               取得pod中容器的log信息
  • kubectl exec               在pod中执行一条命令
  • kubectl cp                  从容器拷出或向容器拷入文件
  • kubectl attach            Attach到一个运行中的容器上,实时查看容器消息

使用kubectl run在设定很复杂的需求时,需要非常长的一条语句,也很容易出错,也没法保存。所以更多场景下会使用yaml或者json文件。

1、两个node-1和node-2下载docker镜像:

2、编写MySQL启动的yaml文件:

3、kubectl create 创建

注:当一个目录下,有多个yaml文件的时候,使用kubectl create -f 目录 的方式一下全部创建

4、 kubectl get pod -o wide 命令

    该参数可以查看更详细的信息,比如看到pod运行的节点服务器、IP;

在node-1上查看运行的容器MySQL

5、kubectl logs 查看pod中容器日志信息:

6、kubectl exec 在pod中执行一条命令

7、kubectl cp 用于从容器与物理机文件的拷贝

在容器里安装tar命令:

8、kubectl attath 用于动态查看pod中容器日志信息

四、使用kubectl管理集群中deployment资源和service服务

  • kubectl相关命令参数如下:
  • kubectl   edit 编辑服务器侧资源
  • kubectl   replace   使用文件名或者标准输入资源
  • kubectl   patch      部分更新资源相关信息
  • kubectl   apply      使用文件或者标准输入更改配置信息
  • kubectl   scale       重新设定Deployment/ReplicaSet/RC/Job的size
  • kubectl   autoscale       Deployment/ReplicaSet/RC的自动扩展设定
  • kubectl   cordon   设定node不可使用
  • kubectl   uncordon      设定node可以使用
  • kubectl   drain      设定node进入维护模式

1、下载测试镜像:

2、编写部署nginx.yaml文件

3、创建pod:

查看创建的server、pod

通过查看以上信息,我们可以看到nginx服务在node-2上运行并把80端口映射到主机31001端口

访问服务:

4、kubectl edit 用于编辑服务器上的资源

  例1:查看service值。 -o参数指定输出的消息为yaml类型

查看POD端口映射信息已经改变

通过31002端口访问服务:

注:edit编辑的是运行环境的设定而不需要停止服务。

5、kubctl replace 用于替换,我们使用上个例子中的service的port,把它改为31003

查看导出文件并修改:

我们把映射端口改为31003,然后保存退出;使用replace 命令

6、kuberctl patch  当修改一部分设定时,使用patch很方便。比如:给pod换个image镜像。

给nginx容器替换一个支持php的docker镜像

通过浏览器访问31003端口:

7、kubectl apply 用于使用文件或者标准输入来更改配置信息

用apply命令加载修改的配置:

8、kubectl scale 用于横向扩展,是kubernetes或者swarm这类容器编辑平台的重要功能之一

实现环境: 之前已经设定nginx的replica副本为1

执行scale命令,使用scale命令进行横向扩展,将原本为1的副本提高到3

我们可以看到nginx的副本分布,node-1 运行了一个nginx,node-2运行了两个nginx

9、kubectl autoscale

用于自动扩展确认,跟scale不同的是前者还是需要手动执行,而autoscale则会根据负载进行调解。而这条命令则可以对Deployment/ReplicaSet/RC进行设定,通过最小值和最大值的指定进行设定,这里只是给出执行的结果,不再进行实际的验证。

当然使用还会有一些限制,比如当前3个,设定最小和最大值为2的,会报以一下错误:

10、kubectl cordon 与 kubectl uncordon

在实际维护的时候会出现某个node坏掉,或者做一些处理,暂时不能让生成的pod在此node上运行,需要通知kubernetes让其不要创建过来,这条命令就是cordon,uncordon则是取消这个要求。

设定node2上不再运行新的pod实例,使用get node确认,其状态显示SchedulingDisabled

执行scale命令,再次执行横向扩展命令,看是否会有pod漂到node2这台机器上,结果发现只有之前的一个pod,再没有新的pod漂过去。

执行uncordon解除封锁命令

使用uncordon命令解除对node2机器的限制,通过get node确认状态也已经正常。

11、kubectl drain 用于对某个node结点进行维护

  drain两个作用:

    1. 设定此node不可以使用(cordon)

    2. evict驱逐pod到他正常的node节点上

事前准备:

将nginx 的副本设定为4

执行drain命令,让node2不可用,并把node2上已经运行pod驱逐到其他node1上:

把node2上的pod删除后,k8s会根据replicas的机制,在清退pod和设定node时,在其他结点上生成新的pod。这时就可以对node2节点进行维护了,维护好后,重新uncordon即可。

等修改好后,现在恢复可用:

五、kubectl使用命令总结:

kubectl相关命令参数如下:

    • kubectl run   运行一个pod
    • kubectl delete    删除一个POD
    • kubectl get   查看pod相关信息
    • kubectl create    创建deployment
    • kubectl logs    取得pod中容器的log信息
    • kubectl exec    在pod中执行一条命令
    • kubectl cp    从容器拷出或向容器拷入文件
    • kubectl attach    Attach到一个运行中的容器上,实时查看容器消息
    • kubectl describe   获得resource集群相关的信息
    • kubectl edit   编辑服务器侧资源
    • kubectl replace   使用文件名或者标准输入资源
    • kubectl patch    部分更新资源相关信息
    • kubectl apply    使用文件或者标准输入更改配置信息
    • kubectl scale    重新设定Deployment/ReplicaSet/RC/Job的size
    • kubectl autoscale    Deployment/ReplicaSet/RC的自动扩展设定
    • kubectl cordon    设定node不可使用
    • kubectl uncordon    设定node可以使用
    • kubectl drain    设定node进入维护模式
    • kucectl help    查看帮助信息

kubectl get命令能够确认的信息类别:

  • deployments (缩写 deploy)
  • events (缩写 ev)
  • namespaces (缩写 ns)
  • nodes (缩写 no)
  • pods (缩写 po)
  • replicasets (缩写 rs)
  • replicationcontrollers (缩写 rc)
  • services (缩写 svc)
到此这篇kubelet 参数(kubectl scale deployment 参数)的文章就介绍到这了,更多相关内容请继续浏览下面的相关推荐文章,希望大家都能在编程的领域有一番成就!

版权声明


相关文章:

  • conv1d原理(conv dilation)2025-03-22 23:54:10
  • 佳能cp1500(佳能cp1500色带能打多少张)2025-03-22 23:54:10
  • msvcp140.dll丢失的解决方法Win10(msvcp140.dll丢失的解决方法视频)2025-03-22 23:54:10
  • apc与upc的区别(upc与ean)2025-03-22 23:54:10
  • vcomp140.dll,无法继续执行代码(vcomp100.dll无法继续执行代码)2025-03-22 23:54:10
  • etisalat下载(ethnicity estimate 下载)2025-03-22 23:54:10
  • 单播地址,组播地址,广播地址的区别(mac单播地址,组播地址,广播地址的区别)2025-03-22 23:54:10
  • ocd甲骨文(甲骨文oaec)2025-03-22 23:54:10
  • pointnet++网络(pointnet++网络代码)2025-03-22 23:54:10
  • git clone和直接下载的区别(git clone 和git checkout区别)2025-03-22 23:54:10
  • 全屏图片