如何修改 Kubelet 的启动参数
· ☕ 1 分钟
1. 编辑 Kubelet 配置文件 1 vim /etc/systemd/system/kubelet.service.d/10-kubeadm.conf 修改 Kubelet 相关参数 ExecStart=/usr/local/bin/kubelet $KUBELET_KUBECONFIG_ARGS $KUBELET_CONFIG_ARGS $KUBELET_KUBEADM_ARGS $KUBELET_EXTRA_ARGS 可以通过如下命令查看可选的参数: 1 kubelet --help 例如需要修改,KUBELET_KUBECONFIG_ARGS 的 --sync-frequency , 同步容器配置的时钟周期,默认值是 1 min。其含义是,更新了容器挂载的配置文件 1 min 之后,容器

在 Kubernetes 中如何给 NodePort 配置 NetworkPolicy
· ☕ 5 分钟
1. 需求背景 如上图,业务方需要隔离 namespae 的服务,禁止 bar 空间的负载访问,而允许用户从 Load Balancer (LB) 通过 NodePort 访问服务。可以很容易地写出一个网络策略: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 apiVersion: networking.k8s.io/v1 kind: NetworkPolicy metadata: name: test-network-policy namespace: foo spec: podSelector: matchLabels: {} policyTypes: - Ingress ingress: - from: - ipBlock: cidr: 10.2.3.4/32 - namespaceSelector: matchExpressions: - key: region operator: NotIn values: - bar 然而

/var/lib/docker 能不能挂载远端存储
· ☕ 3 分钟
不能 1. 问题背景 基于 Kubernetes 构建可靠、稳定的运维系统时,虚拟机 (VM) 的销毁和新建是一种常态。VM 提供的是计算和内存资源,而使用外部存储,通过 StorageClass 提供给集群中的 PVC 消费。 在这样的背景下,如何快速初始化 VM 成为新的挑战。常见的思路是制作 Node 节点的 VM 镜像,提前将依赖

如何定制自己的 Jenkins 镜像
· ☕ 6 分钟
1. 如何部署 Jenkins 为了方面进行下面的测试,先介绍两种部署 Jenkins 的方式,这里使用的是 shaowenchen/jenkins:2.277.4 镜像。在生产环境中,需要替换为官方 jenkins/jenkins 镜像或自己定制的镜像。 1.1 docker-compose 运行 docker-compose.yaml 文件 version: '3' services: jenkins: image: shaowenchen/jenkins:2.277.4 container_name: jenkins restart: always network_mode: "bridge" environment: - JAVA_OPTS="-Xms1Gi -Xmx4Gi" ports: - 8080:8080 - 50000:50000 - 2222:2222 environment: TZ: Asia/Shanghai volumes: - /Volumes/Data/jenkins_home:/var/jenkins_home 在本地创建一个目录 /Volumes/Data/jenkins_home 用于存储 Jenkins 的数据

Jenkins 在 Kubernetes 上的最佳实践
· ☕ 3 分钟
1. 配置较大的 -Xms -Xmx 参数 Jenkins 是由 Java 编写的编排引擎, 在 Full GC 时会 Stop The World(STW)。在大规模构建时, STW 可能会导致 Jenkins 无法处理新的请求。 为了避免频繁的 STW, 同时增大并发量, 建议设置较大的堆, -Xms3g -Xmx6g -XX:MaxRAM=6g。具体数值可以根据监控值来设置,