OpenShiftのocコマンドの基本
OpenShiftを利用するにあたって、最初に覚えておいたほうが良いいくつかのコマンドがあります。例えばoc get all
とoc get event
です。うまくいかないときなどは大抵この2つを参照することになります。
ocコマンドはヘルプが充実しているので、わからないことがあったらまず-h
オプションを付与するクセをつけましょう。oc -h
の出力を末尾にのせておきます。
利用頻度順にいくつか紹介します。
oc get all oc get event oc logs POD_NAME oc rsh POD_NAME oc debug DC_NAME oc explain
oc get all
とりあえず状況を見るのに便利なのがoc get all
です。-o wide
オプションを付けるとノード名表示などちょっと情報が増えるので基本的につけたほうが良いです。
$ oc get all -o wide NAME TYPE FROM LATEST buildconfigs/hello-sinatra Source Git 1 NAME TYPE FROM STATUS STARTED DURATION builds/hello-sinatra-1 Source Git@cf28c79 Complete 4 days ago 1m16s NAME DOCKER REPO TAGS UPDATED imagestreams/hello-sinatra 172.30.1.1:5000/test-ruby/hello-sinatra latest 4 days ago NAME REVISION DESIRED CURRENT TRIGGERED BY deploymentconfigs/hello-sinatra 1 1 1 config,image(hello-sinatra:latest) NAME HOST/PORT PATH SERVICES PORT TERMINATION WILDCARD routes/hello-sinatra hello-sinatra-test-ruby.192.168.42.225.xip.io hello-sinatra 8080-tcp None NAME READY STATUS RESTARTS AGE IP NODE po/hello-sinatra-1-build 0/1 Completed 0 4d 172.17.0.2 localhost po/hello-sinatra-1-jxqm5 1/1 Running 1 4d 172.17.0.3 localhost NAME DESIRED CURRENT READY AGE CONTAINER(S) IMAGE(S) SELECTOR rc/hello-sinatra-1 1 1 1 4d hello-sinatra 172.30.1.1:5000/test-ruby/hello-sinatra@sha256:623df61eea9fb550df241a2cd8e909b44fd2fb69a4d82298f7221f5c92488167 app=hello-sinatra,deployment=hello-sinatra-1,deploymentconfig=hello-sinatra NAME CLUSTER-IP EXTERNAL-IP PORT(S) AGE SELECTOR svc/hello-sinatra 172.30.168.102 <none> 8080/TCP 4d app=hello-sinatra,deploymentconfig=hello-sinatra
oc get all -o yaml
を実行するとyaml形式で全ての情報をダンプします。バックアップ目的や詳細まで全てチェックする目的で取得することが多いですが、量が多いので基本的にはファイルにリダイレクトして保存して参照することになるでしょう。
また、ocに--loglevel=7
というオプションを付与することによりREST APIコールのログを全て見ることができます。たとえばoc get all
は以下のAPIの情報を参照しています。
$ oc get all --loglevel=7 2>&1 | grep http I1205 16:23:49.320760 1645 round_trippers.go:383] GET https://192.168.42.225:8443/oapi/v1/namespaces/test-ruby/buildconfigs I1205 16:23:49.335285 1645 round_trippers.go:383] GET https://192.168.42.225:8443/oapi/v1/namespaces/test-ruby/builds I1205 16:23:49.337681 1645 round_trippers.go:383] GET https://192.168.42.225:8443/oapi/v1/namespaces/test-ruby/imagestreams I1205 16:23:49.339604 1645 round_trippers.go:383] GET https://192.168.42.225:8443/oapi/v1/namespaces/test-ruby/deploymentconfigs I1205 16:23:49.341773 1645 round_trippers.go:383] GET https://192.168.42.225:8443/oapi/v1/namespaces/test-ruby/routes I1205 16:23:49.343972 1645 round_trippers.go:383] GET https://192.168.42.225:8443/api/v1/namespaces/test-ruby/pods I1205 16:23:49.350071 1645 round_trippers.go:383] GET https://192.168.42.225:8443/api/v1/namespaces/test-ruby/replicationcontrollers I1205 16:23:49.352935 1645 round_trippers.go:383] GET https://192.168.42.225:8443/api/v1/namespaces/test-ruby/services I1205 16:23:49.355540 1645 round_trippers.go:383] GET https://192.168.42.225:8443/apis/apps/v1beta1/namespaces/test-ruby/statefulsets I1205 16:23:49.357334 1645 round_trippers.go:383] GET https://192.168.42.225:8443/apis/autoscaling/v1/namespaces/test-ruby/horizontalpodautoscalers I1205 16:23:49.359109 1645 round_trippers.go:383] GET https://192.168.42.225:8443/apis/batch/v1/namespaces/test-ruby/jobs I1205 16:23:49.360826 1645 round_trippers.go:383] GET https://192.168.42.225:8443/apis/batch/v2alpha1/namespaces/test-ruby/cronjobs I1205 16:23:49.362590 1645 round_trippers.go:383] GET https://192.168.42.225:8443/apis/extensions/v1beta1/namespaces/test-ruby/deployments I1205 16:23:49.364211 1645 round_trippers.go:383] GET https://192.168.42.225:8443/apis/extensions/v1beta1/namespaces/test-ruby/replicasets
oc get event
イベントログを参照します。デプロイがうまくいかない、といった問題のヒントや原因などはほぼ全てイベントログに出力されています。CLI上でデプロイの試行錯誤をしているようなときはwatchオプション-w
を利用して、常にログを出すようにしていると状況がわかりやすいです。
oc get event -w &
oc logs POD_NAME
コンテナのログを参照します。--timestamps
オプションを付与するとコンテナがログにタイムスタンプを付与するかどうかにかかわらず一律でログのタイムスタンプを一緒に表示してくれます。
CrashLoop中のpodなどに対しては-p
オプションを指定することで、前回起動時のログを参照できます。
oc logs --timestamps POD_NAME oc logs -p --timestamps POD_NAME
oc rsh POD_NAME
podの中のシェルに入ることができます。コンテナ内での調査に利用します。
oc rsh POD_NAME
oc debug DC_NAME
debug用のpodを立ち上げます。コンテナイメージのEntrypointやCmdで指定されているコマンドは実行されず、シェルに入ることができるので、EntrypointやCmdで指定されているコマンドが即異常終了してしまう、といったoc rsh
では調査の難しい問題に利用できます。
oc debug dc/hello-sinatra
oc explain RESOURCE_TYPE
各リソースの説明を表示してくれます。dc.spec.template
など各リソースのyamlの構造に合わせて指定していくことで、設定項目名が思い出せない場合や、どのような設定が可能なのかといったことを調べることができます。
$ oc explain dc.spec.template RESOURCE: template <Object> DESCRIPTION: Template is the object that describes the pod that will be created if insufficient replicas are detected. PodTemplateSpec describes the data a pod should have when created from a template FIELDS: metadata <Object> Standard object's metadata. More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#metadata spec <Object> Specification of the desired behavior of the pod. More info: https:// git.k8s.io/community/contributors/devel/api-conventions.md#spec-and-status/
ヘルプ
ocコマンドはヘルプが充実しています。各サブコマンドも-h
オプションを付与することでヘルプが出力されます。
$ oc -h OpenShift Client This client helps you develop, build, deploy, and run your applications on any OpenShift or Kubernetes compatible platform. It also includes the administrative commands for managing a cluster under the 'adm' subcommand. Basic Commands: types An introduction to concepts and types login Log in to a server new-project Request a new project new-app Create a new application status Show an overview of the current project project Switch to another project projects Display existing projects explain Documentation of resources cluster Start and stop OpenShift cluster Build and Deploy Commands: rollout Manage a Kubernetes deployment or OpenShift deployment config rollback Revert part of an application back to a previous deployment new-build Create a new build configuration start-build Start a new build cancel-build Cancel running, pending, or new builds import-image Imports images from a Docker registry tag Tag existing images into image streams Application Management Commands: get Display one or many resources describe Show details of a specific resource or group of resources edit Edit a resource on the server set Commands that help set specific features on objects label Update the labels on a resource annotate Update the annotations on a resource expose Expose a replicated application as a service or route delete Delete one or more resources scale Change the number of pods in a deployment autoscale Autoscale a deployment config, deployment, replication controller, or replica set secrets Manage secrets serviceaccounts Manage service accounts in your project Troubleshooting and Debugging Commands: logs Print the logs for a resource rsh Start a shell session in a pod rsync Copy files between local filesystem and a pod port-forward Forward one or more local ports to a pod debug Launch a new instance of a pod for debugging exec Execute a command in a container proxy Run a proxy to the Kubernetes API server attach Attach to a running container run Run a particular image on the cluster cp Copy files and directories to and from containers. Advanced Commands: adm Tools for managing a cluster create Create a resource by filename or stdin replace Replace a resource by filename or stdin apply Apply a configuration to a resource by filename or stdin patch Update field(s) of a resource using strategic merge patch process Process a template into list of resources export Export resources so they can be used elsewhere extract Extract secrets or config maps to disk idle Idle scalable resources observe Observe changes to resources and react to them (experimental) policy Manage authorization policy auth Inspect authorization convert Convert config files between different API versions import Commands that import applications image Useful commands for managing images Settings Commands: logout End the current server session config Change configuration files for the client whoami Return information about the current session completion Output shell completion code for the specified shell (bash or zsh) Other Commands: help Help about any command plugin Runs a command-line plugin version Display client and server versions Use "oc <command> --help" for more information about a given command. Use "oc options" for a list of global command-line options (applies to all commands).