diff --git a/docs/getting-started-guides/rkt/README.md b/docs/getting-started-guides/rkt/README.md index 05ebcee97f2..909e23335dd 100644 --- a/docs/getting-started-guides/rkt/README.md +++ b/docs/getting-started-guides/rkt/README.md @@ -38,36 +38,31 @@ We still have [a bunch of work](http://issue.k8s.io/8262) to do to make the expe ### **Prerequisite** -- [systemd](http://www.freedesktop.org/wiki/Software/systemd/) should be installed on your machine and should be enabled. The minimum version required at this moment (2015/05/28) is [215](http://lists.freedesktop.org/archives/systemd-devel/2014-July/020903.html). +- [systemd](http://www.freedesktop.org/wiki/Software/systemd/) should be installed on the machine and should be enabled. The minimum version required at this moment (2015/09/01) is 219 *(Note that systemd is not required by rkt itself, we are using it here to monitor and manage the pods launched by kubelet.)* - Install the latest rkt release according to the instructions [here](https://github.com/coreos/rkt). - The minimum version required for now is [v0.5.6](https://github.com/coreos/rkt/releases/tag/v0.5.6). - -- Make sure the `rkt metadata service` is running because it is necessary for running pod in private network mode. - More details about the networking of rkt can be found in the [documentation](https://github.com/coreos/rkt/blob/master/Documentation/networking.md). - - To start the `rkt metadata service`, you can simply run: - - ```console - $ sudo rkt metadata-service - ``` - - If you want the service to be running as a systemd service, then: - - ```console - $ sudo systemd-run rkt metadata-service - ``` - - Alternatively, you can use the [rkt-metadata.service](https://github.com/coreos/rkt/blob/master/dist/init/systemd/rkt-metadata.service) and [rkt-metadata.socket](https://github.com/coreos/rkt/blob/master/dist/init/systemd/rkt-metadata.socket) to start the service. + The minimum version required for now is [v0.8.0](https://github.com/coreos/rkt/releases/tag/v0.8.0). +- Note that for rkt version later than v0.7.0, `metadata service` is not required for running pods in private networks. So now rkt pods will not register the metadata service be default. ### Local cluster -To use rkt as the container runtime, you just need to set the environment variable `CONTAINER_RUNTIME`: +To use rkt as the container runtime, we need to supply `--container-runtime=rkt` and `--rkt-path=$PATH_TO_RKT_BINARY` to kubelet. Additionally we can provide `--rkt-stage1-image` flag +as well to select which [stage1 image](https://github.com/coreos/rkt/blob/master/Documentation/running-lkvm-stage1.md) we want to use. + +If you are using the [hack/local-up-cluster.sh](../../../hack/local-up-cluster.sh) script to launch the local cluster, then you can edit the environment variable `CONTAINER_RUNTIME`, `RKT_PATH` and `RKT_STAGE1_IMAGE` to +set these flags: ```console $ export CONTAINER_RUNTIME=rkt +$ export RKT_PATH=$PATH_TO_RKT_BINARY +$ export RKT_STAGE1_IMAGE=PATH=$PATH_TO_STAGE1_IMAGE +``` + +Then we can launch the local cluster using the script: + +```console $ hack/local-up-cluster.sh ``` @@ -85,7 +80,7 @@ $ export KUBE_CONTAINER_RUNTIME=rkt You can optionally choose the version of rkt used by setting `KUBE_RKT_VERSION`: ```console -$ export KUBE_RKT_VERSION=0.5.6 +$ export KUBE_RKT_VERSION=0.8.0 ``` Then you can launch the cluster by: @@ -109,7 +104,7 @@ $ export KUBE_CONTAINER_RUNTIME=rkt You can optionally choose the version of rkt used by setting `KUBE_RKT_VERSION`: ```console -$ export KUBE_RKT_VERSION=0.5.6 +$ export KUBE_RKT_VERSION=0.8.0 ``` You can optionally choose the CoreOS channel by setting `COREOS_CHANNEL`: @@ -134,6 +129,46 @@ See [a simple nginx example](../../../docs/user-guide/simple-nginx.md) to try ou For more complete applications, please look in the [examples directory](../../../examples/). +### Debugging + +Here are severals tips for you when you run into any issues. + +##### Check logs + +By default, the log verbose level is 2. In order to see more logs related to rkt, we can set the verbose level to 4. +For local cluster, we can set the environment variable: `LOG_LEVEL=4`. +If the cluster is using salt, we can edit the [logging.sls](../../../cluster/saltbase/pillar/logging.sls) in the saltbase. + +##### Check rkt pod status + +To check the pods' status, we can use rkt command, such as `rkt list`, `rkt status`, `rkt image list`, etc. +More information about rkt command line can be found [here](https://github.com/coreos/rkt/blob/master/Documentation/commands.md) + +##### Check journal logs + +As we use systemd to launch rkt pods(by creating service files which will run `rkt run-prepared`, we can check the pods' log +using `journalctl`: + +- Check the running state of the systemd service: + +```console +$ sudo journalctl -u $SERVICE_FILE +``` + +where `$SERVICE_FILE` is the name of the service file created for the pod, you can find it in the kubelet logs. + +##### Check the log of the container in the pod: + +```console +$ sudo journalctl -M rkt-$UUID -u $CONTAINER_NAME +``` + +where `$UUID` is the rkt pod's UUID, which you can find via `rkt list --full`, and `$CONTAINER_NAME` is the container's name. + +##### Check Kubernetes events, logs. + +Besides above tricks, Kubernetes also provides us handy tools for debugging the pods. More information can be found [here](../../../docs/user-guide/application-troubleshooting.md) + [![Analytics](https://kubernetes-site.appspot.com/UA-36037335-10/GitHub/docs/getting-started-guides/rkt/README.md?pixel)]()