kubectl命令举例

为了使读者能够快速掌握kubectl命令的使用方法,下面对常用的命令进行介绍。

1. kubectl create命令

此命令通过文件或者标准输入创建一个资源对象,支持YAML或者JSON格式的配置文件。例如,如果用户创建了一个Nginx的YAML配置文件,其内容如下:

apiVersion: v1

kind: ReplicationController

metadata:

  name: nginx-controller

spec:

  replicas: 2

  selector:

    name: nginx

  template:

    metadata:

      labels:

        name: nginx

    spec:

      containers:

        - name: nginx

          image: nginx

          ports:

            - containerPort: 80

用户可以使用以下命令创建MySQL的副本控制器:

$ kubectl create -f nginx.yaml

replicationcontroller "nginx-controller" created

2. kubectl get命令

用户可以通过此命令列出一个或多个资源对象,该命令的参数为资源类型名称。例如,使用下面的命令列出当前命名空间下的节点:

$ kubectl get nodes

NAME              STATUS       AGE

192.168.1.122   Ready        12d

192.168.1.123   Ready        12d

使用下面的命令列出所有的服务:

$ kubectl get services

NAME         CLUSTER-IP       EXTERNAL-IP      PORT(S)      AGE

kubernetes  10.254.0.1                   443/TCP      12d

...

需要在Node上执行,准备redhat-ca.cr文件:

$ yum install *rhsm*

$ wget http://mirror.centos.org/centos/7/os/x86_64/Packages/ python-rhsm-certificates-1.19.10-1.el7_4.x86_64.rpm

$ rpm2cpio python-rhsm-certificates-1.19.10-1.el7_4.x86_64.rpm | cpio -iv --to-stdout ./etc/rhsm/ca/redhat-uep.pem | tee /etc/rhsm/ca/redhat-uep.pem

$ docker pull registry.access.redhat.com/rhel7/pod-infrastructure:latest

下面的命令以比较详细的方式列出当前命名空间中的Pod:

$ kubectl get pods -o wide

NAME                      READY   STATUS  RESTARTS     AGE IP             NODE

nginx-controller-g5165   1/1     Running 0             4m  172.17.0.3   127.0.0.1

nginx-controller-zz0dk   1/1     Running 0             4m  172.17.0.2   127.0.0.1

...

3. kubectl describe命令

此命令用于显示一个或多个资源对象的详细信息。例如,我们想要获取名称为nginx-controller-g5165的Pod的详细信息,可以使用以下命令:

$ kubectl describe pods/nginx-controller-g5165

Name:           nginx-controller-g5165

Namespace:      default

Node:           127.0.0.1/127.0.0.1

Start Time:     Sat, 23 Mar 2023 07:00:19 +0800

Labels:         name=nginx

Status:         Running

IP:             172.17.0.3

Controllers:    ReplicationController/nginx-controller

Containers:

  nginx:

    Container ID:               docker://5c427e437a4cb413e33b12c3dcc5d16ec1772876a4e5552669d842edf8bb1372

    Image:                      nginx

    Image ID:                   docker-pullable://docker.io/ nginx@sha256:98efe605f61725fd817ea69521b0eeb32bef007af0e3d0aeb6258c6e6fe7fc1a

    Port:                       80/TCP

    State:                      Running

    Started:                   Sat, 23 Mar 2023 07:03:37 +0800

    Ready:                      True

    Restart Count:             0

    Volume Mounts:            

    Environment Variables:  

Conditions:

  Type          Status

  Initialized   True

  Ready         True

  PodScheduled  True

No volumes.

...

4. kubectl exec命令

此命令用于在Pod的容器中执行一个命令。例如,下面的命令在名称为my-nginx- 379829228-8gfbb的容器中执行/bin/bash命令:

$ kubectl exec -it my-nginx-379829228-8gfbb /bin/bash

root@my-nginx-379829228-8gfbb:/#

$ kubectl exec -it nginx-c5cff9dcc-dr88w /bin/bash

执行完以后,可以发现Shell的命令提示符发生了变化,表明已经进入了容器的Shell环境中。

如果想要在容器中执行ls命令,可以使用以下方式:

$ kubectl exec nginx-controller-g5165 ls

bin

boot

dev

etc

home

lib

lib64

media

...

在上面的命令中,nginx-controller-g5165为Pod的名称。

5. kubectl run命令

该命令用来创建一个应用。与kubectl create命令不同,在该命令中,所有的选项可以通过命令行指定。例如,使用下面的命令创建一个Nginx应用:

$ kubectl run --image=nginx nginx-app --port=8080

deployment "nginx-app" created

执行完之后,通过get命令查看创建进度,如下所示:

$ kubectl get pods

NAME                            READY        STATUS       RESTARTS         AGE

nginx-app-2743647498-f6qc6   1/1           Running      0                  1m

...

可以得知,刚刚创建的Pod已经处于运行状态。

6. kubectl delete命令

该命令用来删除集群中的资源。例如,下面的命令删除名称为nginx-controller-zz0dk的Pod:

$ kubectl delete pods/nginx-controller-zz0dk

pod "nginx-controller-zz0dk" deleted

除了上面介绍的几个命令之外,kubectl还提供了许多功能强大的命令,读者可以参考其他的技术文档,在此不再详细介绍。

kubectl命令举例_第1张图片

你可能感兴趣的:(kubernetes,docker)