Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Validate HA configs #11

Open
adieu opened this issue May 14, 2017 · 9 comments
Open

Validate HA configs #11

adieu opened this issue May 14, 2017 · 9 comments

Comments

@adieu
Copy link
Collaborator

adieu commented May 14, 2017

There should be no service disruption when:

  • Master went down
  • One node goes offline
  • One node got OOM
  • One node got drained
@ledzep2
Copy link
Collaborator

ledzep2 commented May 15, 2017

Some thoughts on this one:

Need a test system to perform continuous test for a cluster definition (ex. our examples), especially HA tests:

  • Build a test cluster with certain configurations to test different scenarios
  • Automated build of master and nodes (maybe dynamically addition/removal of nodes too)
  • Automated deployment of some test applications
  • Disable some server or components to simulate a failure
  • Prform load test in the mean time and observe. Check for any service disruption (primary) and gather performance stats (secondary)
  • Tear down the test cluster

Part of this sounds out of reach of Archon. So it's potentially a new tool. Maybe a script that makes use of Archon. Maybe your new test framework too.

@adieu
Copy link
Collaborator Author

adieu commented May 16, 2017

Will https://github.com/kubernetes/test-infra be helpful?

@ledzep2
Copy link
Collaborator

ledzep2 commented May 16, 2017

Possible.

But due to lack of documentation, we have limited knowledge of what it is and how it should be used. For a deployed cluster, the most useful tests are e2e tests, which can be run from remote and are perfect for this case. However after looking through conformance test code, I suspect they don't really cover the issues listed above.

@adieu
Copy link
Collaborator Author

adieu commented May 16, 2017

Can we build something like chaos monkey to simulate failures while watching for overall service health? We could leave it running for a while and gather some stats.

I think all the failure cases can be tested in a e2e tests. Maybe we just need a way to detect service disruption.

@ledzep2
Copy link
Collaborator

ledzep2 commented May 16, 2017

Yes. But that's only one of the steps. If we want to automate the whole thing, we will need to automate the setup of the cluster in a real environment (Aliyun or AWS) with Archon, and the deployment of all these test related tools. Jenkins is an obvious option. Maybe we can start with automating setup of a staging 3-node cluster on Aliyun and run e2e tests on it.

@adieu
Copy link
Collaborator Author

adieu commented May 17, 2017

How about we setup a cluster with archon running in it. Each test case could define their own cluster with yaml files. In Jenkinsfile, they setup a new cluster with kubectl. Then launch test in the newly created cluster and get the result. After the test ended, they could tear down the cluster using kubectl delete.

@ledzep2
Copy link
Collaborator

ledzep2 commented May 17, 2017

Why not just use --local?

@adieu
Copy link
Collaborator Author

adieu commented May 17, 2017

Because we don't have to setup credentials locally?

@ledzep2
Copy link
Collaborator

ledzep2 commented May 17, 2017

I think it's acceptable to put a credential with limited privileges in the CI system for testing purposes. However, if the intermediate cluster you talked about is also a part of the test, it somehow makes sense.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

2 participants