Topic

Kubernetes

36 articles

Showing 24 of 36
The Cloudflare Blog

Cloud Computing without Containers

We have a cloud computing platform called Workers. Unlike essentially every other cloud computing platform I know of, it doesn’t use containers or virtual machines. We believe that is the future of Serverless and cloud computing in general, and I’ll try to convince you why.

15 min read
Netflix Tech Blog

Kubernetes And Kernel Panics

How Netflix’s Container Platform Connects Linux Kernel Panics to Pods

Netflix Technology Blog7 min read
The Cloudflare Blog

Our container platform is in production. It has GPUs. Here’s an early look

We’ve been working on something new — a platform for running containers across Cloudflare’s network. We already use it in production, for AI inference and more. Today we want to share an early look at how it’s built, why we built it, and how we use it ourselves.

26 min read
The GitHub Blog

Debugging network stalls on Kubernetes

In this deep-dive, we identified and worked through sporadic latency issues with services running on Kubernetes in our environment.

Theo Julienne26 min read
CNCF Case Studies

SysEleven chose Cilium to simplify networking

SysEleven is a cloud service provider offering managed and unmanaged cloud services to customers across Europe. They also offer a managed Kubernetes product called MetaKube.

11 min read
CNCF Case Studies

LY Corporation

LY Corporation built a fully automated private Kubernetes platform that grew from 5 production clusters in July 2017 to more than 1,300 clusters and 40,000+ nodes today. By using Kubernetes Custom…

9 min read
Shopify Engineering

Spin Infrastructure Adventures: Containers, Systemd, and CGroups - Shopify

The Spin infrastructure team works hard at improving the stability of the system. In February 2022 we moved to Container Optimized OS (COS), the Google maintained operating system for their Kubernetes Engine SaaS offering. A month later we turned on multi-cluster to allow for increased scalability as more users came on board. Recently, we’ve increased default resources allotted to instances dramatically. However, with all these changes we’re still experiencing some issues, and for one of those, I wanted to dive a bit deeper in a post to share with you. Spin’s Basic Building Blocks First it's important to know the basic building blocks of Spin and how these systems interact. The Spin infrastructure is built on top of Kubernetes, using many of the same components that Shopify’s production applications use. Spin instances themselves are implemented via a custom resource controller that we install on the system during creation. Among other things, the controller transforms the Instance custom resource into a pod that’s booted from a special Isospin container image along with the configuration supplied during instance creation. Inside the container we utilize systemd as a process manager and workflow engine to initialize the environment, including installing dotfiles, pulling application source code, and running through bootstrap scripts. Systemd is vital because it enables a structured way to manage system initialization and this is used heavily by Spin. There’s definitely more to what makes Spin then what I’ve described, but from a high level and for the purposes of understanding the technical challenges ahead it's important to remember that: Spin is built on Kubernetes Instances are run in a container systemd is run INSIDE the container to manage the environment. First Encounter In February 2022, we had a serious problem with Pod relocations that we eventually tracked to node instability. We had several nodes in our Kubernetes clusters that would randomly fail and require either a reboot or to be replaced entirely. Google had decent automation for this that would

11 min read
Shopify Engineering

Running Apache Kafka on Kubernetes at Shopify - Shopify

In the Beginning, There Was the Data Center Shopify is a leading multi-channel commerce platform that powers over 600,000 businesses in approximately 175 countries. We first adopted Apache Kafka as our data bus for reliable messaging in 2014 and mainly used it for collecting events and log aggregation across the systems. In that first year, our primary focus was building trust in the platform with our data analysts and developers by automating all aspects of cluster management, creating the proper in-house tooling needed for our daily operations, and helping them use it with minimum friction. Initially, our deployment was a single regional Kafka cluster in each of our data centers and one aggregate cluster for our data warehouse. The regional clusters would mirror their data to the aggregate using Kafka’s mirrormaker. Apache Kafka deployment in the data center Fast forward to 2016, and we’re managing many multi-tenant clusters in all our regions. These clusters are the backbone of our data superhighway — delivering billions of messages every day to our data warehouse and other application-specific Kafka consumers. Chef provisioned, configured and managed our Kafka infrastructure in the data center. We deploy a configuration change to all clusters at once by updating one or more files in our Chef GitHub repository. Moving to the Cloud In 2017, Shopify started moving some services from our data centers to the cloud. We took on the task of migrating our Kafka infrastructure to the cloud with zero downtime. Our target was to achieve reliable cluster deployment with predictable and scalable performance and do all this without sacrificing ease of use and security. Migration was a three-step process: Deploy one regional Kafka cluster in each cloud region we use, and deploy an aggregate Kafka cluster in one of the regions. Mirror all regional clusters in the data center and in the cloud to both aggregate clusters in the data center and in the cloud. This guarantees both aggregate clusters will have the same

7 min read
CNCF Case Studies

SNCF

As France’s national railway operator, SNCF runs critical transportation systems serving millions of passengers daily. Ensuring sovereignty, reliability, and operational resilience for the platforms…

8 min read
CNCF Case Studies

Datadog

Datadog runs 10s of clusters with 10,000+ of nodes and 100,000+ pods across multiple cloud providers. They began to reach a point where traditional networking tools were not up for the job anymore.

9 min read
CNCF Case Studies

Cloudchipr client

The customer’s focus on growth led to a rapid increase in cloud spend. The team lacked unified cost visibility, attribution, anomaly detection, and automations for FinOps.

11 min read
CNCF Case Studies

Swisscom

Swisscom developed a sovereign “Kubernetes Service” for Swiss-based enterprises using open source technologies, particularly KubeVirt and Kube-OVN as successor to their existing Container service…

9 min read
CNCF Case Studies

Lunar

Lunar, a Scandinavian online bank that embraced cloud native tech early on, has been running Kubernetes since 2017. Today, they have over 250 microservices distributed across three clouds.

13 min read
CNCF Case Studies

Tempestive uses Dapr and K8s to track IoT messages

Tempestive is a software and consulting company focusing on manufacturing systems integration. More than 10 years ago, Tempestive developed Nuboj, an off-the-shelf IoT application for commercial IoT…

9 min read
Shopify Engineering

Optimizing Ruby Lazy Initialization in TruffleRuby with Deoptimization - Shopify

Shopify's involvement with TruffleRuby began half a year ago, with the goal of furthering the success of the project and Ruby community. TruffleRuby is an alternative implementation of the Ruby language (where the reference implementation is CRuby, or MRI) developed by Oracle Labs. TruffleRuby has high potential in speed, as it is nine times faster than CRuby on optcarrot, a NES emulator benchmark developed by the Ruby Core Team. I’ll walk you through a simple feature I investigated and implemented. It showcases many important aspects of TruffleRuby and serves as a great introduction to the project! Introduction to Ruby Lazy Initialization Ruby developers tend to use the double pipe equals operator ||= for lazy initialization, likely somewhat like this: Syntactically, the meaning of the double pipe equals operator is that the value is assigned if the value of the variable is currently not set. The common use case of the operator isn’t so much “assign if” and more “assign once”. This idiomatic usage is a subset of the operator’s syntactical meaning so prioritizing that logic in the compiler can improve performance. For TruffleRuby, this would lead to less machine code being emitted as the logic flow is shortened. Analyzing Idiomatic Usage To confirm that this usage is common enough to be worth optimizing for, I ran static profiling on how many times this operator is used as lazy initialization. For a statement to count as a lazy initialization for these profiling purposes, we had it match one of the following requirements: The value being assigned is a constant (uses only literals of int, string, symbol, hash, array or is a constant variable). An example would be a ||= [2 * PI]. The statement with the ||= operator is in a function, an instance or class variable is being assigned, and the name of the instance variable contains the name of the function or vice versa. The function must accept no params. An example would be def get_a; @a ||= func_call. These criteria

10 min read
CNCF Case Studies

Zhuoyu Technology

Zhuoyu Technology’s driving cloud runs its autonomous-driving data pipelines on Kubernetes and gives algorithm and data engineers GPU-backed development environments (internally called Codespaces).

9 min read
CNCF Case Studies

Moving a mainframe to the cloud with K8s and KEDA

The Infosys client – a leading insurance company providing life insurance, investments and retirement services – faced heavy expenses due to mainframe licensing fees and rising storage costs.

9 min read
CNCF Case Studies

Kuaishou Technology

Kuaishou Container Platform aims to provide hyperscale container-based infrastructure services for its growing, diverse and constantly changing business. To achieve this…

10 min read