Google kubernetes a retrospective

  • network
  • infrastructure
  • kubernetes
  • english

posted on 16 Jun 2024 under category infrastructure

Post Meta-Data

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

Kubernetes Summary

EmojiSatelliteEmojiSatelliteEmojiSatellite

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.

Implementation

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.

Engineering Quality

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 Assignment / DNS

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

EmojiCool An architecturally elegant concept.

EmojiMuscle This centralized configuration paradigm represents a significant advancement in infrastructure management—the kind of innovation that transforms operational workflows. The approach warrants high commendation.

Service Abstraction

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

EmojiMicroscope The complexity poses genuine challenges.

EmojiMuscle This aspect can be frustrating, as practitioners frequently do not find satisfactory answers within reasonable time constraints.

Documentation

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

EmojiBrokenHeart Documentation navigation requires patience.

EmojiThumbsDown 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.

Metrics / Logging

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.

EmojiBulb A unified, built-in logging solution would significantly improve operational efficiency and reduce integration complexity.

Assessment:

EmojiPray 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 / Ingress

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

EmojiStar When service abstraction is configured correctly, Kubernetes performs exceptionally well. However, establishing detailed service properties and relationships can prove demanding.

EmojiHospital 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

EmojiQuarterMoon The results are mixed.

EmojiMonorail Despite the configuration complexity, the outcomes can range from disappointing to highly effective, depending on implementation approach.

Role-Based Access Control

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:

EmojiDart A well-targeted implementation.

EmojiBulb The RBAC implementation merits commendation as a thoughtfully designed feature.

Failover / Redundancy

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:

EmojiMicroscope Detailed examination recommended.

EmojiBulb Kubernetes currently represents the leading scaling solution in the market, despite potential improvements through emerging technologies such as SDN.

Scaling

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:

EmojiRocket Technically impressive implementation.

EmojiCrown The scaling capabilities represent one of Kubernetes’ most commendable features.

Rolling Updates

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:

EmojiStar An exemplary feature.

EmojiThumbsUp This capability significantly enhances operational continuity and deployment flexibility.

System Integration

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:

EmojiRocket Despite initial reservations:

EmojiMuscle The integration capabilities, while complex, provide functionality unavailable elsewhere.

EmojiBulb The industry should consider developing a next-generation Kubernetes iteration with refined architecture—such an initiative could yield significant value.

Development Efficiency

Kubernetes Apps

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.

EmojiRocket The iterative “code, test, repeat” cycle can become exhausting without proper tooling support.

Assessment

EmojiRocket Development velocity enhanced.

EmojiDart Kubernetes provides meaningful acceleration of development workflows.

Kubernetes Base

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

EmojiAlarm Development velocity constraints.

EmojiWarning The foundational architecture presents some limitations that impact development efficiency.

Continuous Integration

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:

EmojiRocket Highly effective when properly implemented.

EmojiStar When CI is implemented correctly (e.g., with GitLab), the results are excellent.

Security

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

EmojiWarning Security posture requires attention.

EmojiLock Security should occupy a more prominent role in Kubernetes architecture. The following sections provide detailed analysis.

Time-based Token Auth

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

Smartcard Auth

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

EmojiWarning 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.

TPM / Biometrics

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.

EmojiUnlock 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

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.

EmojiLock Deploying plain SSO without 2FA is strongly discouraged due to significant security implications.

Password Vaults

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.

EmojiKey To security implementors: Current concepts protect client and server keys, but plain-text/recovery hashes (even HSM-generated) do not provide comprehensive protection.

Kubernetes Internal

Internally, Kubernetes security requires improvement. The SSO smartcard workaround should be superseded by direct PKCS 11/15 integration in kubectl.

EmojiBulb As a workaround, utilize 2FA via Google/Microsoft Authenticator if available, or third-party tools like GitLab.

Hybrid Cloud / IPv6

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.

Performance

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:

EmojiRocket Modern and performant architecture.

EmojiCheckeredFlag The auto-scale feature demonstrates robust reliability.

Ported Applications

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

Pro / Contra Matrix

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

References and Further Reading