kubectl 命令详细介绍

本文涉及的产品
传统型负载均衡 CLB,每月750个小时 15LCU
容器服务 Serverless 版 ACK Serverless,317元额度 多规格
容器服务 Serverless 版 ACK Serverless,952元额度 多规格
简介: kubectl 命令详细介绍

一,k8s集群资源管理方式分类

1,陈述式命令(命令式对象管理)

这种方式类似于直接在Docker中使用docker run命令。你可以直接使用kubectl命令来操作Kubernetes资源。例如,kubectl run nginx-pod --image=nginx:1.17.1 --port=80,这条命令会在集群中运行一个Pod,并指定Pod使用的Docker镜像和端口号。

2, 陈述式对象配置(命令式对象配置)

这种方式类似于使用docker-compose.yml文件。你可以通过kubectl命令和配置文件来操作Kubernetes资源。例如,kubectl create/delete -f nginx-pod.yaml,这条命令会根据nginx-pod.yaml文件中的定义来创建或删除一个Pod。

3, 声明式对象配置(声明式对象配置)

这种方式使用apply命令和配置文件来操作Kubernetes资源。它类似于数据库的操作方式,如果配置文件中定义了一个资源,并且该资源在集群中不存在,那么kubectl就会创建它;如果该资源已经存在但配置不同,那么kubectl就会更新它。例如,kubectl apply -f nginx-pod.yaml

二 ,   kubectl命令语法

kubectl命令的语法如下

kubectl [command] [type] [name] [flags]

comand #指定要对资源执行的操作,例如create、 get、delete

type #指定资源类型,比如deployment、pod、 service

name #指定资源的名称,名称大小写敏感

flags #指定额外的可选参数

三    查看基本信息

(一)环境指令

命令

作用

kubectl version 查看版本信息
kubectl api-resources 查看资源对象简写
journalctl -u kubelet -f    node节点查看日志
source <(kubectl completion bash) 配置kubectl自动补全
kubectl cluster-info 查看集群信息

1,查看版本信息

kubectl version

2,查看资源对象简写

kubectl api-resources

NAME:资源类型全拼

SHORTNAMES :简写

APIVERSION :资源所属的 API 版本   v1 代表稳定使用

NAMESPACED :是否支持命名空间,true表示支持,false表示不支持

KIND :资源的类型或种类

例如componentstatuses  与  cs 表示同一个指令:

3,  添加补全信息

配置kubectl自动补全,使用指令,执行此命令后,可以使用tab键,在kubectl进行资源操作时进行补全

[root@master01 ~]#source <(kubectl completion bash)

 

#可以将此命令加入开机自行加载的文件。如$HOME/.bashrc文件、/etc/profile文件

4,   node节点查看日志

journalctl -u kubelet -f

5,  查看集群信息

kubectl cluster-info

6, 查看服务端点(endpoints)信息

[root@master01 ~]#kubectl get endpoints -n wyq
NAME           ENDPOINTS                                      AGE
nginx-server   10.244.1.24:80,10.244.1.25:80,10.244.2.22:80   25m
  • endpoints 指定要获取的是Endpoints资源类型。Endpoints在Kubernetes中扮演着连接Service与Pods的实际角色,它保存了Service对应的所有后端Pods的IP地址和端口号,使得Service能够将流量路由到这些Pod上。

ENDPOINTS:列出了该Endpoints所包含的后端Pods的IP地址和端口。在这个例子中,有三个Pods作为后端服务,它们的IP地址分别是10.244.1.2410.244.1.2510.244.2.22,并且所有Pods都监听在80端口上以提供服务

(二)查看资源信息

命令

作用

kubectl get <resource_type> [-o wide|json|yaml] [-n namespace] 获取指定类型的资源信息,如kubectl get pods获取所有Pod信息。-n 指定命令空间 -o 指定输出格式
kubectl describe <resource_type> <resource_name> 显示指定资源的详细信息。
kubectl explain <resource>: 获取关于资源或资源字段的文档

1,  获取资源相关信息

kubectl get <resource> [-o wide|json|yaml] [-n namespace]

resource可以是具体资源名称,如pod nginx-xxx;

也可以是资源类型,如pod;

或者all(仅展示几种核心资源,并不完整)

-o 指定输出格式

-n 指定命令空间

2, 查看集群组件状态

kubectl get componentstatuses 或 kubectl get cs

NAME            #集群中的组件名称

STATUS         #组件的健康状态,通常是 "Healthy" 或 "Unhealthy"。

MESSAGE     #提供了关于组件状态的额外信息,通常是一个简单的 "ok" 或更详细的消息。

ERROR         #在组件不健康时可能会显示错误详情,但在健康时通常为空。

3,  查看命名空间

kubectl get namespace或者kubectl get ns
 
Kubernetes 使用命名空间来将集群中的资源划分到不同的逻辑组中。
在同一个命名空间当中,不允许有相同名称的资源信息,但是在不同的命名空间中可以创建
默认的命名空间是 "default",但通常还有其他命名空间,
如 "kube-system"(用于 Kubernetes 系统组件)和用户自定义的命名空间

NAME       #命名空间的名称。

STATUS   #命名空间的当前状态,通常是 "Active",表示命名空间是活动的并且可用。

AGE         #命名空间自创建以来的时长

4    查看命名空间中的资源

kubectl get [resource] [-n namespace]  

举例:

kubectl get all -n kube-system 
#查看kube-system中的pod资源
 
kubectl get all -n kube-system 
#all代表所有类型的资源
 
kubectl get all -A
#--all-namespaces 或 -A :表示显示所有命令空间

5, 查看资源详细信息

kubectl describe <资源类型> <资源名称> [-n 命名空间]

kubectl describe是Kubernetes命令行工具kubectl的一个命令,用于获取关于指定资源的详细信息。
当你想要深入了解某个资源的状态时(比如它的配置、事件、容器日志等),这个命令会非常有用

<资源类型>     #描述的资源的类型,比如 pod、service、deployment、statefulset 等。
<资源名称>     #你想要描述的资源的名称。
[-n 命名空间]  #可选参数,指定资源所在的命名空间。不指定则为当前默认命名空间,通常是default。

查看命名空间kube-system中名称为etcd-master01的pod资源详细信息

(三) 标签

1,标签的作用

辅助筛选资源:通过标签,我们可以筛选出具有特定属性的资源,便于管理和操作。

实现资源的分组:标签可以将资源进行分组,从而合理组织资源结构,使得管理更加有序。

支持负载均衡:在Kubernetes中,Service的Selector会根据标签匹配来实现负载均衡,确保请求能够分发到合适的Pod上。当一个pod迭代或替换之后,新的pod实例IP地址也会改变,同时会将IP地址绑定在标签上,通过访问标签,实现负载均衡

支持Pod的扩容和缩容:Deployment等控制器会根据匹配的标签进行Pod的扩容和缩容,以满足应用的需求。

支持扩展性和灵活性:标签为Kubernetes提供了一种非常灵活的资源管理方式,可以根据需要添加、修改或删除标签,以适应应用的变化和演进。

版本管理:可以使用标签标记不同版本的应用,方便进行版本控制和回滚操作

2,标签的特点

每个对象都可以定义一组键值标签。

每个键对于给定对象必须是唯一的。

标签能够支持高效的查询和监听操作,对于用户界面和命令行是很理想的。

3,标签操作演示

3.1 查看存在资源的标签

kubectl get <资源类型> [-n 命名空间] --show-labels

查看kube-system命名空间中,所有pod实例的标签

kubectl get pods -n kube-system --show-labels

指定查看某一个资源的标签

kubectl get pods etcd-master01 -n kube-system --show-labels

3.2 查看指定标签中含有的资源

kubectl get <资源类型>  [-n 命名空间] -l <标签名称>

kubectl get pods  -n kube-system -l component

get pods:指定查看资源类型为pod

-n kube-system:指定查看kube-system的命名空间

-l component :仅显示标签为component的资源

#整条命令的结果为查看kube-system命名空间中,所有标签名称为component的pod资源

3.3 查看标签中指定的资源
kubectl get pods  -n kube-system -l component=kube-apiserver

-l component=kube-apiserver:指定查看包含component标签,且值为kube-apiserver的资源

3.4  创建实例绑定标签

--labels=键=值

kubectl run  my-nginx-ky35 --image=nginx:1.14  --port=80 --labels=njzb=my-ky35 --dry-run=client -n my-ky35  -o yaml > nginx.ymal

展示成功:

三、创建和删除资源

1.创建命名空间

kubectl create ns <自定义名称>

2,创建pod实例

创建pod实例,其方法有两种

kubectl run:用于快速运行一个新的Pod。不需要进行繁琐的添加追加,一般快速运行与测试pod    run 创建的 挂了就挂了 因为他不保存在etcd 中

 

 

kubectl create:是一个更通用的命令,可以与其他子命令一起使用,以创建特定的资源,

               例如可以通过创建Deployment来启动pod

               它还可以用于从文件、目录中创建资源。如YAML或JSON文件,这些文件描述了要创建的资源

2.1 使用run创建

tips:通过kubectl run --help查看使用方法 (当不知道后面些什么  都可以使用--help)

kubectl run nginx --image=nginx -n wyq
 
 
kubectl get pod -n wyq -owide

kubectl run:创建一个pod资源

nginx:指定名称为nginx

--image=nginx:指定镜像名称

-n china:指定在china命名空间中创建

指定标签:

web(键):键是一个标识符

true(值):值是与键相关联的数据

可以通过查看web标签中值为true的值,获取该pod实例的信息

2.2 使用create创建

kubectl create <资源类型> <pod名称> --image=imagename [-n ns] ...

#标准输入创建

kubectl create -f <filename>

#使用YAML或JSON文件创建资源

kubectl create deployment nginx-01 --image=nginx --replicas=3 -n wyq

kubectl create:创建资源

deployment:创建deployment控制器,用于启动pod,并控制pod的预期值

nginx-01:deployment控制器名称

--image=nginx:指定了要在Pod中运行的Docker镜像的名称

--replicas=3: 这指定了 Deployment 应该运行多少个Pod的副本,不指定默认为1个

-n wyq:指定创建deployment所在的命名空间

查看 Deployment

kubectl get deployments -n wyq

查看 Deployment 的详细信息  

kubectl describe deployment nginx-01 -n wyq

查看 Pod 的详细信息(例如,查看名为 nginx-01-xxxx-xxxx 的 Pod

kubectl describe pod nginx-01-xxxx-xxxx -n wyq

3,  删除资源

3.1 删除pod

上述两种方法创建的pod实例,在删除时候是有很大区别的

使用kubectl run创建的pod实例,使用kubectl delete可以直接删除

而使用delpoyment启动的pod实例,直接去删除pod是无法删除的

会重新启动一个pod

这是因为delpoyment控制器,是一种pod控制器,它建立在ReplicaSet之上的控制器,用于管理无状态应用,同时管理和控制Pod与ReplicaSet,确保pod实例,一直保持在replicaset设置的预期值上

想要删除pod实例,只能通过删除控制器来删除它管理的pod实例

删除副本控制器

kubectl delete deployments nginx-01 -n wyq

//若pod无法删除,总是处于terminate状态,则要强行删除pod

kubectl delete pod <pod-name> -n <namespace> --force --grace-period=0

#grace-period表示过渡存活期,默认30s,在删除pod之前允许POD慢慢终止其上的容器进程,从而优雅退出,0表示立即终止pod

3.2 删除命名空间

kubectl delete namespace <nsname>

注意事项:

①在删除命名空间之前,请确保该命名空间中没有正在运行的重要应用程序,以免影响集群的稳定性和可用性。

②有些命名空间可能是由Kubernetes系统自动生成的,不允许被删除。在删除之前,请确认命名空间是否允许被删除。

③在执行删除操作之前,请确保已经备份了必要的数据和配置

四, 扩容与缩容

在Kubernetes中,扩容(Scaling Up)缩容(Scaling Down)是管理集群中工作负载(如Pods)数量的重要操作

kubectl scale <资源类型> <资源名称> --replicas=num [-n ns]

(一)扩容

扩容意味着增加集群中运行Pod的数量,以满足更高的负载需求

首先使用deployment控制器创建三个pod实例

kubectl create deployment nginx --image=nginx --replicas=3 -n wyq
 
kubectl get pod -n wyq

当负载量过高时,可以通过扩容的方式来增加负载均很需求

kubectl scale deployment nginx --replicas=6 -n wyq

(二)缩容

将pod实例缩容到2个

kubectl scale deployment nginx --replicas=2 -n wyq

注意事项

在进行扩容或缩容操作之前,请确保你的应用程序可以处理这些更改。例如,如果你的应用程序使用了外部存储或数据库连接,并且这些连接是静态的(即不是由Kubernetes管理的),那么增加或减少Pod数量可能会导致连接问题。

监控你的应用程序和集群的性能和健康状况,以确保扩容或缩容操作不会导致问题或性能下降。

使用HPA时,请确保你选择了合适的指标和目标值,以便正确地触发Pod的扩展和缩减。

在进行垂直扩展时,请确保你了解你的应用程序的资源需求,并避免设置过低的资源限制,这可能会导致性能问题或容器崩溃

五,  发布服务

kubectl expose 允许你基于一个运行中的 Pod、Service、ReplicationController、ReplicaSet、Deployment 或 Job 来快速创建一个新的 Service

(一) 创建service的作用

将Pod实例创建为Service的作用主要体现在以下几个方面

提供服务的稳定入口:Service为前端的应用程序或ingress提供了稳定的服务入口,这个入口拥有一个全局唯一的虚拟IP地址。前端的应用可以通过这个IP地址访问后端的Pod集群,而无需关心Pod的实际IP地址,因为Pod的IP地址可能会经常变化。

实现负载均衡:Service内部实现了负载均衡机制,它可以将所有进入的请求均匀地分配给后端的Pod副本,确保每个请求都能得到正确的响应。这对于提高系统的可扩展性和可用性非常重要。

实现故障隔离:当某个Pod发生故障时,Service会自动将该Pod从服务池中剔除,保证请求不会被故障的Pod处理,从而实现了故障隔离。这有助于保持系统的稳定性和可靠性。

实现服务发现:Service允许前端的应用程序通过Label Selector来找到提供特定服务的Pod,从而实现了服务的自动发现。这使得在复杂的分布式系统中,服务之间的调用变得更加简单和高效。

对Pod IP的跟踪:由于Pod经常处于用后即焚状态,Pod经常被重新生成,因此Pod对应的IP地址也会经常变化。通过创建Service,可以将Pod的IP地址添加到Service对应的端点列表(Endpoints)中,实现对Pod IP的跟踪。这样,无论Pod怎样变化,只要有Label,就可以让Service能够联系上Pod,进而实现通过Service访问Pod的目的。

(二)创建pod控制器

首先通过创建deployment控制器来启动nginx的pod实例,暴露容器端口 80,设置副本数3

kubectl create deployment nginx01 --image=nginx:1.18  --port=80  --replicas=3 -n wyq

此时只有集群当中的服务器可以进行访问,因为它们都启动了fiannel网络插件与网络代理,所以做到节点直接互相通信,且可以访问pod实例

为什么curl 这个pod 的ip 能在内部访问到nginx

(curl 是文字版浏览器  和真实浏览器一样 他会默认在后面补 80 端口)

使用其它服务器连接时会被拒绝,因为它现在只是一个pod实例,并没有形成service对外提供服务

所以,我们可以通过kubectl expose命令,将服务对外进行发布,使其它主机,可以访问到pod实例

(三) 创建service

将pod控制器生成的pod实例的端口映射到创建的service服务上的80端口,并设置type类型为NodePort

kubectl expose deployment nginx --port=80 --target-port=80 --name=nginx-server --type=NodePort -n wyq

kubectl

#Kubernetes的命令行工具,用于与集群进行交互。

 

expose

#用于根据资源(如 Deployment)创建一个新的 Service。

 

deployment nginx

#指定了名称为nginx的Deployment来创建Service。

 

--port=80

#这指定了Service的端口,即集群内部其他Pods可以通过这个端口访问Service

 

--target-port=80

#这指定了Service将流量转发到的目标端口,即Pods上实际运行的服务的端口。

#--target-port和--port可以是相同的,但也可以不同,具体取决于部署配置。

 

--name=nginx-server

#指定了新创建的Service的名称

 

--type=NodePort

#指定了Service 的类型。NodePort类型意味着Service会在集群的每个节点上打开一个特定的端口(称为 NodePort,端口范围为30000-32767之间的一个随机数),

这样外部流量就可以通过该端口访问Service。这是将服务暴露给集群外部的一种方式。

 

-n wyq

#-n(--namespace的缩写),用于指定命令应该在哪个命名空间(namespace)中执行

●port

port 是 k8s 集群内部访问service的端口,即通过 clusterIP: port 可以从 Pod 所在的 Node 上访问到 service

●nodePort

nodePort 是外部访问 k8s 集群中 service 的端口,通过 nodeIP: nodePort 可以从外部访问到某个 service。

●targetPort

targetPort 是 Pod 的端口,从 port 或 nodePort 来的流量经过 kube-proxy 反向代理负载均衡转发到后端 Pod 的 targetPort 上,最后进入容器。

●containerPort

containerPort 是 Pod 内部容器的端口,targetPort 映射到 containerPort。

 

获取service对外暴露的端口

对外端口为31931,表示将deployment控制器的端口映射到对外的32444端口

扩展知识:type类型

ClusterIP(默认类型)

为 Service 分配一个内部 IP 地址,这个 IP 地址是集群内部的虚拟 IP 地址,只能在集群内部访问。

通过这个 IP 地址,Kubernetes 会将流量路由到与 Service 关联的一组 Pod。

这种类型的服务最适合那些仅需要在集群内部调用的应用。

NodePort

在 ClusterIP 的基础上,为 Service 在每个 Node 上分配一个端口(范围通常为 30000-32767)。

通过 NodeIP:NodePort 的形式,可以从集群外部访问 Service。

任何请求到这个端口的流量都会被转发到 Service 背后的相关 Pod。

LoadBalancer

通常由云服务提供商支持(例如 AWS、GKE 等)。

为 Service 分配一个外部 IP 地址,通过外部 IP 地址可以访问 Service。

通常还包括负载均衡的功能,将外部请求分发到集群内部的 Pod。

在 NodePort 的基础上,向云服务提供商申请负载均衡器,并将负载均衡器的后端映射到各 Node 节点的 NodePort 上。

ExternalName

这是 Service 的一种特例形式。

不创建集群内的代理,而是返回一个 CNAME 记录指向指定的 DNS 名称。

此类型的服务主要用于将集群内的服务映射到集群外的某个服务。

使用endpoints指令,查看后端关联的后端节点

kubectl get endpoints -n wyq

也可以通过kubectl describe 指令查看service的描述信息

[root@master01 ~]#kubectl describe svc nginx-server -n wyq
Name:                     nginx-server  #serivce名称
Namespace:                china         #所在命名空间
Labels:                   app=nginx     #标签名称
Annotations:              <none>        #服务没有注解
Selector:                 app=nginx     #服务的选择器,表示所有具有app=nginx标签的Pod都将作为此服务的后端
Type:                     NodePort      #服务的类型是NodePort
IP Families:              <none>        #服务没有指定特定的 IP 地址族
IP:                       10.96.47.51   #服务的 ClusterIP
IPs:                      10.96.47.51   #同上,列出了服务的 ClusterIP
Port:                     <unset>  80/TCP  #<unset> 表示没有为服务定义命名端口,默认的端口和协议(80/TCP)被列在了后面
TargetPort:               80/TCP        #流量将被转发到 Pod 上的 80/TCP 端口
NodePort:                 <unset>  32444/TCP  #NodePort端口号为32444
Endpoints:                10.244.1.41:80,10.244.1.42:80,10.244.2.54:80  #该服务提供服务的 Pod 的 IP 地址和端口
Session Affinity:         None          #没有启用会话亲和性,这意味着对于客户端的连续请求,可能会被路由到不同的 Pod
External Traffic Policy:  Cluster       #设置为 Cluster。路由外部流量到集群的所有Pods上
Events:                   <none>        #显示为 <none>,表示没有与该服务相关的事件

使用客户端浏览器访问任意一个节点ip的31931 端口,都可以访问到nginx的pod实例

六   负载均衡

当上述条件以及service创建好后,会以默认轮询的方式实现负载均衡

在任意node节点上下载ipvsadm,使用ipvsadm命令查看负载均衡端口

[root@node01 ~]#yum install ipvsadm -y
[root@node01 ~]#ipvsadm -Ln

(一) 修改各pod访问界面为自定义界面,验证负载均衡

kubectl exec可以跨主机登录容器,docker exec 只能在容器所在主机上登录

kubectl exec -it <pod-name> <-n ns> bash

(二)检测轮询效果

七, 更新版本

kubectl set是一个用于设置资源字段的命令行工具,它提供了一种直接修改 Kubernetes 资源字段的方式,而无需直接编辑 YAML 或 JSON 文件。kubectl set 命令通常用于快速修改资源的某些属性,如环境变量、标签、注解等

[root@master01 ~]#kubectl set --help
#获取帮助信息

(一) 查看版本更新策略

set指令版本滚动策略,可以使用kubectl describe来进行查看

kubectl describe deployments.apps nginx -n wyq

RollingUpdateStrategy

#Deployment资源的一个字段,它用于定义滚动更新的策略。

#滚动更新允许你逐步替换Pod,以确保在更新过程中服务的高可用性

 

maxUnavailable

#这是一个可选字段,用于指定在滚动更新过程中可以有多少个Pod处于不可用状态。

#这个值可以是一个整数(表示具体的Pod数量)或者一个百分比

#例如,25%的maxUnavailable意味着在更新过程中,可以有最多25%的Pod处于不可用状态。

 

maxSurge

#这也是一个可选字段,用于指定在滚动更新过程中可以有多少个额外的Pod同时运行。

#这个值也可以是一个整数或百分比。例如25%的maxSurge意味着在更新过程中,

#可以比期望的Pod数量多运行最多25%的Pod。

(二)更新版本过程

set更新版本过程,以三个pod为例

首先在确保正常提供服务的情况下,在三个pod实例正常运行的情况下,生成一个新的指定版本呢的pod实例,等到新的pod实例创建成功后,会删除第一个pod实例,而后再生成第二个新版本的pod实例,再删除第二个,依此类推,一直到该deployment下的所有pod资源全部升级完毕。

需要注意的是,资源更新后,其原本pod实例中的数据并不会被继承。如果有需要的话,可以先对数据进行备份,等到升级完毕后,再同步数据

(三) 版本更新

首先查看当前运行的nginx pod 示例   以及映射端口

kubectl get pod,svc -owide -n wyq

用curl 浏览器   查看当前nginx 版本  可以看到版本 是 1.142

set 升级

kubectl set image deployment nginx01 nginx=nginx:1.20.2 -n wyq

可以看到新版本创建完毕后优雅退出

最后能看到 pod实例的虚拟ip 都会变化   但是暴露的端口是 不变的

再次用curl 浏览器   发现已升级

八    版本回滚

kubectl rollout 是一个用于管理 Kubernetes 部署(Deployments)和其他资源的滚动更新的命令。通过 kubectl rollout,你可以触发滚动更新、检查状态、撤销更新等操作

(一)查看历史版本

kubectl rollout history deployment/my-deployment
###
用于查看资源的滚动更新历史。例如,可以查看Deployment的所有历史版本

REVISION                #显示历史中的每个版本,最多记录三次

CHANGE-CAUSE    #显示触发该版本变更的原因。显示为 <none>,表示没有明确的变更原因被记录

             

#Kubernetes本身不会自动为每次Deployment的更新填充CHANGE-CAUSE字段。

#这个字段通常是通过设置 Deployment 的注解(annotation)来填充的

#特别是 kubernetes.io/change-cause 这个注解。

#当使用某些工具进行更新时,这些工具可能会自动设置这个注解

(二) 撤销上一次更新

kubectl rollout undo deployment nginx01 -n wyq

curl 查看   版本已回滚

(三) 查看回滚是否成功

ubectl rollout status deployment nginx01 -n wyq

九    命令总结

(一)查看基本信息

命令

作用

kubectl version 查看版本信息
kubectl api-resources 查看资源对象简写
journalctl -u kubelet -f    node节点查看日志
source <(kubectl completion bash) 配置kubectl自动补全
kubectl cluster-info 查看集群信息
kubectl get endpoints -n wyq 查看服务端点

(二)获取资源信息

命令

作用

kubectl get <resource_type> [-o wide|json|yaml] [-n namespace] 获取指定类型的资源信息,如kubectl get pods获取所有Pod信息。-n 指定命令空间 -o 指定输出格式
kubectl describe <resource_type> <resource_name> 显示指定资源的详细信息。
kubectl explain <resource>: 获取关于资源或资源字段的文档

(三)创建和删除资源

命令

作用

kubectl create -f <filename> 使用YAML或JSON文件创建资源。
kubectl create <resource> <resource_name> [-n ns]...... 使用命令创建
kubectl delete <resource_type> <resource_name> 删除指定类型的资源
kubectl run <pod-name> --image=<image> 在集群中运行一个指定的镜像并创建一个Deployment或Pod

(四)更新资源

命令

作用

kubectl apply -f <filename> 应用配置文件中的更改
kubectl replace -f <filename> 替换现有的资源配置
kubectl set SUBCOMMAND [options] 快速修改资源属性
kubectl set image deployment/<deployment-name> <container-name>=<image> 更新Deployment中的容器镜像

(五)执行命令

命令

作用

kubectl exec -it <pod-name> -- <command> 在Pod中的一个容器中执行命令

(六)日志和事件

命令

作用

kubectl logs <pod-name> 获取Pod中容器的日志
kubectl get events 获取集群中的事件信息

(七)扩容与缩容

命令

作用

kubectl scale --replicas=<replicas> deployment/<deployment-name> 缩放Deployment的副本集大小

(八)更新版本与回滚

命令

作用

kubectl set image deployment/<deployment-name> <container-name>=<image> 更新Deployment中的容器镜像
kubectl rollout status deployment/<deployment-name> 检查Deployment的滚动更新状态
kubectl rollout undo deployment/<deployment-name> 回滚Deployment的更改

(九)其他常用命令

命令

作用

kubectl top node 显示节点的资源(CPU/内存/存储)使用情况
kubectl top pod 显示Pod的资源使用情况
kubectl config use-context <context-name> 切换到指定的上下文
kubectl set SUBCOMMAND [options] 快速修改资源属性
kubectl config set-context --current --namespace=<namespace-name>
相关实践学习
通过Ingress进行灰度发布
本场景您将运行一个简单的应用,部署一个新的应用用于新的发布,并通过Ingress能力实现灰度发布。
容器应用与集群管理
欢迎来到《容器应用与集群管理》课程,本课程是“云原生容器Clouder认证“系列中的第二阶段。课程将向您介绍与容器集群相关的概念和技术,这些概念和技术可以帮助您了解阿里云容器服务ACK/ACK Serverless的使用。同时,本课程也会向您介绍可以采取的工具、方法和可操作步骤,以帮助您了解如何基于容器服务ACK Serverless构建和管理企业级应用。 学习完本课程后,您将能够: 掌握容器集群、容器编排的基本概念 掌握Kubernetes的基础概念及核心思想 掌握阿里云容器服务ACK/ACK Serverless概念及使用方法 基于容器服务ACK Serverless搭建和管理企业级网站应用
相关文章
|
Kubernetes Shell 容器
Kubernetes的kubectl命令补全
Kubernetes的kubectl命令补全
219 0
|
Kubernetes 应用服务中间件 nginx
kubernetes集群命令行工具kubectl介绍&yaml文件介绍-20230208
kubernetes集群命令行工具kubectl介绍&yaml文件介绍-20230208
206 0
|
3月前
|
Kubernetes 监控 API
在K8S中,什么是 Minikube、Kubectl、Kubelet?
在K8S中,什么是 Minikube、Kubectl、Kubelet?
|
3月前
|
Kubernetes 监控 API
在K8S中,Minikube、Kubectl、Kubelet是什么?
在K8S中,Minikube、Kubectl、Kubelet是什么?
|
6月前
|
Shell 应用服务中间件 Docker
kubectl创建简单的pod
kubectl创建简单的pod
|
6月前
|
JSON Kubernetes 数据安全/隐私保护
Kubectl
Kubectl 是一个命令行工具,用于管理 Kubernetes 集群。它可以用来创建、删除、更新和查询 Kubernetes 资源,例如部署、服务、副本集等。Kubectl 提供了丰富的命令和选项,可以满足各种管理需求。
76 3
|
6月前
|
Kubernetes 容器
kubectl 操作deployment 的常用命令
kubectl 是 Kubernetes 的命令行工具,用于管理和操作 Kubernetes 集群。以下是一些常用的 kubectl 命令用于操作 Deployment: 1. 创建一个 Deployment: ``` kubectl create deployment <deployment-name> --image=<image-name> ``` 2. 查看 Deployment 列表: ``` kubectl get deployments ``` 3. 查看 Deployment 的详细信息: ``` kubectl de
898 0
|
Kubernetes 应用服务中间件 nginx
【K8S系列】第十讲:kubectl 命令大全
【K8S系列】第十讲:kubectl 命令大全
296 0
|
Kubernetes 应用服务中间件 API
【K8S系列】第八讲:Kubernetes 之kubectl 常用命令汇总
【K8S系列】第八讲:Kubernetes 之kubectl 常用命令汇总
267 0
|
Perl
kubectl 常用命令(kubectl常用命令汇总)
kubectl 常用命令(kubectl常用命令汇总)
232 0