Merge pull request #1784 from Random-Liu/update-nct-doc

Update node conformance test document.
This commit is contained in:
devin-donnelly
2016-12-02 14:34:55 -08:00
committed by GitHub
+42 -56
View File
@@ -9,54 +9,52 @@ assignees:
## Node Conformance Test ## Node Conformance Test
*Node conformance test* is a test framework validating whether a node meets the *Node conformance test* is a containerized test framework that provides a system
minimum requirement of Kubernetes with a set of system verification and verification and functionality test for a node. The test validates whether the
functionality test. A node which passes the tests is qualified to join a node meets the minimum requirements for Kubernetes; a node that passes the test
Kubernetes cluster. is qualified to join a Kubernetes cluster.
## Limitations ## Limitations
There are following limitations in the current implementation of node In Kubernetes version 1.5, node conformance test has the following limitations:
conformance test. They'll be improved in future version.
* Node conformance test only supports Docker as the container runtime. * Node conformance test only supports Docker as the container runtime.
* Node conformance test doesn't validate network related system configurations
and functionalities.
## Prerequisite ## Node Prerequisite
Node conformance test is used to test whether a node is ready to join a To run node conformance test, a node must satisfy the same prerequisites as a
Kubernetes cluster, so the prerequisite is the same with a standard Kubernetes standard Kubernetes node. At a minimum, the node should have the following
node. At least, the node should have properly installed: daemons installed:
* Container Runtime (Docker) * Container Runtime (Docker)
* Kubelet * Kubelet
Node conformance test validates kernel configurations. If the kenrel module ## Running Node Conformance Test
`configs` is built as module in your environment, it must be loaded before the
test. (See [Caveats #3](#caveats) for more information)
## Usage To run the node conformance test, perform the following steps:
### Run Node Conformance Test 1. Point your Kubelet to localhost `--api-servers="http://localhost:8080"`,
because the test framework starts a local master to test Kubelet. There are some
other Kubelet flags you may care:
* `--pod-cidr`: If you are using `kubenet`, you should specify an arbitrary CIDR
to Kubelet, for example `--pod-cidr=10.180.0.0/24`.
* `--cloud-provider`: If you are using `--cloud-provider=gce`, you should
remove the flag to run the test.
* **Step 1:** Point your Kubelet to localhost `--api-servers="http://localhost:8080"`, 2. Run the node conformance test with command:
because the test framework starts a local master to test Kubelet.
* **Step 2:** Run the node conformance test with command:
```shell ```shell
# $CONFIG_DIR is the pod manifest path of your kubelet. # $CONFIG_DIR is the pod manifest path of your Kubelet.
# $LOG_DIR is the test output path. # $LOG_DIR is the test output path.
sudo docker run -it --rm --privileged --net=host \ sudo docker run -it --rm --privileged --net=host \
-v /:/rootfs:ro -v /var/run:/var/run \ -v /:/rootfs -v $CONFIG_DIR:$CONFIG_DIR -v $LOG_DIR:/var/result \
-v $CONFIG_DIR:/etc/manifest -v $LOG_DIR:/var/result \ gcr.io/google_containers/node-test:0.2
gcr.io/google_containers/node-test-amd64:v0.1
``` ```
### Run Node Conformance Test for Other Architectures ## Running Node Conformance Test for Other Architectures
We also build node conformance test docker images for other architectures: Kubernetes also provides node conformance test docker images for other
architectures:
Arch | Image | Arch | Image |
--------|:-----------------:| --------|:-----------------:|
@@ -64,25 +62,16 @@ We also build node conformance test docker images for other architectures:
arm | node-test-arm | arm | node-test-arm |
arm64 | node-test-arm64 | arm64 | node-test-arm64 |
### Run Selected Test ## Running Selected Test
In fact, Node conformance test is a containerized version of [node e2e
test](https://github.com/kubernetes/kubernetes/blob/release-1.4/docs/devel/e2e-node-tests.md).
By default, it runs all conformance test.
Theoretically, you can run any node e2e test if you configure the container and
mount required volumes properly. But **it is strongly recommended to only run conformance
test**, because the non-conformance test needs much more complex framework configuration.
To run specific tests, overwrite the environment variable `FOCUS` with the To run specific tests, overwrite the environment variable `FOCUS` with the
regular expression of tests you want to run. regular expression of tests you want to run.
```shell ```shell
sudo docker run -it --rm --privileged --net=host \ sudo docker run -it --rm --privileged --net=host \
-v /:/rootfs:ro -v /var/run:/var/run \ -v /:/rootfs:ro -v $CONFIG_DIR:$CONFIG_DIR -v $LOG_DIR:/var/result \
-v $CONFIG_DIR:/etc/manifest -v $LOG_DIR:/var/result \
-e FOCUS=MirrorPod \ # Only run MirrorPod test -e FOCUS=MirrorPod \ # Only run MirrorPod test
gcr.io/google_containers/node-test-amd64:v0.1 gcr.io/google_containers/node-test:0.2
``` ```
To skip specific tests, overwrite the environment variable `SKIP` with the To skip specific tests, overwrite the environment variable `SKIP` with the
@@ -90,25 +79,22 @@ regular expression of tests you want to skip.
```shell ```shell
sudo docker run -it --rm --privileged --net=host \ sudo docker run -it --rm --privileged --net=host \
-v /:/rootfs:ro -v /var/run:/var/run \ -v /:/rootfs:ro -v $CONFIG_DIR:$CONFIG_DIR -v $LOG_DIR:/var/result \
-v $CONFIG_DIR:/etc/manifest -v $LOG_DIR:/var/result \ -e SKIP=MirrorPod \ # Run all conformance tests but skip MirrorPod test
-e SKIP=MirrorPod \ # Run all conformance test and skip MirrorPod test gcr.io/google_containers/node-test:0.2
gcr.io/google_containers/node-test-amd64:v0.1
``` ```
### Caveats Node conformance test is a containerized version of [node e2e test](https://github.com/kubernetes/kubernetes/blob/release-1.5/docs/devel/e2e-node-tests.md).
By default, it runs all conformance tests.
* The test will leave some docker images on the node, including the node Theoretically, you can run any node e2e test if you configure the container and
conformance test image and images of containers used in the functionality mount required volumes properly. But **it is strongly recommended to only run conformance
test**, because it requires much more complex configuration to run non-conformance test.
## Caveats
* The test leaves some docker images on the node, including the node conformance
test image and images of containers used in the functionality
test. test.
* The test will leave dead containers on the node, these containers are created * The test leaves dead containers on the node. These containers are created
during the functionality test. during the functionality test.
* Node conformance test validates kernel configuration. However, in some os
distro the kernel module `configs` may not be loaded by default, and you will get
the error `no config path in [POSSIBLE KERNEL CONFIG FILE PATHS] is
available`. In that case please do either of the followings:
* Manually load/unload `configs` kernel module: run `sudo modprobe configs` to
load the kernel module, and `sudo modprobe -r configs` to unload it after the test.
* Mount `modprobe` into the container: Add option `-v /bin/kmod:/bin/kmod
-v /sbin/modprobe:/sbin/modprobe -v /lib/modules:/lib/modules` when starting
the test container.