<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:sy="http://purl.org/rss/1.0/modules/syndication/" xmlns:media="http://search.yahoo.com/mrss/"><channel><title>Kubernetes on Shaowen Chen's Website</title><link>https://www.chenshaowen.com/en/tags/kubernetes/</link><description>Recent content in Kubernetes on Shaowen Chen's Website</description><generator>Hugo -- gohugo.io</generator><language>en</language><copyright>&amp;copy;2016 - {year}, All Rights Reserved.</copyright><lastBuildDate>Wed, 22 Jul 2026 00:00:00 +0000</lastBuildDate><sy:updatePeriod>weekly</sy:updatePeriod><atom:link href="https://www.chenshaowen.com/en/tags/kubernetes/atom.xml" rel="self" type="application/rss+xml"/><item><title>How to Add Huawei NPU Nodes to a Kubernetes Cluster</title><link>https://www.chenshaowen.com/en/blog/add-huawei-npu-node-to-kubernetes-cluster.html</link><pubDate>Wed, 22 Jul 2026 00:00:00 +0000</pubDate><atom:modified>Wed, 22 Jul 2026 00:00:00 +0000</atom:modified><guid>https://www.chenshaowen.com/en/blog/add-huawei-npu-node-to-kubernetes-cluster.html</guid><description>1. Disk Handling 1.1 Inspect Disks Inspect the new disk 1 fdisk -l Disk /dev/nvme1n1: 3.91 TiB, 4294967296000 bytes, 8388608000 sectors 1.2 Build a RAID0 If you have several small disks, a better approach is to build a RAID0 — this gives you not only a larger storage directory but also higher speed.</description><dc:creator>微信公众号</dc:creator><category>AI</category><category>NPU</category><category>Ascend</category><category>Huawei</category><category>Hardware</category><category>Drivers</category><category>Kubernetes</category></item><item><title>Loggie Deployment and Configuration</title><link>https://www.chenshaowen.com/en/blog/loggie-deployment-and-configuration.html</link><pubDate>Tue, 14 Apr 2026 00:00:00 +0000</pubDate><atom:modified>Tue, 14 Apr 2026 00:00:00 +0000</atom:modified><guid>https://www.chenshaowen.com/en/blog/loggie-deployment-and-configuration.html</guid><description>1. Download the Chart Package 1 git clone https://github.com/loggie-io/installation 2. Install loggie 1 cd installation/helm-chart 1 helm install loggie ./ -nloggie --create-namespace 3. Global Configuration Changes Remove the timestamp in front of stdout 1 kubectl -n loggie edit cm loggie-config-loggie Set parseStdout to true to remove the timestamp in front of stdout.</description><dc:creator>微信公众号</dc:creator><category>Loggie</category><category>Logging</category><category>Storage</category><category>Deployment</category><category>Kubernetes</category><category>Operations</category></item><item><title>Kubernetes Base Environment Requirements</title><link>https://www.chenshaowen.com/en/blog/kubernetes-base-environment-requirements.html</link><pubDate>Thu, 04 Sep 2025 00:00:00 +0000</pubDate><atom:modified>Thu, 04 Sep 2025 00:00:00 +0000</atom:modified><guid>https://www.chenshaowen.com/en/blog/kubernetes-base-environment-requirements.html</guid><description>1. Base Packages Kubernetes version ≥ 1.18 socat Required conntrack Required ebtables Optional, but recommended ipset Optional, but recommended ipvsadm Optional, but recommended 1 apt-get -y install socat conntrack ebtables ipset ipvsadm 2. Port Requirements 2.1 Base Node Services Service Protocol Action Start Port End Port Comment ssh TCP allow 22 22 Node remote management docker TCP allow 2375 2376 Docker remote communication etcd TCP allow 2379 2380 etcd cluster communication 2.</description><dc:creator>微信公众号</dc:creator><category>Kubernetes</category><category>Cluster</category><category>Configuration</category><category>Security</category><category>Operations</category><category>Learning</category><category>Installation</category><category>Dependencies</category><category>Best Practices</category></item><item><title>How to Upgrade the cgroup Version of a Kubernetes Node</title><link>https://www.chenshaowen.com/en/blog/how-upgrade-kubernetes-node-cgroup-version.html</link><pubDate>Tue, 02 Sep 2025 00:00:00 +0000</pubDate><atom:modified>Tue, 02 Sep 2025 00:00:00 +0000</atom:modified><guid>https://www.chenshaowen.com/en/blog/how-upgrade-kubernetes-node-cgroup-version.html</guid><description>1. Interface Path Differences Between cgroup v1 and v2 v1 1 2 3 4 /sys/fs/cgroup/cpu/cpu.cfs_quota_us /sys/fs/cgroup/cpu/cpuacct.usage /sys/fs/cgroup/memory/memory.limit_in_bytes /sys/fs/cgroup/memory/memory.usage_in_bytes v2 1 2 3 4 /sys/fs/cgroup/cpu.max /sys/fs/cgroup/cpu.stat /sys/fs/cgroup/memory.max /sys/fs/cgroup/memory.current cgroup v2 is the upgraded version of v1, with advantages such as more unified resource hierarchy management and precise resource isolation. But it also means that when writing code, the paths for reading the relevant interface files are different, so compatibility handling is required.</description><dc:creator>微信公众号</dc:creator><category>Kubernetes</category><category>Upgrade</category><category>Operations</category><category>cgroup</category><category>Learning</category><category>Nodes</category><category>Resource Isolation</category><category>Troubleshooting</category><category>Kubelet</category></item><item><title>Deploying Dragonfly on a Kubernetes Cluster</title><link>https://www.chenshaowen.com/en/blog/deploy-dragonfly-on-kubernetes.html</link><pubDate>Mon, 28 Jul 2025 00:00:00 +0000</pubDate><atom:modified>Mon, 28 Jul 2025 00:00:00 +0000</atom:modified><guid>https://www.chenshaowen.com/en/blog/deploy-dragonfly-on-kubernetes.html</guid><description>1. Deploy NFS Storage 1.1 Configure the NFS Service on the Storage Node Install the NFS service on the storage node 1 apt-get install -y nfs-kernel-server Start the NFS service and enable it at boot 1 systemctl start nfs-server.service &amp;amp; systemctl enable nfs-server.service Configure the NFS shared directory 1 mkdir -p /data/nfs 1 vim /etc/exports /data/nfs *(rw,sync,no_root_squash,no_all_squash) Restart the NFS service 1 systemctl restart nfs-server.</description><dc:creator>微信公众号</dc:creator><category>Kubernetes</category><category>Dragonfly</category><category>Images</category><category>Image Acceleration</category><category>AI</category><category>Operations</category></item><item><title>Open-Source GPU Virtualization Projects on Kubernetes</title><link>https://www.chenshaowen.com/en/blog/kubernetes-gpu-virtualization.html</link><pubDate>Sat, 14 Jun 2025 00:00:00 +0000</pubDate><atom:modified>Sat, 14 Jun 2025 00:00:00 +0000</atom:modified><guid>https://www.chenshaowen.com/en/blog/kubernetes-gpu-virtualization.html</guid><description>1. k8s-device-plugin https://github.com/NVIDIA/k8s-device-plugin is the official Kubernetes device plugin from NVIDIA, used to manage and allocate NVIDIA GPU resources in a Kubernetes cluster.
By interacting with kubelet, k8s-device-plugin automatically discovers and registers GPU devices and exposes them to the Kubernetes scheduler as resources. It supports many GPU models and is able to handle GPU partitioning and sharing.</description><dc:creator>微信公众号</dc:creator><category>Kubernetes</category><category>GPU</category><category>AI</category><category>Virtualization</category></item><item><title>FoundationDB Data Backup and Restore</title><link>https://www.chenshaowen.com/en/blog/foundationdb-data-backup-and-restore.html</link><pubDate>Tue, 10 Jun 2025 00:00:00 +0000</pubDate><atom:modified>Tue, 10 Jun 2025 00:00:00 +0000</atom:modified><guid>https://www.chenshaowen.com/en/blog/foundationdb-data-backup-and-restore.html</guid><description>1. Set Environment Variables Set the foundationdb cluster name and version 1 2 3 4 5 export CLUSTER_NAME= export NAMESPACE= export DEPLOY_NAME=${CLUSTER_NAME}-deployment export SECRET_NAME=fdb-backup-secret export VERSION=7.1.26 Set the S3 backup bucket and credentials 1 2 3 4 5 export BUCKET= export HOST=s3.us-west-2.amazonaws.com export AK=x export SK=x export S3_BACKUP_URI=&amp;#34;blobstore://${AK}:${SK}@${HOST}/fdb-backup?bucket=${BUCKET}&amp;amp;sc=0&amp;#34; 2. Create the Credentials 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 cat &amp;lt;&amp;lt;EOF | kubectl apply -f - apiVersion: v1 kind: Secret metadata: name: ${SECRET_NAME} namespace: ${NAMESPACE} type: Opaque stringData: credentials: | { &amp;#34;accounts&amp;#34;: { &amp;#34;${BUCKET}@${HOST}&amp;#34;: { &amp;#34;access_key&amp;#34;: &amp;#34;${AK}&amp;#34;, &amp;#34;secret&amp;#34;: &amp;#34;${SK}&amp;#34;, &amp;#34;endpoint&amp;#34;: &amp;#34;${HOST}&amp;#34; } } } EOF 3.</description><dc:creator>微信公众号</dc:creator><category>Database</category><category>FoundationDB</category><category>Kubernetes</category><category>Backup</category><category>Operations</category></item><item><title>kube-proxy Failure Prevents Pods on a Node from Accessing a Service</title><link>https://www.chenshaowen.com/en/blog/kube-proxy-abnormal-causes-pod-on-node-unable-to-access-service.html</link><pubDate>Mon, 31 Mar 2025 00:00:00 +0000</pubDate><atom:modified>Mon, 31 Mar 2025 00:00:00 +0000</atom:modified><guid>https://www.chenshaowen.com/en/blog/kube-proxy-abnormal-causes-pod-on-node-unable-to-access-service.html</guid><description>1. Problem Description Related Pods 1 2 3 4 5 6 kubectl -n istio-system get pod -o wide NAME READY STATUS RESTARTS AGE IP NODE NOMINATED NODE READINESS GATES istiod-647c7c9d95-7n7n6 1/1 Running 0 77m 10.244.173.51 docs-ai-a800-4 &amp;lt;none&amp;gt; &amp;lt;none&amp;gt; istiod-647c7c9d95-k6l88 1/1 Running 0 30m 10.244.210.160 ai-a40-2 &amp;lt;none&amp;gt; &amp;lt;none&amp;gt; istiod-647c7c9d95-pj82r 1/1 Running 0 51m 10.</description><dc:creator>微信公众号</dc:creator><category>Kubernetes</category><category>kube-proxy</category><category>Pod</category><category>Service</category><category>Operations</category></item><item><title>Deploying the DeepSeek 3FS Storage System in Containers</title><link>https://www.chenshaowen.com/en/blog/deploy-deepseek-3fs-storage-system-under-containers.html</link><pubDate>Sat, 15 Mar 2025 00:00:00 +0000</pubDate><atom:modified>Sat, 15 Mar 2025 00:00:00 +0000</atom:modified><guid>https://www.chenshaowen.com/en/blog/deploy-deepseek-3fs-storage-system-under-containers.html</guid><description>1. Deployment Plan Before starting the containerized deployment, a few requirements:
To simplify delivery, only one image is needed For reliability, deploy as many replicas as possible Start different services through different parameters Inject configuration through environment variables and render it into configuration files Below is the deployment plan for DeepSeek 3FS:</description><dc:creator>微信公众号</dc:creator><category>Storage</category><category>AI</category><category>Containers</category><category>Kubernetes</category><category>Docker</category><category>Operations</category><category>LLM</category><category>3FS</category></item><item><title>Using Calico to Limit Pod Bandwidth</title><link>https://www.chenshaowen.com/en/blog/using-calico-to-limit-pod-bandwidth.html</link><pubDate>Wed, 12 Feb 2025 00:00:00 +0000</pubDate><atom:modified>Wed, 12 Feb 2025 00:00:00 +0000</atom:modified><guid>https://www.chenshaowen.com/en/blog/using-calico-to-limit-pod-bandwidth.html</guid><description>1. Testing the Full Bandwidth Start the iperf3 server on the target host 1 2 3 4 5 iperf3 -s ----------------------------------------------------------- Server listening on 5201 ----------------------------------------------------------- Test from the client host 1 iperf3 -c x.x.x.x -p 5201 -t 10 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 Connecting to host x.</description><dc:creator>微信公众号</dc:creator><category>Calico</category><category>Pod</category><category>Bandwidth</category><category>Limiting</category><category>Kubernetes</category><category>Network</category><category>Operations</category><category>Learning</category><category>CNI</category><category>Traffic Control</category></item><item><title>Maintaining JuiceFS Enterprise Edition under Fluid</title><link>https://www.chenshaowen.com/en/blog/fluid-juicefs-enterprise-maintenance.html</link><pubDate>Sat, 18 Jan 2025 01:00:00 +0000</pubDate><atom:modified>Sat, 18 Jan 2025 01:00:00 +0000</atom:modified><guid>https://www.chenshaowen.com/en/blog/fluid-juicefs-enterprise-maintenance.html</guid><description>1. Setting Environment Variables 1 2 export NAMESPACE=xxx export PVC=xxx 2. The Dataset Will Not Become Ready 2.1 Fluid Component Problems 1 kubectl -n fluid-system get pod -o wide | grep -v &amp;#34;Running&amp;#34; There may be cases where something did not start up properly.
2.2 Abnormally Terminated Datasets Abnormal resources can cause Fluid resources to restart repeatedly, and manual intervention is required to delete them.</description><dc:creator>微信公众号</dc:creator><category>Fluid</category><category>JuiceFS</category><category>Kubernetes</category><category>Storage</category><category>AI</category><category>Data</category><category>Operations</category></item><item><title>Building Multi-Arch Images with Nerdctl</title><link>https://www.chenshaowen.com/en/blog/use-nerdctl-to-build-multi-architecture-images.html</link><pubDate>Fri, 17 Jan 2025 00:00:00 +0000</pubDate><atom:modified>Fri, 17 Jan 2025 00:00:00 +0000</atom:modified><guid>https://www.chenshaowen.com/en/blog/use-nerdctl-to-build-multi-architecture-images.html</guid><description>1. Installing Nerdctl Install Opscli 1 curl -sfL https://raw.githubusercontent.com/shaowenchen/ops/main/getcli.sh |VERSION=latest sh - Install Nerdctl 1 opscli task -f install-nerdctl --arch amd64 2. BuildKit Download Buildkit 1 wget https://github.com/moby/buildkit/releases/download/v0.19.0-rc2/buildkit-v0.19.0-rc2.linux-amd64.tar.gz Install Buildkit 1 2 tar xvf buildkit-*.tar.gz mv bin/* /usr/local/bin/ Configure Buildkitd 1 mkdir -p /etc/buildkit /data/buildkit 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 cat &amp;gt; /etc/buildkit/buildkitd.</description><dc:creator>微信公众号</dc:creator><category>Multi-Arch</category><category>Images</category><category>CI</category><category>Nerdctl</category><category>Kubernetes</category><category>Operations</category><category>Learning</category><category>CICD</category><category>containerd</category><category>Build</category></item><item><title>Deploying Jumpserver as a Bastion Host on Kubernetes</title><link>https://www.chenshaowen.com/en/blog/how-to-deploy-jumpserver-on-kubernetes.html</link><pubDate>Thu, 09 Jan 2025 00:00:00 +0000</pubDate><atom:modified>Thu, 09 Jan 2025 00:00:00 +0000</atom:modified><guid>https://www.chenshaowen.com/en/blog/how-to-deploy-jumpserver-on-kubernetes.html</guid><description>1. Deploying Jumpserver You need a StorageClass ready in advance to store Jumpserver&amp;rsquo;s data. Besides the database mentioned below, each component — jms-core, jms-web, jms-koko, jms-lion, jms-chen — also needs a PV for storage. 1.1 Deploying MySQL Refer to https://github.com/shaowenchen/ops-hub/blob/main/database/mysql8.yaml to deploy MySQL. You need to adjust the StorageClass field</description><dc:creator>微信公众号</dc:creator><category>Kubernetes</category><category>Jumpserver</category><category>Security</category><category>Operations</category><category>Bastion Host</category><category>Deployment</category><category>Learning</category></item><item><title>Using Fluid to Access OBS Storage and Performance Testing</title><link>https://www.chenshaowen.com/en/blog/using-fluid-to-access-obs-storage-and-performance-testing.html</link><pubDate>Tue, 22 Oct 2024 00:00:00 +0000</pubDate><atom:modified>Tue, 22 Oct 2024 00:00:00 +0000</atom:modified><guid>https://www.chenshaowen.com/en/blog/using-fluid-to-access-obs-storage-and-performance-testing.html</guid><description>1. Jindo Mounting OBS Set the environment variables 1 2 3 4 export ENDPOINT=obs.cn-north-4.myhuaweicloud.com export BUCKET= export AK= export SK= Create the credentials 1 2 3 4 5 6 7 8 9 10 kubectl apply -f - &amp;lt;&amp;lt;EOF apiVersion: v1 kind: Secret metadata: name: myobssecret type: Opaque stringData: fs.obs.accessKeyId: ${AK} fs.</description><dc:creator>微信公众号</dc:creator><category>OBS</category><category>Fluid</category><category>JuiceFS</category><category>Kubernetes</category><category>AI</category><category>Data</category><category>Operations</category></item><item><title>Processing Data on Kubernetes with Iceberg and Spark</title><link>https://www.chenshaowen.com/en/blog/use-iceberg-and-spark-on-kubernetes.html</link><pubDate>Thu, 12 Sep 2024 00:00:00 +0000</pubDate><atom:modified>Thu, 12 Sep 2024 00:00:00 +0000</atom:modified><guid>https://www.chenshaowen.com/en/blog/use-iceberg-and-spark-on-kubernetes.html</guid><description>1. Data Processing Architecture It is mainly divided into four layers: Processing capability layer: Spark on Kubernetes provides streaming data processing capability Data management layer: Iceberg provides dataset access operations such as ACID and tables Storage layer: Hive MetaStore manages Iceberg table metadata, PostgreSQL serves as the storage backend for</description><dc:creator>微信公众号</dc:creator><category>Spark</category><category>Iceberg</category><category>Kubernetes</category><category>Big Data</category><category>Data Lake</category><category>Operations</category><category>Data Processing</category><category>Learning</category></item><item><title>DLRover Workflow Analysis on Kubernetes</title><link>https://www.chenshaowen.com/en/blog/kubernetes-dlrover-workflow-analysis.html</link><pubDate>Tue, 27 Aug 2024 00:00:00 +0000</pubDate><atom:modified>Tue, 27 Aug 2024 00:00:00 +0000</atom:modified><guid>https://www.chenshaowen.com/en/blog/kubernetes-dlrover-workflow-analysis.html</guid><description>The DLRover version used in this article is 0.3.7 1. DLRover Operator 1.1 Starting the ElasticJob and ScalePlan Controllers Implementation code: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 // 创建 ElasticJob 的控制器 if err = controllers.NewElasticJobReconciler(mgr, masterImage).SetupWithManager(mgr); err</description><dc:creator>微信公众号</dc:creator><category>DLRover</category><category>Kubernetes</category><category>AI</category><category>Training</category><category>Fault Self-Healing</category><category>Operations</category></item><item><title>Elastic, Fault-Tolerant Training with DLRover-Managed Jobs</title><link>https://www.chenshaowen.com/en/blog/use-dlrover-to-manage-training-job.html</link><pubDate>Sat, 17 Aug 2024 00:00:00 +0000</pubDate><atom:modified>Sat, 17 Aug 2024 00:00:00 +0000</atom:modified><guid>https://www.chenshaowen.com/en/blog/use-dlrover-to-manage-training-job.html</guid><description>1. Problems Facing Distributed Training Estimating training resources is difficult and cannot be automated How much compute, how much time, how much bandwidth, how many CPUs, how much memory — without enough accumulated experience it is hard to estimate accurately. The result is over-requesting and over-allocation, causing enormous resource waste.</description><dc:creator>微信公众号</dc:creator><category>DLRover</category><category>AI</category><category>Training</category><category>Kubernetes</category><category>Elastic Training</category><category>Fault-Tolerant Training</category><category>Operations</category></item><item><title>Why top node, free, and Grafana Numbers Don't Line Up</title><link>https://www.chenshaowen.com/en/blog/why-top-node-free-grafana-data-not-match.html</link><pubDate>Fri, 26 Jul 2024 01:00:00 +0000</pubDate><atom:modified>Fri, 26 Jul 2024 01:00:00 +0000</atom:modified><guid>https://www.chenshaowen.com/en/blog/why-top-node-free-grafana-data-not-match.html</guid><description>1. top Shows Node Resource Usage Above 100% 1 2 3 4 5 6 kubectl top node NAME CPU(cores) CPU% MEMORY(bytes) MEMORY% master-1 995m 16% 13760Mi 118% master-2 827m 13% 10672Mi 92% master-3 889m 14% 10244Mi 88% This is because usage is computed against allocatable resources by default, which excludes the portion reserved by Kubelet.</description><dc:creator>微信公众号</dc:creator><category>Monitoring</category><category>Memory</category><category>Kubernetes</category><category>Grafana</category><category>Operations</category><category>Troubleshooting</category></item><item><title>Using JuiceFS to Store Elasticsearch Data</title><link>https://www.chenshaowen.com/en/blog/store-elasticsearch-data-in-juicefs.html</link><pubDate>Wed, 22 May 2024 00:00:00 +0000</pubDate><atom:modified>Wed, 22 May 2024 00:00:00 +0000</atom:modified><guid>https://www.chenshaowen.com/en/blog/store-elasticsearch-data-in-juicefs.html</guid><description>1. Storage Options There are three storage approaches:
Isolate by directory and share a single JuiceFS Elasticsearch nodes share one JuiceFS instance, mounting different Elasticsearch nodes through subdirectories.
/0/ corresponds to node Node-0
/1/ corresponds to node Node-1
/2/ corresponds to node Node-2
The main advantage of this approach is that it is easy to scale and simple to configure.</description><dc:creator>微信公众号</dc:creator><category>Kubernetes</category><category>JuiceFS</category><category>Elasticsearch</category><category>Storage</category><category>Operations</category></item><item><title>Fluid Directly Mounting S3 and Performance Testing</title><link>https://www.chenshaowen.com/en/blog/fluid-mount-s3-and-performance-testing.html</link><pubDate>Thu, 16 May 2024 00:00:00 +0000</pubDate><atom:modified>Thu, 16 May 2024 00:00:00 +0000</atom:modified><guid>https://www.chenshaowen.com/en/blog/fluid-mount-s3-and-performance-testing.html</guid><description>1. Packaging the Fluid Runtime Image Create the fluid_config_init.py script 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 #!/usr/bin/env python import json rawStr = &amp;#34;&amp;#34; with open(&amp;#34;/etc/fluid/config.json&amp;#34;, &amp;#34;r&amp;#34;) as f: rawStr = f.</description><dc:creator>微信公众号</dc:creator><category>Fluid</category><category>JuiceFS</category><category>Kubernetes</category><category>Storage</category><category>AI</category><category>Data</category></item><item><title>Fluid Using NFS Runtime and Performance Testing</title><link>https://www.chenshaowen.com/en/blog/fluid-using-nfs-runtime-and-performance-testing.html</link><pubDate>Tue, 14 May 2024 00:00:00 +0000</pubDate><atom:modified>Tue, 14 May 2024 00:00:00 +0000</atom:modified><guid>https://www.chenshaowen.com/en/blog/fluid-using-nfs-runtime-and-performance-testing.html</guid><description>1. Creating a Dataset 1 2 3 4 5 6 7 8 9 10 kubectl apply -f - &amp;lt;&amp;lt;EOF apiVersion: data.fluid.io/v1alpha1 kind: Dataset metadata: name: nfs-demo spec: mounts: - mountPoint: x.x.x.x:/x-x/ name: nfs-demo EOF 2. Creating a Runtime 1 2 3 4 5 6 7 8 9 10 11 12 13 14 kubectl apply -f - &amp;lt;&amp;lt;EOF apiVersion: data.</description><dc:creator>微信公众号</dc:creator><category>Fluid</category><category>JuiceFS</category><category>Kubernetes</category><category>Storage</category><category>AI</category><category>Data</category></item><item><title>Event-Driven Workflows with Argo Events</title><link>https://www.chenshaowen.com/en/blog/event-driven-workflow-using-argo-events.html</link><pubDate>Wed, 27 Mar 2024 00:00:00 +0000</pubDate><atom:modified>Wed, 27 Mar 2024 00:00:00 +0000</atom:modified><guid>https://www.chenshaowen.com/en/blog/event-driven-workflow-using-argo-events.html</guid><description>1. How Argo Events Works The diagram above is from the official Argo Events website. An event processing system has three important parts:
Ingesting event sources, which corresponds to the Event Source Distributing events, which corresponds to the Event Sensor Consuming events, which corresponds to the Event Trigger The event messages are stored in the EventBus, which uses NATS by default.</description><dc:creator>微信公众号</dc:creator><category>Argo</category><category>Argo Events</category><category>Kubernetes</category><category>CICD</category><category>Event-Driven</category><category>Operations</category></item><item><title>Volcano Basics</title><link>https://www.chenshaowen.com/en/blog/the-basic-of-volcano.html</link><pubDate>Sun, 24 Mar 2024 00:00:00 +0000</pubDate><atom:modified>Sun, 24 Mar 2024 00:00:00 +0000</atom:modified><guid>https://www.chenshaowen.com/en/blog/the-basic-of-volcano.html</guid><description>1. Introduction to Volcano Volcano is a Kubernetes-based resource scheduling system open-sourced by Huawei. Compared with the native scheduler, its notable features are:
Supports gang scheduling Scheduling batch jobs easily runs into deadlock: for example, two jobs each need 10 Pods running simultaneously to start. When both jobs are submitted at the same time, it is possible that only part of the Pods of each are scheduled, so neither job can run properly and they wait on each other.</description><dc:creator>微信公众号</dc:creator><category>Volcano</category><category>AI</category><category>Kubernetes</category><category>Scheduling</category><category>Operations</category></item><item><title>Creating a PVC Backed by JuiceFS (Enterprise Edition) in Kubernetes</title><link>https://www.chenshaowen.com/en/blog/how-to-quickly-create-juicefs-enterprise-pvc-in-kubernetes.html</link><pubDate>Fri, 08 Mar 2024 00:00:00 +0000</pubDate><atom:modified>Fri, 08 Mar 2024 00:00:00 +0000</atom:modified><guid>https://www.chenshaowen.com/en/blog/how-to-quickly-create-juicefs-enterprise-pvc-in-kubernetes.html</guid><description>This post mainly records the script for creating an enterprise-edition JuiceFS PVC, to make configuration quick.
1. Set Environment Variables 1.1 Basic Configuration 1 2 3 export NAMESPACE= export PVC_NAME= export JUICEFS_VOLUME= 1.2 JuiceFS Credentials 1 2 3 export TOKEN= export ACCESS_KEY= export SECRET_KEY= 1.3 JuiceFS Service Configuration 1 2 export BASE_URL=http://x.</description><dc:creator>微信公众号</dc:creator><category>AI</category><category>Storage</category><category>JuiceFS</category><category>Kubernetes</category><category>Fluid</category><category>Operations</category><category>PVC</category><category>Enterprise Edition</category></item><item><title>Creating a PVC Backed by JuiceFS (Community Edition) in Kubernetes</title><link>https://www.chenshaowen.com/en/blog/how-to-quickly-create-juicefs-pvc-in-kubernetes.html</link><pubDate>Thu, 07 Mar 2024 00:00:00 +0000</pubDate><atom:modified>Thu, 07 Mar 2024 00:00:00 +0000</atom:modified><guid>https://www.chenshaowen.com/en/blog/how-to-quickly-create-juicefs-pvc-in-kubernetes.html</guid><description>This post mainly records the script for creating a community-edition JuiceFS PVC, to make configuration quick. For component deployment, see Managing Data in Kubernetes with Fluid and JuiceFS.
1. Set Environment Variables Bucket configuration 1 2 3 4 5 6 export ACCESS_KEY= export SECRET_KEY= export BUCKET= export ENDPOINT=ks3-cn-beijing-internal.ksyun.com export BUCKET_ENPOINT=$BUCKET.</description><dc:creator>微信公众号</dc:creator><category>AI</category><category>Storage</category><category>JuiceFS</category><category>Kubernetes</category><category>Fluid</category><category>Operations</category><category>PVC</category></item><item><title>Introduction to Argo Core Components</title><link>https://www.chenshaowen.com/en/blog/introduction-to-argo-core-components.html</link><pubDate>Fri, 23 Feb 2024 00:00:00 +0000</pubDate><atom:modified>Fri, 23 Feb 2024 00:00:00 +0000</atom:modified><guid>https://www.chenshaowen.com/en/blog/introduction-to-argo-core-components.html</guid><description>1. Introduction to Argo Argo is an open source project that provides a set of tools on Kubernetes for building and running applications. The core components of Argo mainly include the following:
Argo CD Argo CD is a GitOps-based continuous delivery tool that allows users to declaratively manage the deployment of applications in a Kubernetes cluster.</description><dc:creator>微信公众号</dc:creator><category>Argo</category><category>Argo CD</category><category>Kubernetes</category><category>CICD</category><category>DevOps</category><category>Operations</category></item><item><title>A Practical Guide to kind</title><link>https://www.chenshaowen.com/en/blog/practice-guide-to-kind.html</link><pubDate>Mon, 05 Feb 2024 00:00:00 +0000</pubDate><atom:modified>Mon, 05 Feb 2024 00:00:00 +0000</atom:modified><guid>https://www.chenshaowen.com/en/blog/practice-guide-to-kind.html</guid><description>1. Project Overview kind is a tool for managing Kubernetes clusters using containers. Project address https://github.com/kubernetes-sigs/kind .
It is mainly used for:
Local development environments Temporary environments for learning Automated testing 2. Installing kind macOS 1 brew install kind Linux 1 2 curl -Lo /usr/local/bin/kind https://kind.sigs.k8s.io/dl/v0.21.0/kind-linux-amd64 chmod +x /usr/local/bin/kind 3. Creating a kind Cluster If you have a PROXY configured locally, it is recommended to reset the environment variables before creating:</description><dc:creator>微信公众号</dc:creator><category>Kubernetes</category><category>kind</category><category>Practice</category><category>Operations</category></item><item><title>AI-Related Exporters in a Kubernetes Cluster</title><link>https://www.chenshaowen.com/en/blog/ai-related-exporters-in-kubernetes.html</link><pubDate>Sun, 04 Feb 2024 00:00:00 +0000</pubDate><atom:modified>Sun, 04 Feb 2024 00:00:00 +0000</atom:modified><guid>https://www.chenshaowen.com/en/blog/ai-related-exporters-in-kubernetes.html</guid><description>1. dcgm-exporter dcgm-exporter is the GPU monitoring tool provided by the official NVIDIA community.
Project address https://github.com/NVIDIA/dcgm-exporter
1.1 Installation Add the Helm chart repository 1 helm repo add gpu-helm-charts https://nvidia.github.io/dcgm-exporter/helm-charts 1 helm repo update Install 1 2 3 4 5 helm install dcgm-exporter gpu-helm-charts/dcgm-exporter --namespace monitor --create-namespace \ --set serviceMonitor.enabled=false \ --set image.</description><dc:creator>微信公众号</dc:creator><category>Kubernetes</category><category>AI</category><category>Metrics</category><category>Collection</category></item><item><title>Managing Data in Kubernetes with Fluid and JuiceFS</title><link>https://www.chenshaowen.com/en/blog/managing-data-in-kubernetes-using-fluid-and-juicefs.html</link><pubDate>Sat, 27 Jan 2024 00:00:00 +0000</pubDate><atom:modified>Sat, 27 Jan 2024 00:00:00 +0000</atom:modified><guid>https://www.chenshaowen.com/en/blog/managing-data-in-kubernetes-using-fluid-and-juicefs.html</guid><description>1. Introduction to Fluid Below is the Fluid architecture diagram from https://github.com/fluid-cloudnative/fluid:
Fluid abstracts two concepts:
Dataset, a collection of data, the abstraction from the user&amp;rsquo;s point of view Runtime, the abstraction of the real services such as data storage and acceleration Fluid mainly solves the problems of using traditional caching systems on Kubernetes:</description><dc:creator>微信公众号</dc:creator><category>Kubernetes</category><category>Fluid</category><category>JuiceFS</category><category>Storage</category><category>Data Management</category><category>AI</category><category>Operations</category></item><item><title>JuiceFS Community Edition, Enterprise Edition, and Dragonfly Integration: Performance Testing and Comparison</title><link>https://www.chenshaowen.com/en/blog/performance-testing-and-comparison-of-juicefs-ce-ee-and-dragonfly.html</link><pubDate>Wed, 24 Jan 2024 00:00:00 +0000</pubDate><atom:modified>Wed, 24 Jan 2024 00:00:00 +0000</atom:modified><guid>https://www.chenshaowen.com/en/blog/performance-testing-and-comparison-of-juicefs-ce-ee-and-dragonfly.html</guid><description>Note that --block-size 4096 in this post means 4GB; using --block-size 4 would be more reasonable and would give better write performance.
1. Environment Preparation Enter a safe directory 1 mkdir -p /data/test &amp;amp;&amp;amp; cd /data/test All the test tasks are carried out in this directory.
Create a separate directory for Redis 1 mkdir redis-data It is recommended to create a new directory, because Redis will change the Owner of the files in the current directory to systemd-coredump.</description><dc:creator>微信公众号</dc:creator><category>JuiceFS</category><category>Dragonfly</category><category>Storage</category><category>Performance Testing</category><category>Kubernetes</category><category>Operations</category></item><item><title>Pod Health Checks Drained /run Storage Space and Nearly Sent Me Packing</title><link>https://www.chenshaowen.com/en/blog/health-check-runs-out-of-root-run-storage.html</link><pubDate>Tue, 23 Jan 2024 00:00:00 +0000</pubDate><atom:modified>Tue, 23 Jan 2024 00:00:00 +0000</atom:modified><guid>https://www.chenshaowen.com/en/blog/health-check-runs-out-of-root-run-storage.html</guid><description>If you use nvidia-container-runtime, this is worth your attention — especially if JuiceFS is also in the picture. 1. An Alert Out of Nowhere, and I Panicked Over the weekend I was studying TensorRT LLM, and while I was at it I installed Dragonfly on the largest production cluster. Then</description><dc:creator>微信公众号</dc:creator><category>Kubernetes</category><category>NVIDIA</category><category>JuiceFS</category><category>Experience</category><category>Troubleshooting</category><category>Operations</category></item><item><title>Distributing Cluster Images with Dragonfly V2</title><link>https://www.chenshaowen.com/en/blog/distributing-image-with-dragonfly-v2.html</link><pubDate>Sat, 13 Jan 2024 11:22:55 +0000</pubDate><atom:modified>Sat, 13 Jan 2024 11:22:55 +0000</atom:modified><guid>https://www.chenshaowen.com/en/blog/distributing-image-with-dragonfly-v2.html</guid><description>1. Introduction to Dragonfly The Dragonfly documentation at https://d7y.io/zh/docs/ already covers things in detail. Here is just a brief introduction to the main components of V2:
Manager, which provides the UI, user management, cluster monitoring, task management, and other features Scheduler, which schedules traffic between Peers and provides preheating and other features Seed Peer, the back-to-source node used to download data from origin sites (Harbor, Docker.</description><dc:creator>微信公众号</dc:creator><category>AI</category><category>Dragonfly</category><category>Kubernetes</category><category>Images</category><category>Image</category><category>Nydus</category><category>Configuration</category><category>Practice</category><category>Operations</category></item><item><title>EnvoyFilter Configuration in Istio</title><link>https://www.chenshaowen.com/en/blog/configurate-envoyfilter-in-istio.html</link><pubDate>Sun, 12 Nov 2023 00:00:00 +0000</pubDate><atom:modified>Sun, 12 Nov 2023 00:00:00 +0000</atom:modified><guid>https://www.chenshaowen.com/en/blog/configurate-envoyfilter-in-istio.html</guid><description>1. What Is EnvoyFilter EnvoyFilter is a CRD resource in Istio that allows users to modify Envoy&amp;rsquo;s configuration to satisfy their customization needs for different scenarios.
1 2 3 4 5 6 7 8 9 kubectl get envoyfilter -A NAMESPACE NAME AGE istio-system add-request-id-into-ingressgateway 54d istio-system compression-gzip 18d istio-system custom-access-log 3d istio-system ingressgateway-settings 52d istio-system preserve-request-header-us-test-ingress-gateway 95d istio-system preserve-x-request-id 54d When using Istio, you will usually end up using at least a few EnvoyFilters.</description><dc:creator>微信公众号</dc:creator><category>Istio</category><category>EnvoyFilter</category><category>Kubernetes</category><category>Service Mesh</category><category>Configuration</category><category>Operations</category></item><item><title>From CPU to Network: A Record of Troubleshooting Application Slowness</title><link>https://www.chenshaowen.com/en/blog/record-a-troubleshooting-process-for-application-slowness.html</link><pubDate>Wed, 08 Nov 2023 00:00:00 +0000</pubDate><atom:modified>Wed, 08 Nov 2023 00:00:00 +0000</atom:modified><guid>https://www.chenshaowen.com/en/blog/record-a-troubleshooting-process-for-application-slowness.html</guid><description>1. Symptoms The business side reported that the API of application app-a was slow. Looking at the logs, one particular Pod was slow, and deleting that Pod so it moved to another node fixed it.
From the monitoring metrics you can see that the Pod&amp;rsquo;s CPU usage did indeed spike sharply.</description><dc:creator>微信公众号</dc:creator><category>CPU</category><category>Network</category><category>Application</category><category>Troubleshooting</category><category>Kubernetes</category><category>Operations</category></item><item><title>Source Code Analysis of Kubernetes Pod IP Management</title><link>https://www.chenshaowen.com/en/blog/source-analysis-kubernetes-management-of-pod-ip.html</link><pubDate>Thu, 02 Nov 2023 19:45:31 +0000</pubDate><atom:modified>Thu, 02 Nov 2023 19:45:31 +0000</atom:modified><guid>https://www.chenshaowen.com/en/blog/source-analysis-kubernetes-management-of-pod-ip.html</guid><description>1. Subnet Management by kube-controller-manager kube-controller-manager has many controllers; the one related to Pod IP is NodeIpamController. The NodeIpamController mainly manages the podcidr of nodes: when a new node joins the cluster, it allocates a subnet to that node; when a node is deleted, it reclaims the subnet. The subnets</description><dc:creator>微信公众号</dc:creator><category>Source Code Analysis</category><category>Kubernetes</category><category>Pod</category><category>IP</category><category>Network</category><category>Learning</category><category>Operations</category></item><item><title>The Scope of Credentials During Pipeline Builds</title><link>https://www.chenshaowen.com/en/blog/the-scope-of-credential-in-building.html</link><pubDate>Thu, 06 Jul 2023 00:00:00 +0000</pubDate><atom:modified>Thu, 06 Jul 2023 00:00:00 +0000</atom:modified><guid>https://www.chenshaowen.com/en/blog/the-scope-of-credential-in-building.html</guid><description>In the client, we have already seen the Docker CLI passing credentials to the Docker Daemon via X-Registry-Config when sending the build context. But recent build feedback still shows some phenomena that cannot be explained. This post mainly runs some basic tests to make troubleshooting easier.
1. Building under host Docker The Docker Daemon is started with root privileges.</description><dc:creator>微信公众号</dc:creator><category>CICD</category><category>DevOps</category><category>Docker</category><category>Credentials</category><category>Kubernetes</category><category>Operations</category><category>Troubleshooting</category></item><item><title>How to Set HPA for Kubernetes Applications and the Related Parameters</title><link>https://www.chenshaowen.com/en/blog/how-to-set-hpa-for-kubernetes-app.html</link><pubDate>Thu, 08 Jun 2023 00:00:00 +0000</pubDate><atom:modified>Thu, 08 Jun 2023 00:00:00 +0000</atom:modified><guid>https://www.chenshaowen.com/en/blog/how-to-set-hpa-for-kubernetes-app.html</guid><description>1. Business Background Once an enterprise reaches a certain scale, relying entirely on public cloud infrastructure makes IT costs very high.
The cost of purchasing physical machines can be amortized over the next 3 to 5 years, and afterwards the machines are not scrapped; instead they continue to serve beyond their planned lifespan.</description><dc:creator>微信公众号</dc:creator><category>Kubernetes</category><category>HPA</category><category>Pod</category><category>Elastic Scaling</category><category>Operations</category><category>Hybrid Cloud</category><category>Learning</category></item><item><title>Autoscaling Kubernetes Applications with KEDA</title><link>https://www.chenshaowen.com/en/blog/autoscale-kubernetes-applications-with-keda.html</link><pubDate>Thu, 18 May 2023 00:00:00 +0000</pubDate><atom:modified>Thu, 18 May 2023 00:00:00 +0000</atom:modified><guid>https://www.chenshaowen.com/en/blog/autoscale-kubernetes-applications-with-keda.html</guid><description>1. HPA VS KEDA HPA also provides:
Elasticity based on custom metrics Scale to Zero Compared with KEDA, these are no longer disadvantages.
The real difference is that HPA can only scale using monitoring data, whereas KEDA can scale using many more data sources — queue messages, databases, Redis, and so on, including monitoring data as well.</description><dc:creator>微信公众号</dc:creator><category>Kubernetes</category><category>KEDA</category><category>Autoscaling</category><category>Elastic Scaling</category><category>Operations</category><category>Learning</category><category>HPA</category><category>Event-Driven</category></item><item><title>Tekton Optimization: A Custom Cluster Scheduler</title><link>https://www.chenshaowen.com/en/blog/custom-cluster-scheduler-to-optimize-tekton.html</link><pubDate>Wed, 26 Apr 2023 10:00:00 +0000</pubDate><atom:modified>Wed, 26 Apr 2023 10:00:00 +0000</atom:modified><guid>https://www.chenshaowen.com/en/blog/custom-cluster-scheduler-to-optimize-tekton.html</guid><description>1. A Constrained Build Environment Cannot Meet Build Requirements Tekton is a CICD engine based on a Kubernetes cluster, and it is more cloud-native than Jenkins. In plain terms, that means it is easier to develop plugins for, easier to scale, easier to observe, and more fun.
Because code can only be stored on the company intranet, the build cluster can only be deployed on the office intranet.</description><dc:creator>微信公众号</dc:creator><category>Optimization</category><category>Tekton</category><category>CICD</category><category>DevOps</category><category>Kubernetes</category><category>Operations</category><category>Learning</category><category>Scheduling</category><category>Build</category><category>Multi-Cluster</category></item><item><title>Optimizing Tekton's Slow Clone Task, Saving About 30 Seconds</title><link>https://www.chenshaowen.com/en/blog/optimizing-the-slow-of-tekton-clone-task.html</link><pubDate>Thu, 16 Feb 2023 00:00:00 +0000</pubDate><atom:modified>Thu, 16 Feb 2023 00:00:00 +0000</atom:modified><guid>https://www.chenshaowen.com/en/blog/optimizing-the-slow-of-tekton-clone-task.html</guid><description>1. Symptom - Tekton&amp;rsquo;s Clone Task Is Slow When running the clone task, Tekton is very time-consuming; with multiple repositories it generally takes around 2 minutes 30 seconds. As shown below:
A pipeline that only clones takes 2 minutes 16 seconds to run, while the clone script itself actually runs for only 1-3 seconds.</description><dc:creator>微信公众号</dc:creator><category>Tekton</category><category>Kubernetes</category><category>CICD</category><category>DevOps</category><category>Operations</category><category>Performance Optimization</category></item><item><title>Using Falco to Monitor Runtime Security</title><link>https://www.chenshaowen.com/en/blog/listen-runtime-security-using-falco.html</link><pubDate>Sat, 11 Feb 2023 00:00:00 +0000</pubDate><atom:modified>Sat, 11 Feb 2023 00:00:00 +0000</atom:modified><guid>https://www.chenshaowen.com/en/blog/listen-runtime-security-using-falco.html</guid><description>1. What Falco Is Falco is a cloud-native runtime security project contributed to the CNCF by Sysdig.
Falco implements an extensible event rule filtering engine. Through a series of operations — capturing events, matching security rules, and producing alert notifications — it can surface security problems in a system. The events come from system calls, and it also supports an ebpf probe; the rules are open source [1] and you can define your own extensions [2].</description><dc:creator>微信公众号</dc:creator><category>Falco</category><category>Kubernetes</category><category>Security</category><category>Tools</category><category>Operations</category></item><item><title>How to Repair a Kubernetes Master Node After Reinstalling the OS</title><link>https://www.chenshaowen.com/en/blog/how-to-repair-k8s-master-after-reinstalling-os.html</link><pubDate>Tue, 17 Jan 2023 00:00:00 +0000</pubDate><atom:modified>Tue, 17 Jan 2023 00:00:00 +0000</atom:modified><guid>https://www.chenshaowen.com/en/blog/how-to-repair-k8s-master-after-reinstalling-os.html</guid><description>Recently I ran into this twice: a host had to be reinstalled because of a failure. In one case only a single Etcd node was left, and the whole cluster stayed down for half an hour before it recovered. This post mainly records the process of initializing a fresh Ubuntu</description><dc:creator>微信公众号</dc:creator><category>Kubernetes</category><category>Repair</category><category>Operations</category><category>Etcd</category><category>Troubleshooting</category><category>Cluster</category><category>Kubekey</category><category>Learning</category></item><item><title>Tekton Stress Testing and Build Cluster Parameter Optimization</title><link>https://www.chenshaowen.com/en/blog/tekton-stress-test-and-optimize-k8s-cluster.html</link><pubDate>Thu, 10 Nov 2022 00:00:00 +0000</pubDate><atom:modified>Thu, 10 Nov 2022 00:00:00 +0000</atom:modified><guid>https://www.chenshaowen.com/en/blog/tekton-stress-test-and-optimize-k8s-cluster.html</guid><description>1. Purpose of the Test Tune the parameters of the build cluster Probe the upper limit on the number of concurrent Tekton pipelines Give the optimal concurrency limit for a single cluster 2. Related Components and Machine Configuration Kubernetes version v1.21.4
Tekton version v0.24.1, kept consistent with production
OpenEBS version localpv version 3.</description><dc:creator>微信公众号</dc:creator><category>Tekton</category><category>Kubernetes</category><category>Stress Testing</category><category>Large Clusters</category><category>Optimization</category><category>CICD</category><category>Operations</category></item><item><title>Kubernetes Cluster Troubleshooting</title><link>https://www.chenshaowen.com/en/blog/kubernetes-cluster-troubleshooting.html</link><pubDate>Tue, 01 Nov 2022 01:00:00 +0000</pubDate><atom:modified>Tue, 01 Nov 2022 01:00:00 +0000</atom:modified><guid>https://www.chenshaowen.com/en/blog/kubernetes-cluster-troubleshooting.html</guid><description>FailedCreatePodSandBox Error Error response from daemon: OCI runtime create failed: container_linux.go:380: starting container process caused: process_linux.go:402: getting the final child's pid from pipe caused: EOF: unknown Resolution Clear the cache 1 echo 3 &amp;gt; /proc/sys/vm/drop_caches Cause Too much memory fragmentation calico-node Keeps Restarting increase max user Error runtime: failed to</description><dc:creator>微信公众号</dc:creator><category>Kubernetes</category><category>Cluster</category><category>Troubleshooting</category><category>Operations</category><category>Learning</category><category>Fault Diagnosis</category><category>Pod</category><category>Best Practices</category><category>Problem Localization</category></item><item><title>How to Repair a Kubernetes Cluster After Changing IPs</title><link>https://www.chenshaowen.com/en/blog/how-to-repair-the-kubernetes-cluster-after-changing-ip.html</link><pubDate>Tue, 25 Oct 2022 00:00:00 +0000</pubDate><atom:modified>Tue, 25 Oct 2022 00:00:00 +0000</atom:modified><guid>https://www.chenshaowen.com/en/blog/how-to-repair-the-kubernetes-cluster-after-changing-ip.html</guid><description>A record of repairing a cluster failure caused by an IP change. There are two clusters: one single-node (allinone) cluster, and one four-node cluster (3 masters, 1 node). 1. Update the Etcd Certificates [On every Etcd node] Back up the Etcd certificates 1 cp -R /etc/ssl/etcd/ssl /etc/ssl/etcd/ssl-bak View the domains</description><dc:creator>微信公众号</dc:creator><category>Kubernetes</category><category>Operations</category><category>Repair</category><category>Troubleshooting</category><category>Learning</category><category>Etcd</category><category>Certificates</category><category>Cluster</category><category>Network</category></item><item><title>A Deep Dive into Kubernetes Network Packet Forwarding</title><link>https://www.chenshaowen.com/en/blog/kubernetes-network-packets.html</link><pubDate>Sat, 17 Sep 2022 00:00:00 +0000</pubDate><atom:modified>Sat, 17 Sep 2022 00:00:00 +0000</atom:modified><guid>https://www.chenshaowen.com/en/blog/kubernetes-network-packets.html</guid><description>This article is translated from https://learnk8s.io/kubernetes-network-packets, not word for word, with some of my own understanding worked in.
By reading this article, you can learn how packets are forwarded inside and outside Kubernetes, starting from the original web request all the way to the container hosting the application.
Kubernetes Network Requirements Before diving into the details of how packets flow through a Kubernetes cluster, let&amp;rsquo;s first clarify Kubernetes&amp;rsquo; requirements for networking.</description><dc:creator>微信公众号</dc:creator><category>Translation</category><category>Kubernetes</category><category>Network</category><category>Operations</category><category>Learning</category><category>iptables</category><category>CNI</category></item><item><title>Observing Kubernetes Network Connections with Kindling</title><link>https://www.chenshaowen.com/en/blog/insight-kubernetes-network-by-kindling.html</link><pubDate>Sat, 10 Sep 2022 00:00:00 +0000</pubDate><atom:modified>Sat, 10 Sep 2022 00:00:00 +0000</atom:modified><guid>https://www.chenshaowen.com/en/blog/insight-kubernetes-network-by-kindling.html</guid><description>I recently had a requirement to collect Kubernetes&amp;rsquo; external network access. So I set up and tried out some related projects. This post is mainly about how to install Kindling and configure Grafana to view Kubernetes network connection data.
1. What Is Kindling Kindling solves the problem of how to observe the network without intruding on the application; its functionality is mainly achieved by exposing kernel events for observation.</description><dc:creator>微信公众号</dc:creator><category>Kubernetes</category><category>Kindling</category><category>Network</category><category>Observability</category><category>Operations</category><category>eBPF</category><category>Monitoring</category></item><item><title>How to Hijack docker.io Image Traffic to a Private Repository</title><link>https://www.chenshaowen.com/en/blog/hijack-docker-io-req-to-private-repository.html</link><pubDate>Mon, 18 Jul 2022 00:00:00 +0000</pubDate><atom:modified>Mon, 18 Jul 2022 00:00:00 +0000</atom:modified><guid>https://www.chenshaowen.com/en/blog/hijack-docker-io-req-to-private-repository.html</guid><description>1. Self-signing a *.docker.io Domain Certificate 1.1 Creating a CA Certificate Generate the CA certificate private key 1 openssl genrsa -out ca.key 4096 Generate the CA certificate 1 2 3 4 openssl req -x509 -new -nodes -sha512 -days 3650 \ -subj &amp;#34;/C=CN/ST=Beijing/L=Beijing/O=example/OU=Personal/CN=chenshaowen.com&amp;#34; \ -key ca.key \ -out ca.crt 1.2 Creating a *.</description><dc:creator>微信公众号</dc:creator><category>Jenkins</category><category>Kubernetes</category><category>Docker</category><category>Images</category><category>Operations</category><category>Security</category></item><item><title>An Image Management and Distribution Scheme Based on Harbor and Registry</title><link>https://www.chenshaowen.com/en/blog/a-image-management-and-distribution-case-based-on-harbor-and-registry.html</link><pubDate>Sat, 16 Jul 2022 00:00:00 +0000</pubDate><atom:modified>Sat, 16 Jul 2022 00:00:00 +0000</atom:modified><guid>https://www.chenshaowen.com/en/blog/a-image-management-and-distribution-case-based-on-harbor-and-registry.html</guid><description>1. The Challenge of a Cross-Region Harbor If all you need is to store image data in a simple way, Registry is an excellent choice as an image repository. Registry not only supports multiple storage backends, but can also be configured with HTTPS certificates and access credentials. Worth noting: Harbor</description><dc:creator>微信公众号</dc:creator><category>Harbor</category><category>Registry</category><category>Images</category><category>Distribution</category><category>Kubernetes</category><category>Operations</category><category>Learning</category><category>Multi-Region</category><category>Acceleration</category><category>CICD</category></item><item><title>Deploying the Elasticsearch Stack on a Kubernetes Cluster</title><link>https://www.chenshaowen.com/en/blog/how-to-deploy-the-elasticsearch-stack-on-kubernetes.html</link><pubDate>Wed, 06 Jul 2022 00:00:00 +0000</pubDate><atom:modified>Wed, 06 Jul 2022 00:00:00 +0000</atom:modified><guid>https://www.chenshaowen.com/en/blog/how-to-deploy-the-elasticsearch-stack-on-kubernetes.html</guid><description>If you use Logstash to centrally receive the log input from Filebeat, it easily creates a single point of bottleneck; if you use Kafka to receive the log input from Filebeat, the timeliness of the logs is not guaranteed. Here we output the logs collected by Filebeat directly to Elasticsearch.</description><dc:creator>微信公众号</dc:creator><category>Kubernetes</category><category>Elasticsearch</category><category>Logging</category><category>Operations</category><category>ELK</category><category>Monitoring</category></item><item><title>How to Run a Pod on a Specified Node</title><link>https://www.chenshaowen.com/en/blog/how-to-set-up-pod-to-run-to-a-specified-node.html</link><pubDate>Mon, 27 Jun 2022 00:00:00 +0000</pubDate><atom:modified>Mon, 27 Jun 2022 00:00:00 +0000</atom:modified><guid>https://www.chenshaowen.com/en/blog/how-to-set-up-pod-to-run-to-a-specified-node.html</guid><description>1. Specify a Node via nodeSelector When Creating a Workload Add a label to the node 1 kubectl label node node2 project=A Create the workload with the specified nodeSelector 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 cat &amp;lt;&amp;lt;EOF | kubectl apply -f - apiVersion: apps/v1 kind: Deployment metadata: name: nginx-nodeselector spec: replicas: 1 selector: matchLabels: app: nginx-nodeselector template: metadata: labels: app: nginx-nodeselector spec: nodeSelector: project: A containers: - name: nginx image: nginx EOF Check the workload 1 2 3 4 kubectl get pod -o wide NAME READY STATUS RESTARTS AGE IP NODE NOMINATED NODE READINESS GATES nginx-nodeselector-7bb75b7687-7r5xk 1/1 Running 0 19s 10.</description><dc:creator>微信公众号</dc:creator><category>Pod</category><category>Kubernetes</category><category>Scheduling</category><category>Operations</category><category>nodeSelector</category><category>Learning</category></item><item><title>descheduler Secondary Scheduling Makes Kubernetes Load More Balanced</title><link>https://www.chenshaowen.com/en/blog/descheduler-makes-kubernetes-load-more-balanced.html</link><pubDate>Sat, 11 Jun 2022 00:00:00 +0000</pubDate><atom:modified>Sat, 11 Jun 2022 00:00:00 +0000</atom:modified><guid>https://www.chenshaowen.com/en/blog/descheduler-makes-kubernetes-load-more-balanced.html</guid><description>1. Why Secondary Scheduling Is Needed The job of the Kubernetes scheduler is to bind a Pod to a single best node. To do this, the scheduler runs through a series of filtering and scoring steps.
Kubernetes scheduling is based on Requests, but the actual usage of each Pod changes dynamically.</description><dc:creator>微信公众号</dc:creator><category>Kubernetes</category><category>descheduler</category><category>Scheduling</category><category>Operations</category></item><item><title>How to Inspect Tekton Pipeline Metrics</title><link>https://www.chenshaowen.com/en/blog/how-to-insight-the-pipeline-of-tekton.html</link><pubDate>Tue, 07 Jun 2022 00:00:00 +0000</pubDate><atom:modified>Tue, 07 Jun 2022 00:00:00 +0000</atom:modified><guid>https://www.chenshaowen.com/en/blog/how-to-insight-the-pipeline-of-tekton.html</guid><description>1. Scraping Tekton Metrics Add a ConfigMap configuration file 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 cat &amp;lt;&amp;lt;EOF | kubectl apply -f - apiVersion: v1 kind: ConfigMap metadata: name: config-observability namespace: tekton-pipelines labels: app.kubernetes.io/instance: default app.kubernetes.io/part-of: tekton-pipelines data: metrics.backend-destination: prometheus metrics.taskrun.level: &amp;#34;task&amp;#34; metrics.</description><dc:creator>微信公众号</dc:creator><category>Kubernetes</category><category>Tekton</category><category>Monitoring</category><category>Metrics</category><category>CICD</category><category>Operations</category></item><item><title>How to collect labels and annotations of Kubernetes objects</title><link>https://www.chenshaowen.com/en/blog/how-to-collect-labels-and-annotations-of-kubernetes-objects.html</link><pubDate>Thu, 02 Jun 2022 01:00:00 +0000</pubDate><atom:modified>Thu, 02 Jun 2022 01:00:00 +0000</atom:modified><guid>https://www.chenshaowen.com/en/blog/how-to-collect-labels-and-annotations-of-kubernetes-objects.html</guid><description>1. Why kube-status-metrics is needed Kubernetes monitoring mainly focuses on two kinds of metrics:
Basic performance metrics CPU, memory, disk, network, and so on. These can be collected by deploying node-exporter as a DaemonSet and having Prometheus scrape the relevant metrics.
Resource object metrics The replica count of a Deployment, the running state of a Pod, and so on.</description><dc:creator>微信公众号</dc:creator><category>Kubernetes</category><category>Monitoring</category><category>Metrics</category><category>Collection</category><category>Prometheus</category><category>Operations</category><category>Learning</category><category>Observability</category><category>kube-status-metrics</category></item><item><title>A Global Image Distribution Network</title><link>https://www.chenshaowen.com/en/blog/a-global-images-distribution-network.html</link><pubDate>Sun, 27 Mar 2022 14:00:00 +0000</pubDate><atom:modified>Sun, 27 Mar 2022 14:00:00 +0000</atom:modified><guid>https://www.chenshaowen.com/en/blog/a-global-images-distribution-network.html</guid><description>1. Global Network Planning Many global, multi-region infrastructures do not put much thought into network planning at the outset. Once the business grows complex enough, they are forced into network adjustments and optimization. Yet any major network change has a huge impact on the business. In the end you are stuck in a dilemma, able to do nothing but invest more people, carry the baggage of history, and walk along the edge of a cliff again and again.</description><dc:creator>微信公众号</dc:creator><category>Images</category><category>Harbor</category><category>Network</category><category>Kubernetes</category><category>Operations</category><category>Distribution</category><category>Multi-Region</category><category>Learning</category></item><item><title>Managing Data from Multiple Prometheus Instances Centrally with Thanos</title><link>https://www.chenshaowen.com/en/blog/manage-multiple-prometheus-using-thanos.html</link><pubDate>Tue, 22 Mar 2022 00:00:00 +0000</pubDate><atom:modified>Tue, 22 Mar 2022 00:00:00 +0000</atom:modified><guid>https://www.chenshaowen.com/en/blog/manage-multiple-prometheus-using-thanos.html</guid><description>1. Layering of Monitoring As shown above, when building a monitoring system, two strategies are used: Layered monitoring. The benefit of separating IaaS, MySQL middleware, and App layer monitoring is that the systems have high availability and fault tolerance between them. When App layer monitoring stops working, IaaS layer monitoring</description><dc:creator>微信公众号</dc:creator><category>Thanos</category><category>Prometheus</category><category>Monitoring</category><category>Storage</category><category>Kubernetes</category><category>Operations</category></item><item><title>Common Commands for Cleaning Up Kubernetes Cluster Resources</title><link>https://www.chenshaowen.com/en/blog/common-commands-for-cleaning-up-kubernetes-cluster-resources.html</link><pubDate>Wed, 08 Dec 2021 00:00:00 +0000</pubDate><atom:modified>Wed, 08 Dec 2021 00:00:00 +0000</atom:modified><guid>https://www.chenshaowen.com/en/blog/common-commands-for-cleaning-up-kubernetes-cluster-resources.html</guid><description>Clusters that run for a long time often face various kinds of resource exhaustion. On top of that, when disk space runs low, Kubelet will proactively clean up images on its own, adding another source of uncertainty. This article provides some command snippets for cleanup work.
1. Cleaning Up Basic Kubernetes Objects Clean up Pods in Evicted state 1 sudo kubectl get pods --all-namespaces -o wide | grep Evicted | awk &amp;#39;{print $1,$2}&amp;#39; | sudo xargs -L1 kubectl delete pod -n Clean up Pods in Error state 1 sudo kubectl get pods --all-namespaces -o wide | grep Error | awk &amp;#39;{print $1,$2}&amp;#39; | sudo xargs -L1 kubectl delete pod -n Clean up Pods in Completed state 1 sudo kubectl get pods --all-namespaces -o wide | grep Completed | awk &amp;#39;{print $1,$2}&amp;#39; | sudo xargs -L1 kubectl delete pod -n Clean up unused PVs 1 sudo kubectl describe -A pvc | grep -E &amp;#34;^Name:.</description><dc:creator>微信公众号</dc:creator><category>Kubernetes</category><category>Practice</category><category>Cleanup</category><category>Operations</category><category>Learning</category><category>kubectl</category><category>Troubleshooting</category><category>Resource Management</category></item><item><title>Multi-Cluster Applications Under Kubevela</title><link>https://www.chenshaowen.com/en/blog/multi-cluster-applications-under-kubevela.html</link><pubDate>Fri, 17 Sep 2021 00:00:00 +0000</pubDate><atom:modified>Fri, 17 Sep 2021 00:00:00 +0000</atom:modified><guid>https://www.chenshaowen.com/en/blog/multi-cluster-applications-under-kubevela.html</guid><description>Kubevela is currently at version 1.1. We usually consider 1.x releases to be relatively stable and safe to try in production. Through continuous tracking and learning, I have also come to appreciate some of the things Kubevela does well. This is a summary document.
1. What Problem Kubevela Solves Aimed at platform developers Several roles need to be distinguished: development, operations, and operations development.</description><dc:creator>微信公众号</dc:creator><category>Kubevela</category><category>Kubernetes</category><category>Application</category><category>Operations</category><category>Multi-Cluster</category><category>OAM</category><category>Learning</category><category>Cloud Native</category></item><item><title>Prometheus and Grafana: Building Kubernetes Monitoring</title><link>https://www.chenshaowen.com/en/blog/the-monitor-of-kubernetes-using-prometheus-grafana.html</link><pubDate>Fri, 03 Sep 2021 00:00:00 +0000</pubDate><atom:modified>Fri, 03 Sep 2021 00:00:00 +0000</atom:modified><guid>https://www.chenshaowen.com/en/blog/the-monitor-of-kubernetes-using-prometheus-grafana.html</guid><description>The Prometheus community moves so fast that some of the documents I wrote earlier have become outdated. I&amp;rsquo;ve recently started paying attention to observability again, filling in some of the gaps in my operations knowledge.
1. Terminology Grafana A visualization tool that provides a variety of visualization panels and supports many data sources, including Prometheus, OpenTSDB, MySQL, and others.</description><dc:creator>微信公众号</dc:creator><category>Prometheus</category><category>Grafana</category><category>Kubernetes</category><category>Monitoring</category><category>Operations</category><category>Observability</category></item><item><title>Gateway Service on Kubernetes: APISIX</title><link>https://www.chenshaowen.com/en/blog/a-gateway-under-kubernetes-named-apisix.html</link><pubDate>Wed, 01 Sep 2021 00:00:00 +0000</pubDate><atom:modified>Wed, 01 Sep 2021 00:00:00 +0000</atom:modified><guid>https://www.chenshaowen.com/en/blog/a-gateway-under-kubernetes-named-apisix.html</guid><description>1. Comparing a Few Common Gateways Nginx, a reverse proxy with a modular design, written in C OpenResty, a web development platform built around Nginx that can parse and execute Lua scripts Kong, an application on top of OpenResty, an API gateway with API management and request proxying, using PostgreSQL for storage APISIX, which replaces Kong&amp;rsquo;s PostgreSQL with Etcd and is built on Nginx&amp;rsquo;s core libraries APISIX&amp;rsquo;s advantage lies in the API management and extensibility it provides, so the gateway no longer merely forwards traffic to services but can be configured and customized.</description><dc:creator>微信公众号</dc:creator><category>Kubernetes</category><category>APISIX</category><category>Microservices</category><category>Gateway</category><category>Operations</category><category>Proxy</category><category>Learning</category><category>Cloud Native</category></item><item><title>A CICD Platform Based on Tekton</title><link>https://www.chenshaowen.com/en/blog/a-cicd-system-based-on-tekton.html</link><pubDate>Wed, 25 Aug 2021 00:00:00 +0000</pubDate><atom:modified>Wed, 25 Aug 2021 00:00:00 +0000</atom:modified><guid>https://www.chenshaowen.com/en/blog/a-cicd-system-based-on-tekton.html</guid><description>1. Background 1.1 Problems with the Current Use of Jenkins The orchestration engine is unstable Jenkins is an orchestration engine written in Java, and it stops the world (STW) during a full GC. Under large-scale builds, STW can prevent Jenkins from handling new requests.
Heavy builds stall Jenkins stores data in disk files; every pipeline and every build occupies a file directory, producing a huge number of files.</description><dc:creator>微信公众号</dc:creator><category>CICD</category><category>DevOps</category><category>Tekton</category><category>Kubernetes</category><category>Operations</category><category>Pipeline</category><category>Learning</category></item><item><title>Tekton Pipelines Across Multiple Clusters</title><link>https://www.chenshaowen.com/en/blog/using-kubefed-to-distribute-tekton-resource-cross-cluster.html</link><pubDate>Sat, 26 Jun 2021 00:00:00 +0000</pubDate><atom:modified>Sat, 26 Jun 2021 00:00:00 +0000</atom:modified><guid>https://www.chenshaowen.com/en/blog/using-kubefed-to-distribute-tekton-resource-cross-cluster.html</guid><description>1. The Advantages of Multi-Cluster Tekton Builds Thanks to Kubernetes, Tekton already has good elasticity and can support large-scale builds. At the same time, developing Tasks mainly uses Yaml and Shell, which widens the range of scenarios Tekton can adapt to.
The figure above is a sketch of Tekton across multiple clusters.</description><dc:creator>微信公众号</dc:creator><category>Tekton</category><category>KubeFed</category><category>Kubernetes</category><category>Multi-Cluster</category><category>CICD</category><category>Operations</category><category>Learning</category><category>Pipeline</category><category>Build</category><category>Distributed Systems</category></item><item><title>How to Implement an Approval Feature in Tekton</title><link>https://www.chenshaowen.com/en/blog/how-to-implement-approval-function-in-tekton.html</link><pubDate>Thu, 24 Jun 2021 00:00:00 +0000</pubDate><atom:modified>Thu, 24 Jun 2021 00:00:00 +0000</atom:modified><guid>https://www.chenshaowen.com/en/blog/how-to-implement-approval-function-in-tekton.html</guid><description>1. Basic Features of a CICD Platform A common CICD engine is not suitable to hand directly to the business side. The main reasons are the high learning cost for users, the lack of necessary authentication, and the difficulty of maintenance and upgrades.
We usually build on top of a process engine, adapting it to the business to improve usability and encapsulating it for specific scenarios to reduce complexity.</description><dc:creator>微信公众号</dc:creator><category>Tekton</category><category>Kubernetes</category><category>CICD</category><category>DevOps</category><category>Operations</category></item><item><title>How to Configure NetworkPolicy for NodePort in Kubernetes</title><link>https://www.chenshaowen.com/en/blog/how-to-configure-networkpolicy-for-nodeport.html</link><pubDate>Wed, 23 Jun 2021 00:00:00 +0000</pubDate><atom:modified>Wed, 23 Jun 2021 00:00:00 +0000</atom:modified><guid>https://www.chenshaowen.com/en/blog/how-to-configure-networkpolicy-for-nodeport.html</guid><description>1. Background As shown above, the business team needs to isolate the services in a namespace, forbidding access from workloads in the bar namespace while allowing users to reach the service through a Load Balancer (LB) via NodePort. It is easy to write a network policy:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 apiVersion: networking.</description><dc:creator>微信公众号</dc:creator><category>NetworkPolicy</category><category>Network</category><category>Kubernetes</category><category>Operations</category><category>Security</category><category>Learning</category><category>NodePort</category><category>Network Isolation</category></item><item><title>Can /var/lib/docker Be Mounted on Remote Storage?</title><link>https://www.chenshaowen.com/en/blog/can-we-mount-var-lib-docker-to-remote-storage.html</link><pubDate>Tue, 22 Jun 2021 00:00:00 +0000</pubDate><atom:modified>Tue, 22 Jun 2021 00:00:00 +0000</atom:modified><guid>https://www.chenshaowen.com/en/blog/can-we-mount-var-lib-docker-to-remote-storage.html</guid><description>No.
1. Background When building a reliable, stable operations system on top of Kubernetes, destroying and creating virtual machines (VMs) is the norm. VMs provide compute and memory resources, while external storage is exposed to PVCs in the cluster through a StorageClass.
Against this backdrop, how to initialize a VM quickly becomes a new challenge.</description><dc:creator>微信公众号</dc:creator><category>Docker</category><category>Containers</category><category>Storage</category><category>Kubernetes</category><category>Can We</category></item><item><title>Kubernetes Network Isolation (with a Dozen-Plus Use Cases)</title><link>https://www.chenshaowen.com/en/blog/network-policy-of-kubernetes.html</link><pubDate>Tue, 18 May 2021 00:00:00 +0000</pubDate><atom:modified>Tue, 18 May 2021 00:00:00 +0000</atom:modified><guid>https://www.chenshaowen.com/en/blog/network-policy-of-kubernetes.html</guid><description>1. Network Isolation in Kubernetes Kubernetes introduced Network Policy in 1.3. It defines entities through ipBlock, podSelector, and namespaceSelector, and controls their From (Ingress) and To (Egress) traffic behavior.
But Kubernetes only defines the network policy; the actual implementation depends on the network plugin. Today, network plugins such as Calico, Cilium, and Weave Net all support network isolation.</description><dc:creator>微信公众号</dc:creator><category>Kubernetes</category><category>Network Isolation</category><category>NetworkPolicy</category><category>Operations</category></item><item><title>How Tekton Connects to Physical Machines for Builds</title><link>https://www.chenshaowen.com/en/blog/how-to-add-physical-machines-to-tekton.html</link><pubDate>Wed, 28 Apr 2021 00:00:00 +0000</pubDate><atom:modified>Wed, 28 Apr 2021 00:00:00 +0000</atom:modified><guid>https://www.chenshaowen.com/en/blog/how-to-add-physical-machines-to-tekton.html</guid><description>1. Why Physical Build Machines Are Needed In the article How to Add a Remote macOS Physical Machine for Jenkins Pipeline Builds, I described how to add a physical build machine in Jenkins. This was not a requirement I made up on a whim — at the time, real ToB commercial customers were actually asking for a solution.</description><dc:creator>微信公众号</dc:creator><category>Tekton</category><category>Cloud Native</category><category>Kubernetes</category><category>CICD</category><category>DevOps</category><category>Operations</category></item><item><title>Distributing Files and Running Scripts on VM Nodes in Kubernetes</title><link>https://www.chenshaowen.com/en/blog/how-to-distribute-files-and-scripts-to-vm-under-kubernetes.html</link><pubDate>Sat, 24 Apr 2021 00:00:00 +0000</pubDate><atom:modified>Sat, 24 Apr 2021 00:00:00 +0000</atom:modified><guid>https://www.chenshaowen.com/en/blog/how-to-distribute-files-and-scripts-to-vm-under-kubernetes.html</guid><description>1. What This Article Mainly Discusses Never build a high tower on shifting sand. Business growth and the evolution of business forms both need solid, powerful IT systems to support them. Business content is transparent to the market, but IT systems cannot be built to perfection overnight. In the future, competition between companies will mainly come from competition between their IT systems, and the ability to respond quickly to business requirements will be the key to winning.</description><dc:creator>微信公众号</dc:creator><category>Kubernetes</category><category>Docker</category><category>PaaS</category><category>Operations</category><category>Configuration Management</category><category>Virtual Machines</category><category>Learning</category><category>Cloud Native</category></item><item><title>How to Build the istio Project on CentOS 8</title><link>https://www.chenshaowen.com/en/blog/how-to-build-istio-under-centos.html</link><pubDate>Thu, 08 Apr 2021 00:00:00 +0000</pubDate><atom:modified>Thu, 08 Apr 2021 00:00:00 +0000</atom:modified><guid>https://www.chenshaowen.com/en/blog/how-to-build-istio-under-centos.html</guid><description>This article mainly describes how to build the https://github.com/istio/istio project on CentOS 8.2 using local tools. Another approach is to use the BUILD_WITH_CONTAINER parameter to build inside a container, which depends only on make and docker.
1. Install and Upgrade Ruby &amp;gt;= 2.6 Install Ruby 1 yum install -y ruby Check the Ruby version 1 2 3 ruby -v ruby 2.</description><dc:creator>微信公众号</dc:creator><category>CentOS</category><category>Istio</category><category>Kubernetes</category><category>Operations</category><category>Learning</category><category>Service Mesh</category><category>Compilation</category><category>Open Source</category></item><item><title>The Road to Open Source for a ToB Startup - KubeSphere</title><link>https://www.chenshaowen.com/en/blog/the-road-to-open-source-for-tob.html</link><pubDate>Tue, 30 Mar 2021 00:00:00 +0000</pubDate><atom:modified>Tue, 30 Mar 2021 00:00:00 +0000</atom:modified><guid>https://www.chenshaowen.com/en/blog/the-road-to-open-source-for-tob.html</guid><description>1. An Open-Source-Centric Business Model One of the charms of open source is its inclusiveness. It accepts people with all kinds of intentions — the engineer obsessed with technology, the merchant with ulterior motives, the volunteer passionate about public welfare, even the casual bystander — all of them can collide and mingle here, forming a force.</description><dc:creator>微信公众号</dc:creator><category>Open Source</category><category>ToB</category><category>Thoughts</category><category>KubeSphere</category><category>Kubernetes</category></item><item><title>Jenkins Services on Kubernetes Can Drop Docker Now</title><link>https://www.chenshaowen.com/en/blog/using-podman-to-build-images-under-kubernetes-and-jenkins.html</link><pubDate>Thu, 25 Feb 2021 00:00:00 +0000</pubDate><atom:modified>Thu, 25 Feb 2021 00:00:00 +0000</atom:modified><guid>https://www.chenshaowen.com/en/blog/using-podman-to-build-images-under-kubernetes-and-jenkins.html</guid><description>In principle, Jenkins can use Podman to build images in any Kubernetes cluster; this article uses Containerd as the example.
1. Dropping Docker Brings New Challenges to CICD In CICD scenarios, we often need to build and push images within a pipeline.
In an earlier document, Creating Jenkins Slaves Dynamically on Kubernetes, I described how mounting the /var/run/docker.</description><dc:creator>微信公众号</dc:creator><category>Jenkins</category><category>DevOps</category><category>CICD</category><category>Docker</category><category>Kubernetes</category><category>Podman</category></item><item><title>DevOps Toolchain: Argo CD</title><link>https://www.chenshaowen.com/en/blog/argocd-of-devops-tool-chain.html</link><pubDate>Thu, 04 Feb 2021 00:00:00 +0000</pubDate><atom:modified>Thu, 04 Feb 2021 00:00:00 +0000</atom:modified><guid>https://www.chenshaowen.com/en/blog/argocd-of-devops-tool-chain.html</guid><description>1. What Problem Argo CD Solves 1.1 Starting from GitOps GitOps originated from a blog post published by Weaveworks in 2017: GitOps - Operations by Pull Request. In it, Alexis introduced a deployment approach that treats Git as the single source of truth.
In GitOps practice, we need to define software infrastructure in a Git repository for management.</description><dc:creator>微信公众号</dc:creator><category>DevOps</category><category>ArgoCD</category><category>Kubernetes</category><category>CICD</category><category>GitOps</category><category>Operations</category><category>Learning</category><category>Deployment</category><category>Best Practices</category></item><item><title>Run `rm -rf /` Under Kubernetes and You Can Just Run Away</title><link>https://www.chenshaowen.com/en/blog/attack-vectors-under-kubernetes.html</link><pubDate>Fri, 22 Jan 2021 00:00:00 +0000</pubDate><atom:modified>Fri, 22 Jan 2021 00:00:00 +0000</atom:modified><guid>https://www.chenshaowen.com/en/blog/attack-vectors-under-kubernetes.html</guid><description>This document is mainly meant to demonstrate the dangers of Docker privileged mode, so please proceed with caution. Users without CLI access can copy the example YAML and directly create cluster workloads such as Pod, Job, and DaemonSet to carry out the operations.
1. Directly Deleting All Resources If you can log in to the machine, pack your things, and run the command:</description><dc:creator>微信公众号</dc:creator><category>Kubernetes</category><category>Security</category><category>Attack Vectors</category><category>Operations</category><category>Docker</category><category>Troubleshooting</category></item><item><title>How to Debug a Container on the Host and Operate the Host from Inside a Container</title><link>https://www.chenshaowen.com/en/blog/operate-host-in-container-and-debug-container-on-host.html</link><pubDate>Mon, 11 Jan 2021 00:00:00 +0000</pubDate><atom:modified>Mon, 11 Jan 2021 00:00:00 +0000</atom:modified><guid>https://www.chenshaowen.com/en/blog/operate-host-in-container-and-debug-container-on-host.html</guid><description>1. A Strange Requirement My boss had a strange requirement: use a single kubeconfig file to fetch all kinds of host status information, such as the process list and process states.
My first reaction was that he must not understand containers — how could anyone use them that way, and if you were going to use them that way, why use containers at all?</description><dc:creator>微信公众号</dc:creator><category>Containers</category><category>Security</category><category>Kubernetes</category><category>Docker</category><category>Operations</category></item><item><title>Tekton Concepts - A Big Game of Chess</title><link>https://www.chenshaowen.com/en/blog/the-concept-of-tekton-a-big-game.html</link><pubDate>Sat, 12 Dec 2020 00:00:00 +0000</pubDate><atom:modified>Sat, 12 Dec 2020 00:00:00 +0000</atom:modified><guid>https://www.chenshaowen.com/en/blog/the-concept-of-tekton-a-big-game.html</guid><description>1. On the Aesthetics of CICD Tools In the document A Software Product Is the Output of a Team&amp;rsquo;s Capability, I mentioned that a software product is the delivery vehicle for a solution, and that its quality depends on the team&amp;rsquo;s understanding of the core problem. Only with a deep understanding of the domain can the delivered product have a chance of being good.</description><dc:creator>微信公众号</dc:creator><category>DevOps</category><category>Tekton</category><category>Kubernetes</category><category>CICD</category><category>Thoughts</category></item><item><title>Daemon-less Image Build Tool: Kaniko</title><link>https://www.chenshaowen.com/en/blog/the-daemon-less-tools-of-kaniko.html</link><pubDate>Fri, 11 Dec 2020 08:00:00 +0000</pubDate><atom:modified>Fri, 11 Dec 2020 08:00:00 +0000</atom:modified><guid>https://www.chenshaowen.com/en/blog/the-daemon-less-tools-of-kaniko.html</guid><description>1. daemon-less Image Build Tools 1.1 What Is a daemon-less Image Build Tool In a CICD pipeline, image builds come up often, and the conventional approach is to build with Docker in Docker or Docker out of Docker. For details, see: How to Use Docker in Docker
In fact, to avoid monopolies and advance the industry, a unified OCI image format specification based on the Docker image format was defined long ago.</description><dc:creator>微信公众号</dc:creator><category>Kaniko</category><category>DevOps</category><category>Images</category><category>CICD</category><category>Kubernetes</category><category>Operations</category></item><item><title>How to Use Docker in Docker</title><link>https://www.chenshaowen.com/en/blog/how-to-use-docker-in-docker.html</link><pubDate>Sat, 21 Nov 2020 00:00:00 +0000</pubDate><atom:modified>Sat, 21 Nov 2020 00:00:00 +0000</atom:modified><guid>https://www.chenshaowen.com/en/blog/how-to-use-docker-in-docker.html</guid><description>1. Typical Use Cases In CI, there is usually a CI Engine responsible for parsing the pipeline and controlling the whole build process, while the actual build is delegated to an Agent. Jenkins and GitLab both work this way.
As shown below, there are many kinds of Agents that connect to the CI Engine.</description><dc:creator>微信公众号</dc:creator><category>Docker</category><category>Kubernetes</category><category>Containers</category><category>CI</category><category>CICD</category><category>Operations</category><category>Learning</category><category>DinD</category><category>Build</category><category>Jenkins</category></item><item><title>How to Get the Real Client IP in Kubernetes</title><link>https://www.chenshaowen.com/en/blog/how-to-get-the-real-ip-of-client-in-kubernetes.html</link><pubDate>Fri, 20 Nov 2020 17:22:45 +0000</pubDate><atom:modified>Fri, 20 Nov 2020 17:22:45 +0000</atom:modified><guid>https://www.chenshaowen.com/en/blog/how-to-get-the-real-ip-of-client-in-kubernetes.html</guid><description>Kubernetes relies on the kube-proxy component to implement Service communication and load balancing. In this process, because SNAT is used to translate the source address, a service in a Pod cannot obtain the real client IP address. This article mainly answers the question of how a workload in a Kubernetes cluster can obtain the real IP address of the client.</description><dc:creator>微信公众号</dc:creator><category>Kubernetes</category><category>IP</category><category>Network</category><category>Operations</category></item><item><title>KubeSphere DevOps 3.0 Pipeline Operations Guide</title><link>https://www.chenshaowen.com/en/blog/the-operation-guide-of-kubesphere-devops-3-0-pipeline.html</link><pubDate>Wed, 14 Oct 2020 00:00:00 +0000</pubDate><atom:modified>Wed, 14 Oct 2020 00:00:00 +0000</atom:modified><guid>https://www.chenshaowen.com/en/blog/the-operation-guide-of-kubesphere-devops-3-0-pipeline.html</guid><description>This post mainly covers how to operate and maintain a DevOps pipeline, and how to solve some common problems. The problems fall mainly into two categories: one is Kubernetes-related and fairly general in nature; the other is business-related and requires some understanding of the domain before you can solve problems</description><dc:creator>微信公众号</dc:creator><category>KubeSphere</category><category>Kubernetes</category><category>DevOps</category><category>Jenkins</category><category>Operations</category><category>CICD</category></item><item><title>KubeSphere DevOps 3.0 Pipeline Development Guide</title><link>https://www.chenshaowen.com/en/blog/the-development-guide-of-kubesphere-devops-3-0-pipeline.html</link><pubDate>Tue, 13 Oct 2020 00:00:00 +0000</pubDate><atom:modified>Tue, 13 Oct 2020 00:00:00 +0000</atom:modified><guid>https://www.chenshaowen.com/en/blog/the-development-guide-of-kubesphere-devops-3-0-pipeline.html</guid><description>KubeSphere DevOps consists of two parts: S2I and Pipeline. In the community, OpenShift provides an application packaging tool called S2I; for details, see Building Cloud-Native Applications with S2I
. KubeSphere turned it into a service, using a CRD managed by a separate Operator, and its functionality is fairly self-contained. In 3.</description><dc:creator>微信公众号</dc:creator><category>KubeSphere</category><category>Kubernetes</category><category>DevOps</category><category>Jenkins</category><category>Development Environment</category><category>R&amp;D</category><category>Operations</category></item><item><title>How to Integrate Kata into a Kubernetes Cluster</title><link>https://www.chenshaowen.com/en/blog/how-to-integrate-kata-in-kubernetes-cluster.html</link><pubDate>Sun, 30 Aug 2020 00:00:00 +0000</pubDate><atom:modified>Sun, 30 Aug 2020 00:00:00 +0000</atom:modified><guid>https://www.chenshaowen.com/en/blog/how-to-integrate-kata-in-kubernetes-cluster.html</guid><description>1. What Problem Kata Solves Security and isolation are what make Kata Container stand out from Docker Container.
Kata Container comes from the merger of the Intel Clear Containers and Hyper runV projects. Intel Clear Containers used Intel VT-x technology to provide containers through lightweight virtual machines, solving the security problem while delivering excellent performance.</description><dc:creator>微信公众号</dc:creator><category>Kubernetes</category><category>Kata</category><category>Containers</category><category>Security</category><category>Operations</category><category>Virtualization</category></item><item><title>How to Use a Terraform Provider to Deliver Iac-Level Applications</title><link>https://www.chenshaowen.com/en/blog/how-to-use-terraform-to-provide-iac-platform.html</link><pubDate>Sat, 22 Aug 2020 00:00:00 +0000</pubDate><atom:modified>Sat, 22 Aug 2020 00:00:00 +0000</atom:modified><guid>https://www.chenshaowen.com/en/blog/how-to-use-terraform-to-provide-iac-platform.html</guid><description>1. Terraform Vs Kubernetes Infrastructure as Code (Iac) is built on immutable infrastructure: it uses orchestration tools to turn infrastructure into text, so you can manage infrastructure the way you manage code.
In 2018 I was working on SaaS development, deploying on the Kubernetes platform, and that was the year Terraform was very hot.</description><dc:creator>微信公众号</dc:creator><category>Terraform</category><category>Iac</category><category>Kubernetes</category><category>DevOps</category><category>CICD</category><category>R&amp;D</category></item><item><title>Jenkins X Is Not Jenkins, but a Tech Stack</title><link>https://www.chenshaowen.com/en/blog/jenkins-x-is-not-jenkins-but-stack.html</link><pubDate>Sun, 16 Aug 2020 00:00:00 +0000</pubDate><atom:modified>Sun, 16 Aug 2020 00:00:00 +0000</atom:modified><guid>https://www.chenshaowen.com/en/blog/jenkins-x-is-not-jenkins-but-stack.html</guid><description>1. Introduction to Jenkins X Relying on its massive plugin ecosystem, Jenkins currently holds most of the enterprise CICD engine market share. But in the cloud native era, Jenkins has also exposed many problems: a single point of service, disk storage, memory usage, and so on.
Around Kubernetes, Jenkins X offers a DevOps approach better suited to the cloud native era.</description><dc:creator>微信公众号</dc:creator><category>Tech Stack</category><category>Jenkins</category><category>Jenkins-X</category><category>Kubernetes</category><category>DevOps</category><category>CICD</category><category>Operations</category></item><item><title>Etcd and Etcdctl in Practice</title><link>https://www.chenshaowen.com/en/blog/the-use-of-etcd-and-etcdctl.html</link><pubDate>Tue, 11 Aug 2020 00:00:00 +0000</pubDate><atom:modified>Tue, 11 Aug 2020 00:00:00 +0000</atom:modified><guid>https://www.chenshaowen.com/en/blog/the-use-of-etcd-and-etcdctl.html</guid><description>1. Basic Introduction to Etcd Etcd is a distributed Key/Value storage system. Through distributed locks, leader election, and write barriers it achieves distributed coordination, offering highly available, persistent data storage and retrieval services. How it works Every Etcd node stores a complete copy of the data, and at any moment</description><dc:creator>微信公众号</dc:creator><category>Etcd</category><category>Etcdctl</category><category>Kubernetes</category><category>Operations</category><category>Learning</category><category>Distributed Storage</category><category>Configuration</category><category>Cluster</category></item><item><title>Stress Test: Dynamically Creating Jenkins Agents on Kubernetes</title><link>https://www.chenshaowen.com/en/blog/the-stress-test-about-kubernetes-dynamically-creates-jenkins-agent.html</link><pubDate>Sun, 02 Aug 2020 00:00:00 +0000</pubDate><atom:modified>Sun, 02 Aug 2020 00:00:00 +0000</atom:modified><guid>https://www.chenshaowen.com/en/blog/the-stress-test-about-kubernetes-dynamically-creates-jenkins-agent.html</guid><description>In the previous document, we took advantage of the elasticity Kubernetes provides to dynamically create Jenkins Slaves on Kubernetes. This document is mainly a stress test of Jenkins under large-scale builds.
1. Cluster Configuration 1.1 Kubernetes Version The version used here is v1.16.7
1 2 3 4 kubectl version Client Version: version.</description><dc:creator>微信公众号</dc:creator><category>Jenkins</category><category>Kubernetes</category><category>DevOps</category><category>CICD</category><category>Testing</category><category>Operations</category></item><item><title>Adding a Windows Node to Kubernetes</title><link>https://www.chenshaowen.com/en/blog/add-windows-node-for-k8s.html</link><pubDate>Sat, 13 Jun 2020 00:00:00 +0000</pubDate><atom:modified>Sat, 13 Jun 2020 00:00:00 +0000</atom:modified><guid>https://www.chenshaowen.com/en/blog/add-windows-node-for-k8s.html</guid><description>Here a Windows node is used mainly as a Worker, while the Master control plane stays on Linux.
1. System Configuration 1.1 Kubernetes Control Plane Since version 1.14, Kubernetes has added production-grade support for Windows nodes. Because Microsoft&amp;rsquo;s official documentation mainly covers installing the flannel network plugin, it is recommended here that Kubernetes also use the flannel plugin.</description><dc:creator>微信公众号</dc:creator><category>Kubernetes</category><category>Windows</category><category>Nodes</category><category>Installation</category><category>Operations</category></item><item><title>Affinity in the Kubernetes Scheduler</title><link>https://www.chenshaowen.com/en/blog/affinity-of-kubernetes-scheduler.html</link><pubDate>Sat, 30 May 2020 00:00:00 +0000</pubDate><atom:modified>Sat, 30 May 2020 00:00:00 +0000</atom:modified><guid>https://www.chenshaowen.com/en/blog/affinity-of-kubernetes-scheduler.html</guid><description>1. The Scheduler in Kubernetes kube-scheduler is the component in Kubernetes that decides which Node a Pending Pod runs on; it is called the scheduler. Kubernetes ships with a large number of built-in scheduling policies and also provides some advanced scheduling policies (nodeAffinity, podAffinity, and so on) for users, which</description><dc:creator>微信公众号</dc:creator><category>Kubernetes</category><category>Scheduling</category><category>Affinity</category><category>Learning</category><category>Operations</category></item><item><title>The DNS Service in Kubernetes</title><link>https://www.chenshaowen.com/en/blog/dns-server-in-kubernetes.html</link><pubDate>Fri, 24 Apr 2020 00:00:00 +0000</pubDate><atom:modified>Fri, 24 Apr 2020 00:00:00 +0000</atom:modified><guid>https://www.chenshaowen.com/en/blog/dns-server-in-kubernetes.html</guid><description>1. About DNS 1.1 What the DNS Service Is For DNS provides a mapping service from domain names to IPs. For example, you type https://www.chenshaowen.com into a browser to open a page, but the data link communicates over IP and cannot recognize www.chenshaowen.com. This is where a DNS lookup comes in: the input is www.</description><dc:creator>微信公众号</dc:creator><category>Kubernetes</category><category>DNS</category><category>Domain Names</category><category>Network</category><category>Service Discovery</category></item><item><title>Harbor Using a Self-Signed Certificate for HTTPS Access</title><link>https://www.chenshaowen.com/en/blog/support-https-access-harbor-using-self-signed-cert.html</link><pubDate>Sat, 18 Apr 2020 00:00:00 +0000</pubDate><atom:modified>Sat, 18 Apr 2020 00:00:00 +0000</atom:modified><guid>https://www.chenshaowen.com/en/blog/support-https-access-harbor-using-self-signed-cert.html</guid><description>In an earlier post, Installing Harbor with Helm, I described in detail how to install Ingress and Harbor and finally push an image successfully. There the domain was publicly reachable and the certificate was issued by a certificate authority. In an intranet environment, however, we need to use an internal</description><dc:creator>微信公众号</dc:creator><category>Harbor</category><category>Kubernetes</category><category>Https</category><category>Images</category><category>Certificates</category><category>Operations</category></item><item><title>DevOps Toolchain: Prow</title><link>https://www.chenshaowen.com/en/blog/prow-of-devops-tool-chain.html</link><pubDate>Fri, 17 Apr 2020 13:17:44 +0000</pubDate><atom:modified>Fri, 17 Apr 2020 13:17:44 +0000</atom:modified><guid>https://www.chenshaowen.com/en/blog/prow-of-devops-tool-chain.html</guid><description>1. About Prow In the GitHub repositories of well-known projects such as Kubernetes and Istio, we often see an xxx-bot user adding labels to issues and merging PRs. That bot account is driven by Prow.
Prow is a project of the Kubernetes Testing Special Interest Group and is currently part of kubernetes/test-infra.</description><dc:creator>微信公众号</dc:creator><category>DevOps</category><category>Prow</category><category>Kubernetes</category><category>CICD</category></item><item><title>Backing Up a Kubernetes Cluster with Velero</title><link>https://www.chenshaowen.com/en/blog/backup-kubernetes-cluster-using-velero.html</link><pubDate>Wed, 25 Dec 2019 00:00:00 +0000</pubDate><atom:modified>Wed, 25 Dec 2019 00:00:00 +0000</atom:modified><guid>https://www.chenshaowen.com/en/blog/backup-kubernetes-cluster-using-velero.html</guid><description>1. Introduction to Velero Velero is an open-source Kubernetes cluster backup and migration tool from the heptio team (acquired by VMWare).
Velero stores cluster resources in object storage. It supports AWS, Azure, and GCP object storage by default, is compatible with the S3 protocol, and can be extended to other platforms such as Aliyun OSS through plugins.</description><dc:creator>微信公众号</dc:creator><category>Kubernetes</category><category>Velero</category><category>Backup</category><category>Operations</category><category>Learning</category><category>Disaster Recovery</category><category>Migration</category><category>Cluster</category></item><item><title>Building an Automated Test System with Kubernetes and Jenkins</title><link>https://www.chenshaowen.com/en/blog/build-an-automated-test-system-using-kubernetes-and-jenkins.html</link><pubDate>Thu, 12 Dec 2019 00:00:00 +0000</pubDate><atom:modified>Thu, 12 Dec 2019 00:00:00 +0000</atom:modified><guid>https://www.chenshaowen.com/en/blog/build-an-automated-test-system-using-kubernetes-and-jenkins.html</guid><description>1. Test Layering The purpose of testing is to verify expected behavior and uncover latent defects. Testing strengthens confidence that a qualified product can be delivered, and it is what makes agile iteration possible. You could say that testing determines the development pace of a product.
The network model has the seven-layer OSI and the four-layer TCP, while development patterns include MTV, MVC, MVP, MVVM, and so on.</description><dc:creator>微信公众号</dc:creator><category>Testing</category><category>Automation</category><category>Kubernetes</category><category>Jenkins</category><category>DevOps</category><category>CICD</category><category>Operations</category></item><item><title>Dynamically Creating a Jenkins Slave on Kubernetes</title><link>https://www.chenshaowen.com/en/blog/creating-jenkins-slave-dynamically-on-kubernetes.html</link><pubDate>Fri, 06 Dec 2019 00:00:00 +0000</pubDate><atom:modified>Fri, 06 Dec 2019 00:00:00 +0000</atom:modified><guid>https://www.chenshaowen.com/en/blog/creating-jenkins-slave-dynamically-on-kubernetes.html</guid><description>1. Jenkins Working Modes Jenkins has a single-Master, multi-Slave architecture. The Master assigns tasks and manages services. Slaves execute the actual tasks. Even when multiple Masters are deployed, they remain independent of one another and cannot coordinate scheduling. A high-availability Jenkins solution requires an external task distribution framework, such as</description><dc:creator>微信公众号</dc:creator><category>Jenkins</category><category>Kubernetes</category><category>CICD</category><category>DevOps</category><category>Operations</category></item><item><title>Basic Operations for Deployments in Kubernetes</title><link>https://www.chenshaowen.com/en/blog/basic-operation-of-deployment-in-kubernetes.html</link><pubDate>Fri, 27 Sep 2019 00:00:00 +0000</pubDate><atom:modified>Fri, 27 Sep 2019 00:00:00 +0000</atom:modified><guid>https://www.chenshaowen.com/en/blog/basic-operation-of-deployment-in-kubernetes.html</guid><description>A Deployment controls the number and state of Pods by creating ReplicaSets. This post mainly introduces some common Deployment operations.
1. Deployment yaml Format Passing the --dry-run flag means the command is not actually executed, only YAML output is generated:
1 kubectl create deployment nginx --image=nginx --dry-run -o yaml apiVersion: apps/v1 kind: Deployment metadata: creationTimestamp: null labels: app: nginx name: nginx spec: replicas: 1 selector: matchLabels: app: nginx strategy: {} template: metadata: creationTimestamp: null labels: app: nginx spec: containers: - image: nginx name: nginx resources: {} status: {} 2.</description><dc:creator>微信公众号</dc:creator><category>Kubernetes</category><category>Deployment</category><category>Deployment</category><category>Learning</category><category>Operations</category></item><item><title>How to Develop an Operator Using KubeBuilder</title><link>https://www.chenshaowen.com/en/blog/how-to-develop-a-operator-using-kubebuilder.html</link><pubDate>Wed, 25 Sep 2019 00:00:00 +0000</pubDate><atom:modified>Wed, 25 Sep 2019 00:00:00 +0000</atom:modified><guid>https://www.chenshaowen.com/en/blog/how-to-develop-a-operator-using-kubebuilder.html</guid><description>With the Operator approach, Kubernetes functionality can be extended in a friendly way. Operator = CRD + Controller. First you generate the CRD from a yaml definition, then the Controller continuously watches the data in etcd and performs the corresponding actions. There is a lot of tedious and repetitive work involved in developing an Operator.</description><dc:creator>微信公众号</dc:creator><category>Kubernetes</category><category>Go</category><category>Operator</category><category>R&amp;D</category><category>Operations</category><category>CRD</category><category>Learning</category></item><item><title>Image Management Tool -- Harbor</title><link>https://www.chenshaowen.com/en/blog/an-enterprise-class-registry-of-harbor.html</link><pubDate>Thu, 12 Sep 2019 00:00:00 +0000</pubDate><atom:modified>Thu, 12 Sep 2019 00:00:00 +0000</atom:modified><guid>https://www.chenshaowen.com/en/blog/an-enterprise-class-registry-of-harbor.html</guid><description>1. Requirements for Building Harbor Harbor hardware requirements:
CPU, at least 2 cores, 4 cores is better Mem, at least 4 GB, 8 GB is better Disk, at least 40 GB, 160 GB is better Docker version requirements:
17.06.0 or later To build Harbor on Kubernetes, you can refer to the documentation, Building Harbor with Helm.</description><dc:creator>微信公众号</dc:creator><category>Harbor</category><category>Images</category><category>Containers</category><category>Kubernetes</category><category>Operations</category></item><item><title>Using emptyDir, hostPath, and localVolume in Kubernetes</title><link>https://www.chenshaowen.com/en/blog/using-emptydir-hostpath-localvolume-in-kubernetes.html</link><pubDate>Sat, 24 Aug 2019 00:00:00 +0000</pubDate><atom:modified>Sat, 24 Aug 2019 00:00:00 +0000</atom:modified><guid>https://www.chenshaowen.com/en/blog/using-emptydir-hostpath-localvolume-in-kubernetes.html</guid><description>Earlier, in Kubernetes Volumes, we got some understanding of Volumes. This post focuses on practice, learning how to use the three local storage options: emptydir, hostpath, and localvolume.
1. Basic Properties of a PV 1.1 PV Lifecycle PV states:
Available: available, not yet bound by any PVC Bound: already bound to a PVC Released: the PVC was deleted, but the resource has not yet been reclaimed Failed: automatic reclamation failed 1.</description><dc:creator>微信公众号</dc:creator><category>Kubernetes</category><category>Volume</category><category>Storage</category><category>Operations</category><category>PVC</category><category>Learning</category></item><item><title>Kubernetes Cluster Operations in Practice</title><link>https://www.chenshaowen.com/en/blog/kubernetes-cluster-operations-practices.html</link><pubDate>Thu, 22 Aug 2019 00:00:00 +0000</pubDate><atom:modified>Thu, 22 Aug 2019 00:00:00 +0000</atom:modified><guid>https://www.chenshaowen.com/en/blog/kubernetes-cluster-operations-practices.html</guid><description>Compiled from the &amp;ldquo;Development Tips&amp;rdquo; series, gathering the common problems and solutions from day-to-day Kubernetes cluster operations.
1. Configuring Multiple Clusters with Kubectl When doing Kubernetes-related development you usually end up managing several clusters. Kubectl provides multi-cluster context management.
Kubectl&amp;rsquo;s configuration usually lives in $HOME/.kube/config or /etc/kubernetes/admin.conf. Log into the machine, look at the cluster configuration, and edit it using the format below.</description><dc:creator>微信公众号</dc:creator><category>Kubernetes</category><category>Operations</category><category>R&amp;D</category><category>kubectl</category><category>Helm</category></item><item><title>Installing a Kubernetes Cluster with Kubeadm</title><link>https://www.chenshaowen.com/en/blog/using-kubeadm-to-install-the-kubernetes-cluster.html</link><pubDate>Thu, 15 Aug 2019 00:00:00 +0000</pubDate><atom:modified>Thu, 15 Aug 2019 00:00:00 +0000</atom:modified><guid>https://www.chenshaowen.com/en/blog/using-kubeadm-to-install-the-kubernetes-cluster.html</guid><description>1. Cluster Planning Prepare three hosts: one Master and two Nodes. Operating system: CentOS 7 Specs: 2 Core 4 GB Docker version: 18.06.3 Kubernetes version: 1.15.3 If you are using a purchased cloud host, open the following ports: 1 2 3 4 5 6 7 8 9 10 11 12</description><dc:creator>微信公众号</dc:creator><category>Kubernetes</category><category>Kubeadm</category><category>Installation</category><category>Operations</category><category>Cluster</category><category>Learning</category></item><item><title>Kubernetes Complex Stateful Application Management Framework -- Operator</title><link>https://www.chenshaowen.com/en/blog/complex-application-management-framework-operator-for-kubernetes.html</link><pubDate>Thu, 25 Jul 2019 00:00:00 +0000</pubDate><atom:modified>Thu, 25 Jul 2019 00:00:00 +0000</atom:modified><guid>https://www.chenshaowen.com/en/blog/complex-application-management-framework-operator-for-kubernetes.html</guid><description>1. Origins Originally, two CoreOS employees, in order to make deploying etcd clusters easier, bound corresponding logical operations to the create, delete, and update events of the etcdCluster object, using Kubernetes to automate etcd cluster management.
A few months later, at a KubeCon conference, they shared this approach, which they called Operator, and it received a strong response from the community.</description><dc:creator>微信公众号</dc:creator><category>Kubernetes</category><category>Helm</category><category>Practice</category><category>Operator</category><category>Operations</category><category>Stateful Applications</category><category>Learning</category></item><item><title>Kubernetes' Package Manager -- Helm</title><link>https://www.chenshaowen.com/en/blog/package-manager-helm-of-kubernetes.html</link><pubDate>Wed, 24 Jul 2019 00:00:00 +0000</pubDate><atom:modified>Wed, 24 Jul 2019 00:00:00 +0000</atom:modified><guid>https://www.chenshaowen.com/en/blog/package-manager-helm-of-kubernetes.html</guid><description>1. Why Helm Is Needed One important design philosophy in Kubernetes is declarative operation. Users change the system by setting the system&amp;rsquo;s expected state. For example, the current replica count is 2 and it needs to be adjusted to 3. The declarative way is to modify the replica count in</description><dc:creator>微信公众号</dc:creator><category>Kubernetes</category><category>Helm</category><category>Practice</category><category>Operations</category><category>Package Management</category><category>Learning</category><category>Chart</category><category>Deployment</category></item><item><title>A Practical Guide to kubectl</title><link>https://www.chenshaowen.com/en/blog/practice-guide-to-kubectl.html</link><pubDate>Fri, 19 Jul 2019 01:00:00 +0000</pubDate><atom:modified>Fri, 19 Jul 2019 01:00:00 +0000</atom:modified><guid>https://www.chenshaowen.com/en/blog/practice-guide-to-kubectl.html</guid><description>1. What Is kubectl kubectl is the command-line tool for Kubernetes. It interacts with the cluster through the API server.
2. Configuring kubectl kubectl can be configured through ~/.kube/config to connect to one or more clusters.
For details on how to configure it, see: Configure Access to Multiple Clusters. If you need to configure a remote cluster, see: Building a Remote Kubernetes Development Environment.</description><dc:creator>微信公众号</dc:creator><category>Kubernetes</category><category>kubectl</category><category>Practice</category><category>Learning</category><category>Operations</category></item><item><title>Enabling Kubernetes Monitoring and Stress Testing</title><link>https://www.chenshaowen.com/en/blog/open-k8s-monitoring-and-stress-testing..html</link><pubDate>Mon, 24 Sep 2018 00:00:00 +0000</pubDate><atom:modified>Mon, 24 Sep 2018 00:00:00 +0000</atom:modified><guid>https://www.chenshaowen.com/en/blog/open-k8s-monitoring-and-stress-testing..html</guid><description>1. Kubectl Basic Commands 1.1 Creating Objects 1 2 3 4 5 6 7 8 # Create resources; a remote URL also works kubectl create -f ./my.yaml # Create resources from multiple files kubectl create -f ./my1.yaml -f ./my2.yaml # Create resources using all manifest files in a directory kubectl create -f .</description><dc:creator>微信公众号</dc:creator><category>Kubernetes</category><category>Testing</category><category>Monitoring</category><category>Operations</category><category>Learning</category><category>kubectl</category><category>Stress Testing</category><category>Observability</category></item><item><title>Learning Kubernetes with MiniKube on Windows 7</title><link>https://www.chenshaowen.com/en/blog/how-to-use-minikube-under-windows7.html</link><pubDate>Sun, 23 Sep 2018 00:00:00 +0000</pubDate><atom:modified>Sun, 23 Sep 2018 00:00:00 +0000</atom:modified><guid>https://www.chenshaowen.com/en/blog/how-to-use-minikube-under-windows7.html</guid><description>1. Basic Concepts 1.1 Kubernetes Kubernetes (K8s for short), the successor to Google&amp;rsquo;s Borg, is an open-source system for automatically deploying, scaling, and managing containerized applications.
The features it provides:
Automated deployment of containers Automated scaling up and down Automated application/service upgrades Grouping containers to serve traffic externally, with load balancing support Health checks for services, with automatic restarts 1.</description><dc:creator>微信公众号</dc:creator><category>Docker</category><category>Kubernetes</category><category>Windows</category><category>MiniKube</category><category>Learning</category><category>Operations</category></item></channel></rss>