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