Kubernetes之kubectl常用命令使用指南:3:故障对应

本文详细介绍了在Kubernetes中进行故障对应时,如何使用kubectl的几个关键命令,包括create、edit、replace、patch、apply、scale、kube autoscale、cordon与uncordon以及drain。通过实例展示了这些命令的用途、执行步骤和效果,帮助读者掌握在集群管理中应对故障的方法。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

这里写图片描述
kubectl是一个用于操作kubernetes集群的命令行接口,通过利用kubectl的各种命令可以实现各种功能,是在使用kubernetes中非常常用的工具。这里我们会通过一些简单的实例来展现其中一些高频命令的使用方法。
更为重要的是这些命令使用的场景以及能够解决什么样的问题。上篇文章我们介绍了故障排查时常用的九条命令,这篇文章我们来看一下故障对应时最常用的另外九条命令。

常用命令

kubectl故障对应相关,本文将会简单介绍一下如下命令

项番 命令 说明
No.1 edit 编辑服务器侧资源
No.2 replace 使用文件名或者标准输入资源
No.3 patch 部分更新资源相关信息
No.4 apply 使用文件或者标准输入更改配置信息
No.5 scale 重新设定Deployment/ReplicaSet/RC/Job的size
No.6 autoscale Deployment/ReplicaSet/RC的自动扩展设定
No.7 cordon 设定node不可使用
No.8 uncordon 设定node可以使用
No.9 drain 设定node进入维护模式

事前准备

版本

[root@ku8-1 tmp]# kubectl version
Client Version: version.Info{
   Major:"1", Minor:"5", GitVersion:"v1.5.2", GitCommit:"08e099554f3c31f6e6f07b448ab3ed78d0520507", GitTreeState:"clean", BuildDate:"2017-01-12T04:57:25Z", GoVersion:"go1.7.4", Compiler:"gc", Platform:"linux/amd64"}
Server Version: version.Info{
   Major:"1", Minor:"5", GitVersion:"v1.5.2", GitCommit:"08e099554f3c31f6e6f07b448ab3ed78d0520507", GitTreeState:"clean", BuildDate:"2017-01-12T04:52:34Z", GoVersion:"go1.7.4", Compiler:"gc", Platform:"linux/amd64"}
[root@ku8-1 tmp]#

集群构成

一主三从的Kubernetes集群

项番 类型 Hostname IP
No.1 Master ku8-1 192.168.32.131
No.1 Node ku8-2 192.168.32.132
No.1 Node ku8-3 192.168.32.133
No.1 Node ku8-4 192.168.32.134
[root@ku8-1 tmp]# kubectl get nodes
NAME             STATUS    AGE
192.168.32.132   Ready     12m
192.168.32.133   Ready     11m
192.168.32.134   Ready     11m
[root@ku8-1 tmp]# 

事前准备

镜像准备

使用如下官方镜像进行实验,因为主要用于示例,自行使用各种镜像均可

镜像 版本 说明
nginx-alpine 1.12 nginx的1.12的alpine版本的官方镜像
nginx-alpine 1.13 nginx的1.13的alpine版本的官方镜像

设定yaml

使用Deployment方式启动nginx的pod加上service的设定,简单如下:

[root@ku8-1 tmp]# cat nginx/nginx.yaml 
---
kind: Deployment
apiVersion: extensions/v1beta1
metadata:
  name: nginx
spec:
  replicas: 1
  template:
    metadata:
      labels:
        name: nginx
    spec:
      containers:
      - name: nginx
        image: 192.168.32.131:5000/nginx:1.12-alpine
        ports:
        - containerPort: 80
          protocol: TCP
---
kind: Service
apiVersion: v1
metadata:
  name: nginx
  labels:
    name: nginx
spec:
  type: NodePort
  ports:
  - protocol: TCP
    nodePort: 31001
    targetPort: 80
    port: 80
  selector:
    name: nginx
[root@ku8-1 tmp]#

kubectl create

创建pod/deployment/service

[root@ku8-1 tmp]# kubectl create -f nginx/
deployment "nginx" created
service "nginx" created
[root@ku8-1 tmp]# 

确认

创建pod/deployment/service

[root@ku8-1 tmp]# kubectl get service
NAME         CLUSTER-IP        EXTERNAL-IP   PORT(S)        AGE
kubernetes   172.200.0.1       <none>        443/TCP        1d
nginx        172.200.229.212   <nodes>       80:31001/TCP   58s
[root@ku8-1 tmp]# kubectl get pod
NAME                     READY     STATUS    RESTARTS   AGE
nginx-2476590065-1vtsp   1/1       Running   0          1m
[root@ku8-1 tmp]# kubectl get deploy
NAME      DESIRED   CURRENT   UP-TO-DATE   AVAILABLE   AGE
nginx     1         1         1            1           1m
[root@ku8-1 tmp]# 

kubectl edit

edit这条命令用于编辑服务器上的资源,具体是什么意思,可以通过如下使用方式来确认。

编辑对象确认

使用-o参数指定输出格式为yaml的nginx的service的设定情况确认,取得现场情况,这也是我们不知道其yaml文件而只有环境时候能做的事情。

[root@ku8-1 tmp]# kubectl get service |grep nginx
nginx        172.200.229.212   <nodes>       80:31001/TCP   2m
[root@ku8-1 tmp]# kubectl get service nginx -o yaml
apiVersion: v1
kind: Service
metadata:
  creationTimestamp: 2017-06-30T04:50:44Z
  labels:
    name: nginx
  name: nginx
  namespace: default
  resourceVersion: "77068"
  selfLink: /api/v1/namespaces/default/services/nginx
  uid: ad45612a-5d4f-11e7-91ef-000c2933b773
spec:
  clusterIP: 172.200.229.212
  ports:
  - nodePort: 31001
    port: 80
    protocol: TCP
    targetPort: 80
  selector:
    name: nginx
  sessionAffinity: None
  type: NodePort
status:
  loadBalancer: {}
[root@ku8-1 tmp]# 

使用edit命令对nginx的service设定进行编辑,得到如下信息

可以看到当前端口为31001,在此编辑中,我们把它修改为31002

[root@ku8-1 tmp]# kubectl edit service nginx
service "nginx" edited
[root@ku8-1 tmp]#

编辑之后确认结果发现,此服务端口已经改变

[root@ku8-1 tmp]# kubectl get service
NAME         CLUSTER-IP        EXTERNAL-IP   PORT(S)        AGE
kubernetes   172.200.0.1       <none>        44
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值