kubectl para usuarios de Docker

kubectl para usuarios de Docker

Puede utilizar la herramienta de línea de comandos de Kubernetes, kubectl, para interactuar con el servidor API. Usar kubectl es muy sencillo si está familiarizado con la herramienta de línea de comandos de Docker. Sin embargo, existen algunas diferencias entre los comandos de Docker y los comandos de kubectl. Los subcomandos de Docker se muestran a continuación y se describen los comandos de kubectl equivalentes.

ejecución de la ventana acoplable

Para ejecutar una implementación de nginx y exponerla, consulte kubectl create implementation

Utilice el comando Docker:

docker run -d --restart=always -e DOMAIN=cluster --name nginx-app -p 80:80 nginx
55c103fa129692154a7652490236fee9be47d70a8dd562281ae7d2f9a339a6db
docker ps
CONTAINER ID        IMAGE               COMMAND                  CREATED             STATUS              PORTS                NAMES
55c103fa1296        nginx               "nginx -g 'daemon of…"   9 seconds ago       Up 9 seconds        0.0.0.0:80->80/tcp   nginx-app

Utilice el comando kubectl:

# 启动运行 nginx 的 Pod
kubectl create deployment --image=nginx nginx-app
deployment.apps/nginx-app created
# 添加 env 到 nginx-app
kubectl set env deployment/nginx-app  DOMAIN=cluster
deployment.apps/nginx-app env updated

ilustrar:

El comando kubectl imprime el tipo y el nombre del recurso creado o mutado, que luego se puede usar en comandos posteriores. Después de la implementación, puede exponer nuevos servicios.

# 通过服务公开端口
kubectl expose deployment nginx-app --port=80 --name=nginx-http
service "nginx-http" exposed

En el comando kubectl, creamos una implementación, que garantizará que haya N Pods ejecutando nginx (N representa la cantidad de réplicas declaradas en la especificación y el valor predeterminado es 1). También creamos un servicio cuyo selector coincide con la etiqueta del contenedor. Consulte Uso de servicios para acceder a aplicaciones en un clúster para obtener más información.

De forma predeterminada, la imagen se ejecutará en segundo plano, similar a docker run -d..., si desea ejecutar en primer plano, use kubectl run para ejecutar el Pod en primer plano:

kubectl run [-i] [--tty] --attach <name> --image=<image>

A diferencia de docker run..., si se especifica --attach, nos adjuntaremos a stdin, stdout y stderr, y no tendremos control sobre a qué flujo de salida adjuntar (docker -a...). Para salir del contenedor, puede escribir Ctrl+P seguido de Ctrl+Q.

Debido a que usamos Deployment para iniciar el contenedor, si finaliza el proceso conectado (por ejemplo, ctrl-c), el contenedor se reiniciará, lo cual es diferente de docker run -it. Si desea destruir la implementación (y sus pods), debe ejecutar kubectl eliminar implementación <nombre>.

ventana acoplable ps

¿Cómo enumerar cuáles se están ejecutando? Ver kubectl get.

Utilice el comando Docker:

docker ps -a
CONTAINER ID        IMAGE               COMMAND                  CREATED              STATUS                     PORTS                NAMES
14636241935f        ubuntu:16.04        "echo test"              5 seconds ago        Exited (0) 5 seconds ago                        cocky_fermi
55c103fa1296        nginx               "nginx -g 'daemon of…"   About a minute ago   Up About a minute          0.0.0.0:80->80/tcp   nginx-app

Utilice el comando kubectl:

kubectl get po
NAME                        READY     STATUS      RESTARTS   AGE
nginx-app-8df569cb7-4gd89   1/1       Running     0          3m
ubuntu                      0/1       Completed   0          20s

adjuntar ventana acoplable

¿Cómo conectarse a un proceso que ya se está ejecutando en el contenedor? Ver adjunto kubectl.

Utilice el comando Docker:

docker ps
CONTAINER ID        IMAGE               COMMAND                  CREATED             STATUS              PORTS                NAMES
55c103fa1296        nginx               "nginx -g 'daemon of…"   5 minutes ago       Up 5 minutes        0.0.0.0:80->80/tcp   nginx-app
docker attach 55c103fa1296
...

kubectl:

kubectl get pods
NAME              READY     STATUS    RESTARTS   AGE
nginx-app-5jyvm   1/1       Running   0          10m
kubectl attach -it nginx-app-5jyvm
...

Para separarse del contenedor, puede escribir Ctrl+P seguido de Ctrl+Q.

ejecutivo de ventana acoplable

¿Cómo ejecutar comandos en el contenedor? Ver ejecutivo de kubectl.

Utilice el comando Docker:

docker ps
CONTAINER ID        IMAGE               COMMAND                  CREATED             STATUS              PORTS                NAMES
55c103fa1296        nginx               "nginx -g 'daemon of…"   6 minutes ago       Up 6 minutes        0.0.0.0:80->80/tcp   nginx-app
docker exec 55c103fa1296 cat /etc/hostname
55c103fa1296

Utilice el comando kubectl:

kubectl get po
NAME              READY     STATUS    RESTARTS   AGE
nginx-app-5jyvm   1/1       Running   0          10m
kubectl exec nginx-app-5jyvm -- cat /etc/hostname
nginx-app-5jyvm

¿Qué pasa con la ejecución de comandos interactivos?

Utilice el comando Docker:

docker exec -ti 55c103fa1296 /bin/sh
# exit

kubectl:

kubectl exec -ti nginx-app-5jyvm -- /bin/sh
# exit

Consulte Obtención del entorno Shell de un contenedor en ejecución para obtener más información.

registros acoplables

¿Cómo ver stdout/stderr de un proceso en ejecución? Ver registros de kubectl.

Utilice el comando Docker:

docker logs -f a9e
192.168.9.1 - - [14/Jul/2015:01:04:02 +0000] "GET / HTTP/1.1" 200 612 "-" "curl/7.35.0" "-"
192.168.9.1 - - [14/Jul/2015:01:04:03 +0000] "GET / HTTP/1.1" 200 612 "-" "curl/7.35.0" "-"

Utilice el comando kubectl:

kubectl logs -f nginx-app-zibvs
10.240.63.110 - - [14/Jul/2015:01:09:01 +0000] "GET / HTTP/1.1" 200 612 "-" "curl/7.26.0" "-"
10.240.63.110 - - [14/Jul/2015:01:09:02 +0000] "GET / HTTP/1.1" 200 612 "-" "curl/7.26.0" "-"

Ahora es el momento de mencionar una diferencia sutil entre Pods y contenedores; de forma predeterminada, el Pod no finalizará si un proceso en el Pod sale, sino que reiniciará el proceso. Esto es similar a la opción --restart=always para ejecutar Docker, que es la principal diferencia. En Docker, la salida de cada invocación de un proceso está concatenada, pero con Kubernetes, cada invocación es independiente. Para ver el resultado de ejecuciones anteriores en Kubernetes:

kubectl logs --previous nginx-app-zibvs
10.240.63.110 - - [14/Jul/2015:01:09:01 +0000] "GET / HTTP/1.1" 200 612 "-" "curl/7.26.0" "-"
10.240.63.110 - - [14/Jul/2015:01:09:02 +0000] "GET / HTTP/1.1" 200 612 "-" "curl/7.26.0" "-"

Consulte Esquema de registro para obtener más información.

parada de Docker y sala de Docker

¿Cómo detener y eliminar procesos en ejecución? Ver eliminación de kubectl.

Utilice el comando Docker:

docker ps
CONTAINER ID        IMAGE               COMMAND                CREATED             STATUS              PORTS                         NAMES
a9ec34d98787        nginx               "nginx -g 'daemon of"  22 hours ago        Up 22 hours         0.0.0.0:80->80/tcp, 443/tcp   nginx-app
docker stop a9ec34d98787
a9ec34d98787
docker rm a9ec34d98787
a9ec34d98787

Utilice el comando kubectl:

kubectl get deployment nginx-app
NAME         READY   UP-TO-DATE   AVAILABLE   AGE
nginx-app    1/1     1            1           2m
kubectl get po -l app=nginx-app
NAME                         READY     STATUS    RESTARTS   AGE
nginx-app-2883164633-aklf7   1/1       Running   0          2m
kubectl delete deployment nginx-app
deployment "nginx-app" deleted
kubectl get po -l app=nginx-app
# 什么都没有返回

ilustrar:

Tenga en cuenta que no eliminamos pods directamente. Usando el comando kubectl, queremos eliminar la implementación propietaria del Pod. Si eliminamos el Pod directamente, la Implementación recreará el Pod.

iniciar sesión en la ventana acoplable

No existe un análogo directo del inicio de sesión de Docker en kubectl. Si está interesado en utilizar Kubernetes en un registro privado, consulte Uso de un registro privado.

versión acoplable

¿Cómo comprobar la versión del cliente y del servidor? Verifique la versión de kubectl.

Utilice el comando Docker:

docker version
Client version: 1.7.0
Client API version: 1.19
Go version (client): go1.4.2
Git commit (client): 0baf609
OS/Arch (client): linux/amd64
Server version: 1.7.0
Server API version: 1.19
Go version (server): go1.4.2
Git commit (server): 0baf609
OS/Arch (server): linux/amd64

Utilice el comando kubectl:

kubectl version
Client Version: version.Info{Major:"1", Minor:"6", GitVersion:"v1.6.9+a3d1dfa6f4335", GitCommit:"9b77fed11a9843ce3780f70dd251e92901c43072", GitTreeState:"dirty", BuildDate:"2017-08-29T20:32:58Z", OpenPaasKubernetesVersion:"v1.03.02", GoVersion:"go1.7.5", Compiler:"gc", Platform:"linux/amd64"}
Server Version: version.Info{Major:"1", Minor:"6", GitVersion:"v1.6.9+a3d1dfa6f4335", GitCommit:"9b77fed11a9843ce3780f70dd251e92901c43072", GitTreeState:"dirty", BuildDate:"2017-08-29T20:32:58Z", OpenPaasKubernetesVersion:"v1.03.02", GoVersion:"go1.7.5", Compiler:"gc", Platform:"linux/amd64"}

información de la ventana acoplable

¿Cómo puedo obtener información diversa sobre el entorno y la configuración? Consulte información del clúster kubectl.

Utilice el comando Docker:

docker info
Containers: 40
Images: 168
Storage Driver: aufs
 Root Dir: /usr/local/google/docker/aufs
 Backing Filesystem: extfs
 Dirs: 248
 Dirperm1 Supported: false
Execution Driver: native-0.2
Logging Driver: json-file
Kernel Version: 3.13.0-53-generic
Operating System: Ubuntu 14.04.2 LTS
CPUs: 12
Total Memory: 31.32 GiB
Name: k8s-is-fun.mtv.corp.google.com
ID: ADUV:GCYR:B3VJ:HMPO:LNPQ:KD5S:YKFQ:76VN:IANZ:7TFV:ZBF4:BYJO
WARNING: No swap limit support

Utilice el comando kubectl:

kubectl cluster-info
Kubernetes master is running at https://203.0.113.141
KubeDNS is running at https://203.0.113.141/api/v1/namespaces/kube-system/services/kube-dns/proxy
kubernetes-dashboard is running at https://203.0.113.141/api/v1/namespaces/kube-system/services/kubernetes-dashboard/proxy
Grafana is running at https://203.0.113.141/api/v1/namespaces/kube-system/services/monitoring-grafana/proxy
Heapster is running at https://203.0.113.141/api/v1/namespaces/kube-system/services/monitoring-heapster/proxy
InfluxDB is running at https://203.0.113.141/api/v1/namespaces/kube-system/services/monitoring-influxdb/proxy

Supongo que te gusta

Origin blog.csdn.net/leesinbad/article/details/132416749
Recomendado
Clasificación