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

kubectl apply命令(kubectl apply -f yaml)



通过命令管理

直接使用命令去操作kubernetes资源

 
  
通过配置文件管理

①创建一个nginxpod.yaml,内容如下:

 
  

②通过命令配置去创建资源

 
  

③也可以通过apply命令

 
  

4.1 Namespace

Namespace是kubernetes系统中的一种非常重要资源,它的主要作用是用来实现多套环境的资源隔离或者多租户的资源隔离

 
  

这里是引用

1》命令方式

 
  

2》配置方式

首先准备一个yaml文件:ns-dev.yaml

 
  

然后就可以执行对应的创建和删除命令了:

创建:kubectl create -f ns-dev.yaml

删除:kubectl delete -f ns-dev.yaml

4.2 Pod

在kubernetes的世界中,k8s并不直接处理容器,而是直接管理pod。

Pod是kubernetes集群进行管理的最小单元,程序要运行必须部署在容器中,而容器必须存在于Pod中。

Pod可以认为是容器的封装,一个Pod中可以存在一个或者多个容器。

这里是引用

1》命令方式

 
  

2》配置操作

创建一个pod-nginx.yaml,内容如下:

 
  

然后就可以执行对应的创建和删除命令了:

创建:kubectl create -f pod-nginx.yaml

删除:kubectl delete -f pod-nginx.yaml

4.3 Label

 
  

Label的特点:

  • 一个Label会以key/value键值对的形式附加到各种对象上,如Node、Pod、Service等等
  • 一个资源对象可以定义任意数量的Label ,同一个Label也可以被添加到任意数量的资源对象上去

一些常用的Label 示例如下:

  • 版本标签:“version”:“release”, “version”:“stable”…
  • 环境标签:“environment”:“dev”,“environment”:“test”,“environment”:“pro”
  • 架构标签:“tier”:“frontend”,“tier”:“backend”

标签定义完毕之后,还要考虑到标签的选择,这就要使用到Label Selector,即:

当前有两种Label Selector:

  • 基于等式的Label Selector

    name = slave: 选择所有包含Label中key="name"且value="slave"的对象

    env != production: 选择所有包括Label中的key="env"且value不等于"production"的对象

  • 基于集合的Label Selector

    name in (master, slave): 选择所有包含Label中的key="name"且value="master"或"slave"的对象

    name not in (frontend): 选择所有包含Label中的key="name"且value不等于"frontend"的对象

1》命令方式添加标签

 
  

2》配置方式(创建时就打上标签)

 
  

然后就可以执行对应的更新命令了:kubectl apply -f pod-nginx.yaml

4.4 Deployment

在kubernetes中,Pod是最小的控制单元,但是kubernetes很少直接控制Pod,一般都是通过Pod控制器来完成的。Pod控制器用于pod的管理,确保pod资源符合预期的状态,当pod的资源出现故障时,会尝试进行重启或重建pod。(这就是为什么你之前删除pod是删不掉的,你必须删掉控制器才行)

在kubernetes中Pod控制器的种类有很多,本章节只介绍一种:Deployment。

这里是引用

1》命令的方式创建deploy

 
  

2》配置操作

创建一个deploy-nginx.yaml,内容如下:

在这里插入图片描述

然后就可以执行对应的创建和删除命令了:

创建:kubectl create -f deploy-nginx.yaml

删除:kubectl delete -f deploy-nginx.yaml

4.5 Service

通过上节课的学习,已经能够利用Deployment来创建一组Pod来提供具有高可用性的服务。

虽然每个Pod都会分配一个单独的Pod IP,然而却存在如下两问题:

  • Pod IP 会随着Pod的重建产生变化
  • Pod IP 仅仅是集群内可见的虚拟IP,外部无法访问

这样对于访问这个服务带来了难度。因此,kubernetes设计了Service来解决这个问题。

Service可以看作是一组同类Pod对外的访问接口。借助Service,应用可以方便地实现服务发现和负载均衡。

这里是引用

1》配置方式

创建集群内部可访问的Service

 
  

创建集群外部也可访问的Service

 
  

删除Service

 
  

2》配置方式

创建一个svc-nginx.yaml,内容如下:

 
  

然后就可以执行对应的创建和删除命令了:

创建:kubectl create -f svc-nginx.yaml

删除:kubectl delete -f svc-nginx.yaml

5.1 Pod介绍

这里是引用

每个Pod中都可以包含一个或者多个容器,这些容器可以分为两类:

  • 用户程序所在的容器,数量可多可少
  • Pause容器,这是每个Pod都会有的一个根容器,它的作用有两个:
    • 可以以它为依据,评估整个Pod的健康状态
    • 可以在根容器上设置Ip地址,其它容器都此Ip(Pod IP),以实现Pod内部的网路通信

下面是Pod的资源清单:

 
  

5.2 Pod配置

1》配置容器

一言蔽之:

​ 在pod里面自定义两个程序(naginx和busybox),启动pod后发现nginx容器启动成功,但是busybox容器启动失败

创建pod-base.yaml文件,内容如下:

 
  
到此这篇kubectl apply命令(kubectl apply -f yaml)的文章就介绍到这了,更多相关内容请继续浏览下面的相关推荐文章,希望大家都能在编程的领域有一番成就! 
  

                            

版权声明


相关文章:

  • cpu参数对比网站手机(cpu参数对比网址)2026-04-21 10:36:09
  • plc显示下位组件错误(plc显示下位组件错误怎么回事)2026-04-21 10:36:09
  • git checkout指定版本(git checkout指定版本并提交)2026-04-21 10:36:09
  • dhclient获取不到ip(win10dhcp获取ip地址失败怎么办)2026-04-21 10:36:09
  • convoy怎么读(conveying怎么读)2026-04-21 10:36:09
  • dbf文件怎么转换成excel(dbf文件如何转换成excel)2026-04-21 10:36:09
  • vs如何创建c++项目(vs怎么创建c++项目)2026-04-21 10:36:09
  • codepen官网(codeplex官网)2026-04-21 10:36:09
  • cnns认证的检测机构(cns认证标准的内容有哪些)2026-04-21 10:36:09
  • tcp工具坐标(tcp工具坐标系的平均误差在多少mm)2026-04-21 10:36:09
  • 全屏图片