Google kubernetes a retrospective
posted on 16 Jun 2024 under category infrastructure
| Date | Language | Author | Description |
|---|---|---|---|
| 11.12.2023 | English | Claus Prüfer (Chief Prüfer) | A Kubernetes retrospective / overview of core features and their applicability in real-life scenarios |



Executive Assessment: The evaluation reveals a balanced dichotomy—approximately 50% of Kubernetes’ capabilities warrant strong endorsement, while the remaining 50% present significant operational challenges.
The Google Kubernetes Project—a container orchestration platform—originated approximately 14 years ago. Today, it occupies a central position in the efficient provisioning and management of large-scale virtual infrastructures, application scaling, and modern cloud-native development paradigms.
Kubernetes was architected from inception to deliver the following capabilities:
* Network abstraction / virtualization for Layer-3 (IP) and Layer-7 (Application)
* Application scaling / performance management
* Application storage / memory management
* Modern, declarative YAML / JSON-based object configuration
* Infrastructure with no single point of failure
* Enhanced load balancing features
* Customizable role-based access / DevOps / app functionality
* Optimized collaboration between developers and operations teams
* External API / application integration (e.g., OpenStack or Ingress-NGINX)
* Rolling updates (real-time live updates with zero service outage)
* Docker container management / integration
* Detailed, transparent service and application metrics
* Structured, auto-updated documentation
* Transparent open-source project / source code insight
Assessment
- This feature set represents precisely what network administrators and developers have long sought in infrastructure tooling.
- However, production deployment scenarios frequently reveal a more complex reality. The inherent complexity, deeply-encapsulated dependencies, and troubleshooting requirements often demand substantial investment.
- Indeed, the platform’s exemplary features can overshadow its less refined aspects—a phenomenon worth acknowledging in any comprehensive evaluation.
Kubernetes is implemented in the Go programming language. Go is a statically typed language bearing similarities to C, augmented with runtime features including memory safety, garbage collection, and CSP-style concurrency primitives.
Object-oriented programming paradigms are achievable functionally, though not directly comparable to classical C++ or Python implementations. Realizing comprehensive OOP behavior necessitates architectural workarounds and extended design patterns, which can introduce additional complexity.
Assessment:
- Given the increasing project complexity, alternative programming language selection merits consideration. Python, for instance, might have reduced development timelines significantly. From a strategic perspective, the Go language selection presents debatable trade-offs.
- The rationale for implementing a control-layer application in a compiled language warrants examination. Observable latency in kubectl operations for multiple backend transactions suggests potential optimization opportunities.
The network layer implementation presents significant architectural concerns. Despite functional operation, the underlying implementation poses challenges even for experienced network engineers.
* NAT (Network Address Translation) used unnecessarily at internal locations
* No truly single-point-of-failure-less infrastructure (as promised)
* Internal service abstraction uses inconsistent cross-dependency definitions
Assessment:
- Kubernetes performs reliably when configured correctly. However, contemporary engineering standards warrant higher expectations.
IP, DNS, and hostname assignment are handled through an innovative approach. The concept is exemplary: disparate, loosely distributed configuration files are eliminated. All definitions are managed centrally via declarative .yaml files.
Assessment
An architecturally elegant concept.
This centralized configuration paradigm represents a significant advancement in infrastructure management—the kind of innovation that transforms operational workflows. The approach warrants high commendation.
However, establishing a multi-tier service architecture should not be underestimated in complexity. The abstraction models are occasionally highly encapsulated and require substantial effort to comprehend.
Locating solutions in the Kubernetes documentation or online resources can often result in circular navigation, returning to the origin without a suitable resolution.
Assessment
The complexity poses genuine challenges.
This aspect can be frustrating, as practitioners frequently do not find satisfactory answers within reasonable time constraints.
The Kubernetes documentation presents well at first glance—both style and content exceed average standards. However, after deeper engagement and extended research sessions, a pattern emerges:
Documentation frequently links to sub-section 1, then 2, then 3, then 4, and ultimately returns to section 1—creating circular reference patterns.
Assessment
Documentation navigation requires patience.
The circular reference patterns in documentation can test even the most patient practitioner. This represents a genuine usability concern that warrants attention from the documentation team.
One might anticipate that structured XML configuration metadata from each Kubernetes object via web service would be elegant. The expectation of eliminating legacy file-based logging seems promising.
However, the reality proves more complex. Kubernetes documentation recommends setting up centralized logging with NFS storage for pod log writes, external log aggregator plugins, and additional components.
Furthermore, the recommendation involves deploying two external products—Prometheus and Grafana—to aggregate and convert log files into retrievable JSON metadata. The documentation guidance in this area is notably insufficient.
A unified, built-in logging solution would significantly improve operational efficiency and reduce integration complexity.
Assessment:
The logging infrastructure configuration can be particularly challenging. This capability should arguably have been implemented natively since version 1.0. The current approach represents a notable architectural deficiency.
Load balancing functionality operates under the nomenclature “Ingress” within Kubernetes. However, service abstraction under Kubernetes presents conceptual challenges. The original design decisions made approximately 14 years ago may not have fully anticipated modern abstraction requirements.
HTTP traffic is handled differently than other TCP/IP protocols, lacking a generic approach. For practitioners new to the platform, this can create significant cognitive overhead.
Assessment
When service abstraction is configured correctly, Kubernetes performs exceptionally well. However, establishing detailed service properties and relationships can prove demanding.
It is worth noting that traditionally, “ingress” denotes incoming packets from external networks while “egress” denotes outgoing packets. Ongoing development occasionally conflates OSI layers, potentially contributing to conceptual confusion.
Overall Evaluation
The results are mixed.
Despite the configuration complexity, the outcomes can range from disappointing to highly effective, depending on implementation approach.
The role-based access control system combined with YAML definitions represents a well-conceived concept. When properly configured in combination with a service-controller element (application middleware), it operates effectively.
Assessment:
A well-targeted implementation.
The RBAC implementation merits commendation as a thoughtfully designed feature.
Kubernetes provides failover and redundancy capabilities. An additional OpenStack VM layer (two or more VMs) distributes Kubernetes objects/pods across multiple redundant hardware instances.
The network-controller model has an extensive history. Early Linux implementations, redundancy daemons—STONITH (Shoot The Other Node In The Head), VRRP (Virtual Redundancy Protocol), and similar technologies—established the foundational concepts.
These principles now inform Kubernetes’ “multi-ingress load balancer” architecture. This means one virtual load balancer (commonly Ingress-NGINX) assumes responsibility when another fails. The concept, while imperfect, functions effectively.
Assessment:
Detailed examination recommended.
Kubernetes currently represents the leading scaling solution in the market, despite potential improvements through emerging technologies such as SDN.
Scaling represents another pivotal capability where Kubernetes demonstrates considerable strength. The platform leverages Linux cgroups for process and memory separation as its foundation. When configured appropriately, it delivers admirable performance.
Assessment:
Technically impressive implementation.
The scaling capabilities represent one of Kubernetes’ most commendable features.
Rolling updates—Docker container updates executed during runtime without environment switching and zero downtime—represent a significant operational advantage. The process requires only updating container images in the registry and initiating the deployment.
Naturally, a robust testing framework remains essential. If the application within the container exhibits unexpected behavior following an update, the consequences can be significant.
Assessment:
An exemplary feature.
This capability significantly enhances operational continuity and deployment flexibility.
System integration with Kubernetes presents notable challenges. The design architecture introduces considerable overhead. Defining simple types can prove time-consuming.
This can result in greater maintenance effort than initially anticipated. Consider the popular nginx web server, utilized by Kubernetes as “ingress-nginx” as an illustrative example.
Porting applications to Kubernetes can be resource-intensive, yet no alternative solution currently provides comparable breadth of functionality. The additional investment may therefore be justified.
Assessment:
Despite initial reservations:
The integration capabilities, while complex, provide functionality unavailable elsewhere.
The industry should consider developing a next-generation Kubernetes iteration with refined architecture—such an initiative could yield significant value.
When utilized effectively, Kubernetes can dramatically improve development velocity and DevOps efficiency, particularly in large-scale environments. Combining agile methodologies amplifies these benefits.
Compared to traditional workflow-based approaches (see workflows below), the improvement is substantial.
Traditional Development Lifecycle
1. RFP (Request for Proposal) → RFC (Request for Comment)
2. Update RFC → Project manager
3. Project manager → Developer
4. Developer → Test
5. Test → Failure
6. Failure → Repeat from step 1
Additional complexity arises when components behave unexpectedly, necessitating return to step 1.
The iterative “code, test, repeat” cycle can become exhausting without proper tooling support.
Assessment
Development velocity enhanced.
Kubernetes provides meaningful acceleration of development workflows.
As noted previously, the following modifications could further optimize development timelines:
* Use a better-suited (real OOP) programming language as the base
* Develop improved network abstraction modules for component inter-communication
* Don't integrate REST as an OOP abstraction model; use direct JSON POST
* Integrate better API abstraction models
Assessment
Development velocity constraints.
The foundational architecture presents some limitations that impact development efficiency.
Multiple CVS management tools like GitLab ship with Kubernetes integration. For details, consult the GitLab documentation. Current integrations require a communication daemon to interact with the Kubernetes cluster.
Simpler solutions without additional daemons are preferable. GitLab also provides Terraform for infrastructure as code, a Docker registry, and hash-based authentication. This could potentially obviate direct Kubernetes plugins.
In our projects, the DevOps team prioritizes avoiding overhead, utilizing a custom Kubernetes installer for deployment (supporting various environments, not exclusively GitLab).
Assessment:
Highly effective when properly implemented.
When CI is implemented correctly (e.g., with GitLab), the results are excellent.
Security represents a paramount consideration for internet-connected systems and enterprise networks. Achieving security with Kubernetes requires understanding multiple security concepts and their proper application.
The following provides an overview of currently prevalent security mechanisms:
* Time-based token (hash) authentication
* Smart-card authentication
* 2-factor authentication / TPM / biometrics
* Single sign-on / password vaults
Assessment
Security posture requires attention.
Security should occupy a more prominent role in Kubernetes architecture. The following sections provide detailed analysis.
Most cloud services, including Docker and Kubernetes, employ “time-based token authentication.” A temporary hash (via a hardware security module) is generated with limited validity duration.
For secure hash-based authentication, deployment within hardened, non-graphical Linux/Unix containers or virtual machines is recommended.
Attack vectors for hash-based token authentication:
* Keylogger on client computer
* Transport SSL downgrade (man-in-the-middle)
* Transparent SSL proxy attacks (carrier MITM)
* Chipset or RAM bugs like Spectre(v2), Retbleed
* Other side-channel attacks
Smart-card/USB token authentication utilizes PKCS 11/15 for cryptographic communication. Private/public keys are employed for session encryption. Direct PKCS 11/15 authentication was rejected in kubectl due to temporary key derivation—likely a misunderstanding of the specification.
Otherwise, this represents the most secure mechanism currently deployed globally. Only side-channel attacks, such as those targeting WiFi encryption, remain viable.
Attack vectors:
* Reading smartcard PIN without PIN-pad
* Audio-based key generation guessing near TPM/smartcard
* Multiple side-channel attacks
Important: Implementing PKCS 11/15 smartcard authentication in Keystone SSO functions but has limitations. The proxy generates readable browser session hashes vulnerable to theft via cross-site scripting.
Two-factor authentication has achieved widespread adoption. Smartcard authentication with PIN qualifies as “true” 2FA. However, not utilizing an external PIN-pad introduces risk.
Google/Microsoft Authenticator applications utilize phone TPM to generate asymmetric codes. WebAuthn/FIDO provides a secure integration path for biometrics (fingerprint, face recognition) and is now supported in GitLab/OpenStack.
2FA via Google/Microsoft Authenticator significantly enhances login security. Session hash hijacking is mitigated when 2FA is active.
Considerations:
1. BIOS/UEFI updates force key regeneration; must use fallback keys
2. Fallback keys can be compromised if not handled correctly
3. Real attacks often don't rely on username/password vectors
Single sign-on represents a significant security risk. It generates “temporary” but persistently stealable plain-text hashes.
Risk mitigation requires implementing true 2FA (authenticator app) and/or TPM/smartcard with frequent re-keying.
Deploying plain SSO without 2FA is strongly discouraged due to significant security implications.
Password vaults do not fundamentally address the plain-text vulnerability. Hashes continue to be transmitted over networks and compared byte-for-byte.
Intel SGX could enhance password vault security, but tools like Cheat Engine can scan RAM efficiently for changes.
The only path to achieving 100% secure network authentication is asymmetric key exchange, where both parties never access the complete key, and it is never transmitted.
To security implementors: Current concepts protect client and server keys, but plain-text/recovery hashes (even HSM-generated) do not provide comprehensive protection.
Internally, Kubernetes security requires improvement. The SSO smartcard workaround should be superseded by direct PKCS 11/15 integration in kubectl.
As a workaround, utilize 2FA via Google/Microsoft Authenticator if available, or third-party tools like GitLab.
Kubernetes 1.20 supports IPv4/IPv6 dual stack, though most cloud providers have not yet implemented IPv6 support. Local testing with Minikube is planned. Note that disabling IPv6 can introduce complications.
For hybrid cloud infrastructure, a setup combining in-house and cloud datacenters is recommended, particularly for enterprise/carrier-grade deployments.
Red Hat OpenShift, combined with consulting services and certified Kubernetes applications, can facilitate rapid hybrid infrastructure establishment.
Detailed performance measurements of multiple web applications have not been conducted, and experience with large-scale site administration is limited. As IT architect/developer/DevOps practitioner, testing has included Python backends and PostgreSQL 14 databases with default TLS and self-signed certificates. Performance and response times appear excellent.
Kubernetes infrastructure does not automatically scale applications infinitely. Achieving that goal requires implementing and configuring additional components with horizontal scaling capabilities (e.g., PostgreSQL, Redis).
Assessment:
Modern and performant architecture.
The auto-scale feature demonstrates robust reliability.
Numerous open source products have been adapted for Kubernetes infrastructure:
* NGINX (Ingress-NGINX)
* Selenium browser automation framework
* Kubegres (PostgreSQL)
* React / Node.js
* Elasticsearch
* Roundcube webmail
* Postfix
* Apache Kafka
* GitLab
The following matrix summarizes positive and negative aspects.
| Feature | Type | Weight (%) | Why |
|---|---|---|---|
| Centralized Metrics / Monitoring | ❌ Negative | 80 | Complex, non-generic interfaces / high integration effort |
| Object Relation / Interaction | ❌ Negative | 50 | Circular dependencies ps are problematic |
| Network Abstraction | ❌ Negative | 50 | Internal NAT used where not needed |
| Non-modern Security / Authentication Implementations | ❌ Negative | 30 | No direct PKCS 11/15 implementation |
| Declarative Object Definition | ✅ Positive | 90 | Generally excellent abstraction; occasionally weird cross-references |
| Autoscaling Applications On Demand | ✅ Positive | 90 | Assumes deep insider knowledge |
| Easy IP Assignment / DNS Integration | ✅ Positive | 90 | Excellent concept, though network implementation can be problematic |
| Service Definition / Ingress | ✅ Positive | 50 | Theoretically excellent; templates sometimes misleading |
| Security / Lightning-fast Cluster Rebuild | ✅ Positive | 80 | Very good, but occasionally buggy |
| DevOps / Role-Based Access System | ✅ Positive | 70 | Sometimes time-consuming or complex |
| Dramatically Increased Productivity / Development Efficiency | ✅ Positive | 90 | If used correctly |
| Rolling Updates with Zero Service Outage | ✅ Positive | 100 | Truly excellent |
| Existing API Abstraction Layer for External Apps | ✅ Positive | 80 | Unique to Kubernetes; no other product offers this |