一,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.24
、10.244.1.25
和10.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> |