As one of the first adaptors of Kubernetes, I have learned the hard way to install, upgrade and maintain Kubernetes. Kubernetes can simplify a lot of your infrastructure and development pipeline but it is not THE solution for each project.
My experience of Kubernetes ranges from installing and managing it the-hard-way, a cluster on AWS, GCE or DigitalOcean or provisioning a cluster using Ansible or Puppet.
- Cluster installation and configuration (by using kubeadm, Puppet, Ansible)
- Periodic maintenance, upgrades, security checks
- Setting up high availability (multiple master nodes, etcd cluster)
- Implementing GitOps solution like Weave Flux or ArgoCD
- Troubleshoot issues on networking, scheduling, storage, container, crashes and more
- Integrate monitoring, logging and alerting with Prometheus and Nagios
- Automated deployment pipeline with Gitlab, Jenkins or other CI tool (see also CI/CD)
- Tighten security with RBAC rules, network policies and pod security policies
- Service mesh insight and control with Istio or Linkerd
- Integrate with your cloud provider or hypervisor (VMWare, DigitalOcean, GCE, AWS)
- Implement persistent storage (cloud volumes, object storage, NFS, Ceph)
- Implement automated backup
- Writing or customize Helm charts