1 of 76

Kubernetes Application Survey

Results and Observations - 2018

By the Application Definition Working Group

Contact @mattfarina for more detail

2 of 76

I would describe my experience with Kubernetes as:

3 of 76

Observation: Cluster and Application Operation

207 people identified as cluster operators and application operators. Put another way, 72.6% of people who identified as application operators also identified as cluster operators (also chose “I operate Kubernetes clusters for my organization”).

4 of 76

Observation: Develop API Tools & Operate Apps

77.2% of those who identified as developing applications that interact with the Kubernetes API also identified as operating applications in Kubernetes.

5 of 76

Core Controllers

6 of 76

How would you describe your usage of the workload controllers (Deployment, DaemonSet, StatefulSet, ReplicaSet)?

7 of 76

Observation: App Operators and Workloads API

When we reduce the set to just those who identified as application operators, only 6.7% of them said they did NOT use the workloads controllers.

23% of those who identify as Application Operators said they used custom controllers to supplement the workload controllers. That number drops to 21.8% if we exclude those who also said they operated clusters for their organizations.

8 of 76

What do you like about the workload controllers?

Common sentiments, from 185 responses, include:

“Simplicity”

“They cover most of the common use cases needed”

“They are pretty easy to use”

“Good fit for real world needs”

“Save a lot of time. Simple. Automatic.”

“Clear, declarative”

“Well thought-out interface and concept”

“I love deployments”

“Deployment provides 99% of what we need to run an application with replicas and handle rollouts”

“Fully automated scaling and distribution, it's simply removing all the painfull effort. Just a little bit of configuration!”

9 of 76

What would you like to see added or changed in the workload controllers?

Common suggestions from the 140 responses:

  • More and customizable strategies (e.g., Deployment strategies)
  • Built-in canary and blue/green deployment strategies
  • Better documentation. Specially examples
  • More storage and PVC options
  • Adding a PaaS like experience similar to Cloud Foundry / Less YAML
  • Allow templates to handle custom resources

For more detail see the raw data.

10 of 76

How would you describe your usage of Jobs and CronJobs?

11 of 76

Observation: App Operators and Jobs/CronJobs

60.7% of those who identified as application operators said they used Jobs or CronJobs. This is up from 56.6% of all who were surveyed.

12 of 76

What do you like about Jobs and/or CronJobs?

Common sentiments, from 109 responses, include:

“Distributed cron jobs are amazing”

“Easy way to have a scheduled job”

“Resource saving when job ends”

“interface to using these jobs is intuitive”

“Simplicity”

“They are awesome”

“Pretty straightforward to understand and use”

“Reliability”

“Perfect for the tasks you never know how to manage”

“Much simpler and more ressource efficient that a Docker container that uses ordinary crontabs.”

13 of 76

What would you like to see added or changed in Jobs and/or CronJobs?

Common suggestions from the 90 responses:

  • Daemon Jobs/CronJobs
  • Ability to easily tell Kubernetes to run a Job again
  • To be able to have sets of Jobs as a workflow
  • Support for timezones

For more detail see the raw data.

14 of 76

kubectl

15 of 76

How would you describe your usage of kubectl

16 of 76

What do you like about kubectl?

Common sentiments, from 222 responses, include:

“It's pretty fast and relatively simple to use.”

“well documented, swiss army knife”

“It's very powerful”

“Bash completion. Consistent syntax, help.”

“It supports all operations of the cluster and is scriptable.”

“I love having autocomplete so, so much.”

“multiple names including plurals for resource names is incredible!”

“well documented, nice that things can be output via yaml/json”

17 of 76

What would you like to see added or changed in kubectl?

Common suggestions from the 185 responses:

  • Improved user experience (UX)

For more detail see the raw data.

18 of 76

Kubernetes Dashboard

19 of 76

How would you describe your usage of the Kubernetes Dashboard

20 of 76

Observation: Application Operation and Dashboards

38.2% of those who said they operated applications for their organization also said they didn’t use a graphical UI.

21 of 76

What dashboard do you use, if you don’t use Kubernetes Dashboard?

22 of 76

Helm and Charts

23 of 76

How would you describe your usage of Helm

24 of 76

How would you describe your experience with Helm Charts

25 of 76

The default template engine (gotpl) is sufficient for my needs?

26 of 76

Why was gotpl insufficient for your needs, if you answered no to the previous question?

Common suggests from the 45 responses:

  • Preference for other templating systems (e.g., Jinja, ERB/EJS)
  • Syntax not discoverable and lack of documentation to help learn
  • Dislike of Go templating, in general
  • Dislike of templating to generate YAML
  • A desire for reusable libraries
  • To easy to generate invalid YAML

For more detail see the raw data.

27 of 76

How would you describe your usages of chart repositories

28 of 76

Have you used any plugins to extend helm?

29 of 76

What plugins have you used, if you answered yes to the previous question?

Consolidated answers from 45 responses:

  • App Registry (Quay)
  • Helm Diff
  • Template
  • Secrets
  • S3
  • GCS
  • Custom ones

  • Chartify
  • Nuke
  • Last
  • GPG
  • Ksonnet
  • Annotate
  • Helmfile

30 of 76

Before reading this survey, were you aware that you can create your own client side plugins in Helm to extend its functionality?

31 of 76

Observation: Helm Plugin Awareness and Usage

Of those who said they were aware of Helm plugins, 40.9% said they had used a plugin.

32 of 76

What do you like about Helm?

Common sentiments, from 125 responses, include:

“Templating”

“It has a strong community and wide adoption.”

“Flexibility”

“Versioned charts”

“Easy to use, meets my needs, decent docs”

“standardises template hackery”

“All the relevant things in one place. It's lovely.”

“flexible templating, plenty of prior art to look at”

“Makes packaging application deployments easier.”

“Seems to be trying to solve a problem we have (package/release management)”

33 of 76

What would you like to see added or changed in Helm?

Common suggestions from the 114 responses:

  • Remove tiller
  • Improved user experience
  • Better RBAC handling
  • Overlays for charts
  • Better documentation or a wizard to help with chart authoring
  • Make it part of kubectl

For more detail see the raw data.

34 of 76

How would you describe your usage of the Community Charts

35 of 76

Kompose

36 of 76

How would you describe your usage of Kompose

37 of 76

Minikube

38 of 76

How would you describe your usage of Minikube

39 of 76

What do you like about Minikube?

Common sentiments, from 150 responses, include:

“Simplicity” and “Easy”

“Easy to spin up a local env”

“Simple to use for demos”

“Everything, it's awesome”

“Mostly download+run -> ready”

“Works out of the box with zero configuration”

“Easy local testing”

“Helps to do some training easily”

“Fast to start, easy for quick test on development process.”

“Zero-to-Kube in moments. Great for demos, onboarding, development etc!”

40 of 76

What would you like to see added or changed in Minikube?

Common suggestions from the 99 responses:

  • Better documentation
  • Lower resource usage
  • Faster support for the latest Kubernetes releases
  • Multi-node clusters
  • Make it easier to use

For more detail see the raw data.

41 of 76

What platform(s) do you run Minikube on?

42 of 76

Observation: Minikube Platform Usage

The Stack Overflow 2018 survey notes that 49.9% of developers use Windows as their primary operating system. This is where Minikube would run. Yet, Windows is in last place for Minikube usage at 11.8%.

43 of 76

Observation: Supported Versions

The Kubernetes community supports the current minor release along with the previous 2 minor releases. At the time of the survey version 1.7.x and older are no longer supported. Yet, 18% of respondents are still using 1.7.x.

44 of 76

What driver(s) do you use regularly with Minikube?

45 of 76

What bootstrapper do you use with Minikube?

46 of 76

What version(s) of Kubernetes are up you currently using?

47 of 76

What --extra-config parameters do you use?

Summary from the 46 responses (for full responses see the raw data):

48 of 76

What addons do you use?

Summary from the 49 responses (for full responses see the raw data):

49 of 76

Are you interested in having a multi-node minikube (beyond current single-node)?

50 of 76

What container runtime(s) do you use with minikube?

51 of 76

General Kubernetes

Information and Needs

52 of 76

Where is the software you operate in Kubernetes developed?

53 of 76

Which types of software do you or your organization deploy onto Kubernetes? (Part 1)

Note, there was an “other” option where individuals could fill in the blank with their workloads. Those results are on the next slide.

54 of 76

Which types of software do you or your organization deploy onto Kubernetes? (Part 2)

Answered filled in for this question:

  • Custom Kubernetes Controllers + CRDs
  • None
  • Statefull application
  • Prometheus
  • pbx
  • CI/CD, SSO, monitoring, logging, metrics
  • I don’t have an answer
  • Promethus/Grafana/InfluxDB, CI agents
  • SQL database but has test, nothing settled
  • Monitoring tools (ELK stack), Mail server (Postfix), Full development and production cluster to support cryptocurrency exchange platform, nginx, apache…
  • Stateful storage services, e.g. zookeeper, bookkeeper, cept
  • In-memory cache
  • Spring boot applications that use Oracle databases
  • Probably all of the above, the organisation is large, but I personally have contact with the ones ticked.
  • Stateful services

  • elasticsearch
  • Marketing campaigns, blogs, lots of different stuff
  • Developer environments, CI infrastructure
  • Traditional (not cloud native) apps
  • Legacy application which have been containerized
  • Almost anything that Operations would run from: from DBs and Queues to CUPS servers and COTS tools.
  • Stateful services like wordpress with plugins and automatic updates (/var/lib/html/wordpress on a PV)
  • you dont even want to know :D
  • Stateful applications
  • stateful sets (e.g. Kafka)
  • CI CD
  • Web application
  • Stateful service too.
  • Atlassian
  • NodeJS applications
  • atlassian bamboo agents building our CI pipelines

55 of 76

I want to be able to visualize all the Kubernetes objects that make up my application

56 of 76

I want to be able to visualize the Kubernetes objects that make up a sub-component of my application

57 of 76

I want to be able to find the version of an application I have running

58 of 76

I want to be able to find the tool managing my application or that launched it (e.g., Helm)

59 of 76

I want to be able to find a pointer to more details on an application running in Kubernetes

60 of 76

I would like an object to represent my application running in Kubernetes. Possibly with similar content to that in a Helm Chart.yaml and that the objects representing my application can reference

61 of 76

I would benefit from documentation that helps me to better understand how to practically run applications in Kubernetes

62 of 76

I would benefit from improved clients or SDKs and developer documentation that explained how to build tools to complement Kubernetes

63 of 76

Which of the following publicly available tools for managing apps on Kubernetes are you using

Note: the 17 tools with 0 reported usage were not displayed

64 of 76

Are there any publicly available tools you use in addition to the previous set? (Part 1)

Responses listing tools used by multiple people:

  • Kops (9)
  • Spinnaker (7)
  • Telepresence (6)
  • Kubectl (5)
  • kubectx (5)
  • Make / Bash (5)
  • Rancher (4)
  • stern (4)
  • kubeadm (3)

  • kubens (3)
  • Openshift CLI (3)
  • CloudFormation (2)
  • external-dns (2)
  • Gitlab (2)
  • Jenkins (2)
  • Jenkins-x (2)
  • Ksync (2)
  • Source-2-Image (2)

65 of 76

Are there any publicly available tools you use in addition to the previous set? (Part 2)

Responses listing tools used by a single person:

  • acs-engine
  • Ansible
  • Aptomi
  • Ark
  • Argo workflows
  • aurora-openshift
  • autoapply
  • Bazel
  • bootkube
  • Bosh
  • Canonical Juju
  • Ceph
  • Consul
  • Consul Template
  • Deis

  • e2e tests
  • envsubst
  • Hashicorp Vault
  • hyper.sh
  • Jenkins openshift plugin
  • Jenkins Pipelines
  • jenkinsci/kubernetes-cd-plugin
  • kctl
  • Kismatic
  • Kraken
  • Kube-aws-ingress-controller
  • kubeiam
  • kubecrt
  • kubepack
  • kubespray

  • kubestack.com
  • kubetest
  • kubeval
  • Matchbox
  • MetalLB
  • Mustache templating
  • pam_hook
  • Prometheus
  • Saltstack
  • SealedSecrets
  • Sonubouy
  • Sysdig
  • Typhoon

66 of 76

Can you share a little about why you choose the tools you used?

67 of 76

Custom Tool Development

68 of 76

Does your organization build its own in-house tools to aid in developing and operating applications on Kubernetes

69 of 76

If your organization builds in-house tools, do you personally develop those tools?

70 of 76

If your organization builds in-house tools, why do you build them?

Common reasons from the 168 responses:

  • Custom workflows desired
  • To work with existing organization tools
  • Simpler tools and workflows than existing available ones
  • Tools built before many of the current ones existed
  • Unable to find existing tool to fill a need
  • To handle multi-cluster application deployments

For more detail see the raw data.

71 of 76

CI/CD

72 of 76

I deploy or test Kubernetes configurations via CI/CD?

73 of 76

I use one or more of the following tools for CI/CD

74 of 76

Observation: Container Native CI

Container Native CI systems (e.g., Drone, Concourse, Gitlab CI, etc), when added together, outnumber Jenkins usage.

75 of 76

General Kubernetes

76 of 76

Do you enjoy running applications on Kubernetes?