小陈运维 - 默认分类
type: channel
link: https://www.oiox.cn/index.php/category/default
description: 只是一个默认分类
items: 二进制安装Kubernetes（k8s）v1.35.0 - 精简版本
items: 二进制安装Kubernetes（k8s）v1.35.0
items: 升级二进制kubernetes集群（大版本升级）
items: 升级二进制kubernetes集群（小版本升级）
items: Elasticsearch常用运维命令
items: K8S 中使用 YAML 安装 ECK
items: Kubernetes核心-Ingress-metallb
items: 二进制安装Kubernetes（k8s）v1.34.0
items: 批量配置主机IP地址
items: K8s 1.33 原地扩缩容特性

二进制安装Kubernetes（k8s）v1.35.0 - 精简版本
type: item
date: 2025-12-19T23:37:12+08:00
description: 二进制安装Kubernetes（k8s）v1.35.0介绍https://github.com/cby-chen/Kubernetes 开源不易，帮忙点个star，谢谢了支持IPv4+IPv6双栈。本文是精简文档，删除了注释以及一些基础的内容，社交媒体超出字数限制，完整版见：项目地址：https://github.com/cby-chen/Kubernetes1.环境主机名称IP地址说明软件 192.168.1.60外网节点下载各种所需安装包Master01192.168.1.31master节点kube-apiserver、kube-controller-manager、kube-scheduler、etcd、kubelet、kube-proxy、nfs-client、haproxy、keepalived、nginxMaster02192.168.1.32master节点kube-apiserver、kube-controller-manager、kube-scheduler、etcd、kubelet、kube-proxy、nfs-client、haproxy、keepalived、nginxMaster03192.168.1.33master节点kube-apiserver、kube-controller-manager、kube-scheduler、etcd、kubelet、kube-proxy、nfs-client、haproxy、keepalived、nginxNode01192.168.1.34node节点kubelet、kube-proxy、nfs-client、nginxNode02192.168.1.35node节点kubelet、kube-proxy、nfs-client、nginx 192.168.1.36VIP 详细版本| 软件 | 版本 || --- | ---| | cni_plugins_version | v1.9.0 || cri_containerd_cni_version | 2.2.1 || crictl_version | v1.35.0 || cri_dockerd_version | 0.3.21 || etcd_version | v3.6.7 || cfssl_version | 1.6.5 || kubernetes_server_version | 1.35.0 || docker_version | 29.1.3 || runc_version | 1.4.0 || kernel_version | 6.16.4 || helm_version | 4.0.4 || nginx_version | 1.29.4 |网段 IPv4 物理主机：192.168.1.0/24 service：10.96.0.0/12 pod：172.16.0.0/12 IPv6 物理主机：2408:822a:732:5ce1::1001/64 物理主机：fc00::31/8 service：fd00:1111::/112 pod：fc00:2222::/112安装包已经整理好：https://github.com/cby-chen/Kubernetes/releases/download/v1.35.0/kubernetes-v1.35.0.tar1.1.k8s基础系统环境配置1.2.配置IP详见完整版 https://github.com/cby-chen/Kubernetes1.3.设置主机名hostnamectl set-hostname k8s-master01 hostnamectl set-hostname k8s-master02 hostnamectl set-hostname k8s-master03 hostnamectl set-hostname k8s-node01 hostnamectl set-hostname k8s-node021.4.配置yum源详见完整版 https://github.com/cby-chen/Kubernetes1.5.安装一些必备工具# 对于 Ubuntu apt update && apt upgrade -y && apt install -y wget psmisc vim net-tools nfs-kernel-server telnet lvm2 git tar curl # 对于 CentOS 7 yum update -y && yum -y install wget psmisc vim net-tools nfs-utils telnet yum-utils device-mapper-persistent-data l…

二进制安装Kubernetes（k8s）v1.35.0
type: item
date: 2025-12-19T23:01:03+08:00
description: 二进制安装Kubernetes（k8s）v1.35.0介绍https://github.com/cby-chen/Kubernetes 开源不易，帮忙点个star，谢谢了kubernetes（k8s）二进制高可用安装部署，支持IPv4+IPv6双栈。强烈建议在Github上查看文档 ！！！Github出问题会更新文档，并且后续尽可能第一时间更新新版本文档 ！！！手动项目地址：https://github.com/cby-chen/Kubernetes1.环境主机名称IP地址说明软件 192.168.1.60外网节点下载各种所需安装包Master01192.168.1.31master节点kube-apiserver、kube-controller-manager、kube-scheduler、etcd、kubelet、kube-proxy、nfs-client、haproxy、keepalived、nginxMaster02192.168.1.32master节点kube-apiserver、kube-controller-manager、kube-scheduler、etcd、kubelet、kube-proxy、nfs-client、haproxy、keepalived、nginxMaster03192.168.1.33master节点kube-apiserver、kube-controller-manager、kube-scheduler、etcd、kubelet、kube-proxy、nfs-client、haproxy、keepalived、nginxNode01192.168.1.34node节点kubelet、kube-proxy、nfs-client、nginxNode02192.168.1.35node节点kubelet、kube-proxy、nfs-client、nginx 192.168.1.36VIP 详细版本| 软件 | 版本 || --- | ---| | cni_plugins_version | v1.9.0 || cri_containerd_cni_version | 2.2.1 || crictl_version | v1.35.0 || cri_dockerd_version | 0.3.21 || etcd_version | v3.6.7 || cfssl_version | 1.6.5 || kubernetes_server_version | 1.35.0 || docker_version | 29.1.3 || runc_version | 1.4.0 || kernel_version | 6.16.4 || helm_version | 4.0.4 || nginx_version | 1.29.4 |网段 IPv4 物理主机：192.168.1.0/24 service：10.96.0.0/12 pod：172.16.0.0/12 IPv6 物理主机：2408:822a:732:5ce1::1001/64 物理主机：fc00::31/8 service：fd00:1111::/112 pod：fc00:2222::/112安装包已经整理好：https://github.com/cby-chen/Kubernetes/releases/download/v1.35.0/kubernetes-v1.35.0.tar1.1.k8s基础系统环境配置1.2.配置IP# 注意！ # 若虚拟机是进行克隆的那么网卡的UUID和MachineID会重复 # 需要重新生成新的UUIDUUID和MachineID # UUID和MachineID重复无法DHCP获取到IPV6地址 ssh root@192.168.1.195 "rm -rf /etc/machine-id; systemd-machine-id-setup;reboot" ssh root@192.168.1.196 "rm -rf /etc/machine-id; systemd-machine-id-setup;reboot" ssh root@192.168.1.197 "rm -rf /etc/machine-id; systemd-machine-id-setup;reboot" ssh root@192.168.1.198 "rm -rf /etc/machine-id; systemd-machine-id-setup;reboot" ssh root@192.168.1.199 "rm -rf /etc/machine-id; systemd-machine-id-setup;reboot" # # 查看当…

升级二进制kubernetes集群（大版本升级）
type: item
date: 2025-12-19T19:30:46+08:00
description: 升级二进制kubernetes集群（大版本升级）此文档基于我的二进制安装仓库 https://github.com/cby-chen/Kubernetes基础操作查看当前版本信息[root@k8s-master01 ~]# kubectl get node NAME STATUS ROLES AGE VERSION k8s-master01 Ready <none> 110d v1.34.3 k8s-master02 Ready <none> 110d v1.34.3 k8s-master03 Ready <none> 110d v1.34.3 k8s-node01 Ready <none> 110d v1.34.3 k8s-node02 Ready <none> 110d v1.34.3 [root@k8s-master01 ~]# 主机域名以及IP地址[root@k8s-master01 ~]# cat /etc/hosts | grep k8s 192.168.1.31 k8s-master01 192.168.1.32 k8s-master02 192.168.1.33 k8s-master03 192.168.1.34 k8s-node01 192.168.1.35 k8s-node02 fc00::31 k8s-master01 fc00::32 k8s-master02 fc00::33 k8s-master03 fc00::34 k8s-node01 fc00::35 k8s-node02 [root@k8s-master01 ~]# 下载二进制安装包[root@k8s-master01 ~]# wget https://dl.k8s.io/v1.34.3/kubernetes-server-linux-amd64.tar.gz [root@k8s-master01 ~]# wget https://dl.k8s.io/v1.35.0/kubernetes-server-linux-amd64.tar.gz [root@k8s-master01 ~]#解压二进制安装包[root@k8s-master01 ~]# tar xf kubernetes-server-linux-amd64.tar.gz [root@k8s-master01 ~]# 升级Maser升级三台主节点上的客户端[root@k8s-master01 ~]# scp kubernetes/server/bin/kubectl root@192.168.1.31:/usr/local/bin/ [root@k8s-master01 ~]# [root@k8s-master01 ~]# scp kubernetes/server/bin/kubectl root@192.168.1.32:/usr/local/bin/ [root@k8s-master01 ~]# [root@k8s-master01 ~]# scp kubernetes/server/bin/kubectl root@192.168.1.33:/usr/local/bin/ [root@k8s-master01 ~]# [root@k8s-master01 ~]# kubectl version Client Version: v1.35.0 Kustomize Version: v5.7.1 Server Version: v1.34.3 [root@k8s-master01 ~]# 升级三台主节点api组件[root@k8s-master01 ~]# ssh root@192.168.1.31 "systemctl stop kube-apiserver" [root@k8s-master01 ~]# [root@k8s-master01 ~]# scp kubernetes/server/bin/kube-apiserver root@192.168.1.31:/usr/local/bin/ [root@k8s-master01 ~]# [root@k8s-master01 ~]# ssh root@192.168.1.31 "systemctl start kube-apiserver" [root@k8s-master01 ~]# [root@k8s-master01 ~]# ssh root@192.168.1.31 "systemctl status kube-apiserver" [root@k8s-master01 ~]# [root@k8s-master01 ~]# kube-apiserver --version Kubernetes v1.35.0 [ro…

升级二进制kubernetes集群（小版本升级）
type: item
date: 2025-12-19T19:23:05+08:00
description: 升级二进制kubernetes集群（小版本升级）此文档基于我的二进制安装仓库 https://github.com/cby-chen/Kubernetes基础操作查看当前版本信息[root@k8s-master01 ~]# kubectl get node NAME STATUS ROLES AGE VERSION k8s-master01 Ready <none> 110d v1.34.0 k8s-master02 Ready <none> 110d v1.34.0 k8s-master03 Ready <none> 110d v1.34.0 k8s-node01 Ready <none> 110d v1.34.0 k8s-node02 Ready <none> 110d v1.34.0 [root@k8s-master01 ~]# 主机域名以及IP地址[root@k8s-master01 ~]# cat /etc/hosts | grep k8s 192.168.1.31 k8s-master01 192.168.1.32 k8s-master02 192.168.1.33 k8s-master03 192.168.1.34 k8s-node01 192.168.1.35 k8s-node02 fc00::31 k8s-master01 fc00::32 k8s-master02 fc00::33 k8s-master03 fc00::34 k8s-node01 fc00::35 k8s-node02 [root@k8s-master01 ~]# 下载二进制安装包[root@k8s-master01 ~]# wget https://dl.k8s.io/v1.34.3/kubernetes-server-linux-amd64.tar.gz [root@k8s-master01 ~]# wget https://dl.k8s.io/v1.35.0/kubernetes-server-linux-amd64.tar.gz [root@k8s-master01 ~]#解压二进制安装包[root@k8s-master01 ~]# tar xf kubernetes-server-linux-amd64.tar.gz [root@k8s-master01 ~]# 升级Maser升级三台主节点上的客户端[root@k8s-master01 ~]# scp kubernetes/server/bin/kubectl root@192.168.1.31:/usr/local/bin/ [root@k8s-master01 ~]# [root@k8s-master01 ~]# scp kubernetes/server/bin/kubectl root@192.168.1.32:/usr/local/bin/ [root@k8s-master01 ~]# [root@k8s-master01 ~]# scp kubernetes/server/bin/kubectl root@192.168.1.33:/usr/local/bin/ [root@k8s-master01 ~]# [root@k8s-master01 ~]# kubectl version Client Version: v1.34.3 Kustomize Version: v5.7.1 Server Version: v1.34.0 [root@k8s-master01 ~]# 升级三台主节点api组件[root@k8s-master01 ~]# ssh root@192.168.1.31 "systemctl stop kube-apiserver" [root@k8s-master01 ~]# [root@k8s-master01 ~]# scp kubernetes/server/bin/kube-apiserver root@192.168.1.31:/usr/local/bin/ [root@k8s-master01 ~]# [root@k8s-master01 ~]# ssh root@192.168.1.31 "systemctl start kube-apiserver" [root@k8s-master01 ~]# [root@k8s-master01 ~]# ssh root@192.168.1.31 "systemctl status kube-apiserver" [root@k8s-master01 ~]# [root@k8s-master01 ~]# kube-apiserver --version Kubernetes v1.34.3 [ro…

Elasticsearch常用运维命令
type: item
date: 2025-12-13T11:37:54+08:00
description: Elasticsearch常用运维命令Elasticsearch 的运维命令主要集中在使用其 RESTful API 上。这些命令可以通过任何 HTTP 客户端（如 curl、Kibana Dev Tools、Postman 等）来执行。集群健康与状态信息这是运维中最常用的一组命令，用于快速了解集群的整体状态。查看集群健康状态[root@k8s-192-168-1-140 ~]# PASSWORD=$(kubectl get secret quickstart-es-elastic-user -o go-template='{{.data.elastic | base64decode}}') [root@k8s-192-168-1-140 ~]# curl -s -XGET -u "elastic:$PASSWORD" -k "https://10.68.66.232:9200/_cluster/health?pretty" [root@k8s-192-168-1-140 ~]# curl -s -XGET -u "elastic:$PASSWORD" -k "https://10.68.66.232:9200/_cluster/health?pretty" { "cluster_name" : "quickstart", "status" : "green", "timed_out" : false, "number_of_nodes" : 1, "number_of_data_nodes" : 1, "active_primary_shards" : 39, "active_shards" : 39, "relocating_shards" : 0, "initializing_shards" : 0, "unassigned_shards" : 0, "unassigned_primary_shards" : 0, "delayed_unassigned_shards" : 0, "number_of_pending_tasks" : 0, "number_of_in_flight_fetch" : 0, "task_max_waiting_in_queue_millis" : 0, "active_shards_percent_as_number" : 100.0 } [root@k8s-192-168-1-140 ~]# 查看集群详细状态（包含节点、索引信息）curl -s -XGET -u "elastic:$PASSWORD" -k "https://10.68.66.232:9200/_cluster/state?pretty" [root@k8s-192-168-1-140 ~]# curl -s -XGET -u "elastic:$PASSWORD" -k "https://10.68.66.232:9200/_cluster/state?pretty" --------略 { "state" : "STARTED", "primary" : true, "node" : "N9j3pRcUR06S4vCsRcdnWw", "relocating_node" : null, "shard" : 0, "index" : ".internal.alerts-observability.metrics.alerts-default-000001", "allocation_id" : { "id" : "5onDdIVtS6WBHRBQeCB7PQ" }, "relocation_failure_info" : { "failed_attempts" : 0 } }, { "state" : "STARTED", "primary" : true, "node" : "N9j3pRcUR06S4vCsRcdnWw", "relocating_node" : null, "shard" : 0, "index" : ".ds-ilm-history-7-2025.12.12-000001", "allocation_id" : { "id" : "58PpB0LGQ6iabrqO5VLKqw" }, "relocation_failure_info" : { "failed_attempts" : 0 } } ] } }, "health" : { "disk" : { "high_watermark" : "90%", "high_max_headroom" : "150gb", "flood_stage_watermark" : "95%", "flood_stage_max_headroom" : "10…

K8S 中使用 YAML 安装 ECK
type: item
date: 2025-12-12T22:43:21+08:00
description: K8S 中使用 YAML 安装 ECKKubernetes 是目前最受欢迎的容器编排技术，越来越多的应用开始往 Kubernetes 中迁移。Kubernetes 现有的 ReplicaSet、Deployment、Service 等资源对象已经可以满足无状态应用对于自动扩缩容、负载均衡等基本需求。但是对于有状态的、分布式的应用，通常拥有各自的一套模型定义规范，例如 Prometheus，Etcd，Zookeeper，Elasticsearch 等等。部署这些分布式应用往往需要熟悉特定领域的知识，并且在扩缩容和升级时需要考虑如何保证应用服务的可用性等问题。为了简化有状态、分布式应用的部署，Kubernetes Operator 应运而生。Kubernetes Operator 是一种特定的应用控制器，通过 CRD（Custom Resource Definitions，自定义资源定义）扩展 Kubernetes API 的功能，可以用它来创建、配置和管理特定的有状态应用，而不需要直接去使用 Kubernetes 中最原始的一些资源对象，比如 Pod，Deployment，Service 等等。Elastic Cloud on Kubernetes（ECK） 是其中的一种 Kubernetes Operator，方便我们管理 Elastic Stack 家族中的各种组件，例如 Elasticsearch，Kibana，APM，Beats 等等。比如只需要定义一个 Elasticsearch 类型的 CRD 对象，ECK 就可以帮助我们快速搭建出一套 Elasticsearch 集群。使用create安装Elastic的自定义资源定义[root@k8s-192-168-1-140 ~]# kubectl create -f https://download.elastic.co/downloads/eck/3.2.0/crds.yaml customresourcedefinition.apiextensions.k8s.io/agents.agent.k8s.elastic.co created customresourcedefinition.apiextensions.k8s.io/apmservers.apm.k8s.elastic.co created customresourcedefinition.apiextensions.k8s.io/beats.beat.k8s.elastic.co created customresourcedefinition.apiextensions.k8s.io/elasticmapsservers.maps.k8s.elastic.co created customresourcedefinition.apiextensions.k8s.io/elasticsearchautoscalers.autoscaling.k8s.elastic.co created customresourcedefinition.apiextensions.k8s.io/elasticsearches.elasticsearch.k8s.elastic.co created customresourcedefinition.apiextensions.k8s.io/enterprisesearches.enterprisesearch.k8s.elastic.co created customresourcedefinition.apiextensions.k8s.io/kibanas.kibana.k8s.elastic.co created customresourcedefinition.apiextensions.k8s.io/logstashes.logstash.k8s.elastic.co created customresourcedefinition.apiextensions.k8s.io/stackconfigpolicies.stackconfigpolicy.k8s.elastic.co created [root@k8s-192-168-1-140 ~]# 使用kubectl apply 安装operator及其RBAC规则[root@k8s-192-168-1-140 ~]# kubectl apply -f https://download.elastic.co/downloads/eck/3.2.0/operator.yaml namespace/elastic-system created serviceaccount/elastic-operator create…

Kubernetes核心-Ingress-metallb
type: item
date: 2025-08-31T13:41:24+08:00
description: Kubernetes核心-Ingress-metallb使用一种能感知协议配置的机制来解析 URI、主机名称、路径等 Web 概念， 让你的 HTTP（或 HTTPS）网络服务可被访问。 Ingress 概念允许你通过 Kubernetes API 定义的规则将流量映射到不同后端。部署metallbMetalLB 是Kubernetes 的一个裸机环境下的负载均衡器，它为LoadBalancer 类型的Service 提供IP 地址分配和对外流量广播，从而使裸机Kubernetes 集群也能像云环境一样通过外部IP 访问内部服务下载部署# 我可以连接国际网络，就直接部署了 kubectl apply -f https://raw.githubusercontent.com/metallb/metallb/v0.15.2/config/manifests/metallb-native.yaml # 网络不通畅可以使用手动修改镜像地址 # 下载yaml配置 wget https://raw.githubusercontent.com/metallb/metallb/v0.15.2/config/manifests/metallb-native.yaml # 修改镜像地址 # 自行找代理 sed -i "s#quay.io#quay.chenby.cn#g" metallb-native.yaml cat metallb-native.yaml | grep image image: quay.chenby.cn/metallb/controller:v0.14.5 image: quay.chenby.cn/metallb/speaker:v0.14.5 # 执行部署 kubectl apply -f metallb-native.yaml查看运行情况root@k8s-master01:~# kubectl -n metallb-system get all NAME READY STATUS RESTARTS AGE pod/controller-6599cd9c46-rr54w 1/1 Running 0 78s pod/speaker-55j5t 1/1 Running 0 78s pod/speaker-bcr4j 1/1 Running 0 78s pod/speaker-p7vgz 1/1 Running 0 78s pod/speaker-pzvkd 1/1 Running 0 78s pod/speaker-vcjvr 1/1 Running 0 78s NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE service/metallb-webhook-service ClusterIP 10.106.20.159 <none> 443/TCP 78s NAME DESIRED CURRENT READY UP-TO-DATE AVAILABLE NODE SELECTOR AGE daemonset.apps/speaker 5 5 5 5 5 kubernetes.io/os=linux 78s NAME READY UP-TO-DATE AVAILABLE AGE deployment.apps/controller 1/1 1 1 78s NAME DESIRED CURRENT READY AGE replicaset.apps/controller-6599cd9c46 1 1 1 78s 配置VIP的资源池# 新版本metallb使用了CR（Custom Resources），这里我们通过IPAddressPool的CR，进行地址池的定义。 # 如果实例中不设置IPAddressPool选择器L2Advertisement；那么L2Advertisement默认为该实例所有的IPAddressPool相关联。 cat > metallb-config-ipaddresspool.yaml << EOF apiVersion: metallb.io/v1beta1 kind: IPAddressPool metadata: name: first-pool namespace: metallb-system spec: addresses: - 192.168.1.71-192.168.1.75 EOF # 进行L2关联地址池的绑定。 cat > metallb-config-L2Advertisement.yaml << EOF apiVersion: metallb.io/v1beta1 kind: L2Advertisement metadata: name:…

二进制安装Kubernetes（k8s）v1.34.0
type: item
date: 2025-08-31T13:37:35+08:00
description: 二进制安装Kubernetes（k8s）v1.34.0介绍https://github.com/cby-chen/Kubernetes 开源不易，帮忙点个star，谢谢了kubernetes（k8s）二进制高可用安装部署，支持IPv4+IPv6双栈。强烈建议在Github上查看文档 ！！！Github出问题会更新文档，并且后续尽可能第一时间更新新版本文档 ！！！手动项目地址：https://github.com/cby-chen/Kubernetes1.环境主机名称IP地址说明软件 192.168.1.60外网节点下载各种所需安装包Master01192.168.1.31master节点kube-apiserver、kube-controller-manager、kube-scheduler、etcd、kubelet、kube-proxy、nfs-client、haproxy、keepalived、nginxMaster02192.168.1.32master节点kube-apiserver、kube-controller-manager、kube-scheduler、etcd、kubelet、kube-proxy、nfs-client、haproxy、keepalived、nginxMaster03192.168.1.33master节点kube-apiserver、kube-controller-manager、kube-scheduler、etcd、kubelet、kube-proxy、nfs-client、haproxy、keepalived、nginxNode01192.168.1.34node节点kubelet、kube-proxy、nfs-client、nginxNode02192.168.1.35node节点kubelet、kube-proxy、nfs-client、nginx 192.168.1.36VIP 详细版本| 软件 | 版本 || --- | ---| | cni_plugins_version | v1.7.1 || cri_containerd_cni_version | 2.1.4 || crictl_version | v1.34.0 || cri_dockerd_version | 0.3.20 || etcd_version | v3.6.4 || cfssl_version | 1.6.5 || kubernetes_server_version | 1.34.0 || docker_version | 28.3.3 || runc_version | 1.3.0 || kernel_version | 6.16.4 || helm_version | 3.18.6 || nginx_version | 1.29.1 |网段 IPv4 物理主机：192.168.1.0/24 service：10.96.0.0/12 pod：172.16.0.0/12 IPv6 物理主机：2408:822a:732:5ce1::1001/64 物理主机：fc00::31/8 service：fd00:1111::/112 pod：fc00:2222::/112安装包已经整理好：https://github.com/cby-chen/Kubernetes/releases/download/v1.34.0/kubernetes-v1.34.0.tar1.1.k8s基础系统环境配置1.2.配置IP# 注意！ # 若虚拟机是进行克隆的那么网卡的UUID和MachineID会重复 # 需要重新生成新的UUIDUUID和MachineID # UUID和MachineID重复无法DHCP获取到IPV6地址 ssh root@192.168.1.195 "rm -rf /etc/machine-id; systemd-machine-id-setup;reboot" ssh root@192.168.1.196 "rm -rf /etc/machine-id; systemd-machine-id-setup;reboot" ssh root@192.168.1.197 "rm -rf /etc/machine-id; systemd-machine-id-setup;reboot" ssh root@192.168.1.198 "rm -rf /etc/machine-id; systemd-machine-id-setup;reboot" ssh root@192.168.1.199 "rm -rf /etc/machine-id; systemd-machine-id-setup;reboot" # # 查看…

批量配置主机IP地址
type: item
date: 2025-08-22T22:25:08+08:00
description: 批量配置主机IP地址背景我在经常装一些主机，主机都是虚拟机克隆出来的，网卡的uuid不会变，自动获取IPv6地址会出现问题，每次都需手动配置，比较麻烦。所以编写了一个自动配置地址的脚本。我的IPv6是需要通过DHCPv6自动下发公网地址，但是我又需要一个简短的内网IPv6地址，所以我的脚本中，只配置了一个内网的地址。这个地址没有配置网关。免密第一步先将所有的主机配置免密登录yum install -y sshpass ssh-keygen -f /root/.ssh/id_rsa -P '' export IP="192.168.1.192 192.168.1.194 192.168.1.196 192.168.1.198 192.168.1.200" export SSHPASS=123123 for HOST in $IP;do sshpass -e ssh-copy-id -o StrictHostKeyChecking=no $HOST done修改ip脚本修改你的环境的ip地址，以及网络配置参数，#!/bin/bash # 服务器批量配置脚本 # 功能：网络配置、UUID重置、machine-id重置、IP地址设置 # 作者：陈步云 # 日期：2025-08-22 # 日志文件配置 LOG_FILE="server_config_$(date +%Y%m%d%H%M%S).log" exec 3>&1 4>&2 trap 'exec 2>&4 1>&3' EXIT exec 1>"$LOG_FILE" 2>&1 # 服务器映射配置（旧IP->新IP） declare -A IP_MAPPING=( ["192.168.1.192"]="192.168.1.31" ["192.168.1.194"]="192.168.1.32" ["192.168.1.196"]="192.168.1.33" ["192.168.1.198"]="192.168.1.34" ["192.168.1.200"]="192.168.1.35" ) # 网络参数配置 GATEWAY="192.168.1.1" DNS="223.5.5.5" NETMASK_IPV4="/24" NETMASK_IPV6="/8" INTERFACE="ens160" # 待替换的UUID # 使用命令查看UUID # nmcli con show uuid="d1141403-18c6-3149-907c-ed5f09663a7f" # 执行SSH命令函数 execute_ssh() { local ip=$1 shift local commands=("$@") echo -e "\n[$(date '+%Y-%m-%d %H:%M:%S')] 在 $ip 执行命令:" echo " ${commands[*]}" ssh -o StrictHostKeyChecking=no -o ConnectTimeout=3 -o ServerAliveInterval=3 -o ServerAliveCountMax=1 root@"$ip" "${commands[*]}" if [ $? -eq 0 ]; then echo "命令执行成功" return 0 else echo "命令执行失败" return 1 fi } # 阶段1：网络连接重置 reset_network_connections() { for old_ip in "${!IP_MAPPING[@]}"; do commands=( "nmcli con delete uuid $uuid;nmcli con add type ethernet ifname $INTERFACE con-name $INTERFACE;nmcli con up $INTERFACE" ) execute_ssh "$old_ip" "${commands[@]}" done } # 阶段2：IPv4配置 configure_ipv4() { for old_ip in "${!IP_MAPPING[@]}"; do local new_ip="${IP_MAPPING[$old_ip]}" commands=( "nmcli con mod $INTERFACE ipv4.addresses ${new_ip}${NETMASK_IPV4};nmcli con mod $INTERFACE ipv4.gateway $GATEWAY;nmcli con mod $INTERFACE ipv4.method manual;nmcli con mod $INTERFACE ipv4.dns \"$DN…

K8s 1.33 原地扩缩容特性
type: item
date: 2025-06-06T20:35:54+08:00
description: K8s 1.33 原地扩缩容特性背景在创建好的pod容器中，进行了资源限制，在之前的版本中，修改资源配置是需要重启pod才可生效，在1.33版本的kubernetes可以直接调整正在运行的 Pod 的 CPU 和内存配置，而无需重启pod容器。需要注意的是，此功能目前为bate版本，并且在集群中默认开启。我们可以直接使用该新特性。操作演示创建一个资源监控 Pod[root@k8s-master01 ~]# vim resize.yaml [root@k8s-master01 ~]# cat resize.yaml apiVersion: v1 kind: Pod metadata: name: resize-demo spec: containers: - name: resource-watcher image: ubuntu:22.04 command: - "/bin/bash" - "-c" - | apt-get update && apt-get install -y procps bc echo "=== Pod Started: $(date) ===" # Functions to read container resource limits get_cpu_limit() { if [ -f /sys/fs/cgroup/cpu.max ]; then # cgroup v2 local cpu_data=$(cat /sys/fs/cgroup/cpu.max) local quota=$(echo $cpu_data | awk '{print $1}') local period=$(echo $cpu_data | awk '{print $2}') if [ "$quota" = "max" ]; then echo "unlimited" else echo "$(echo "scale=3; $quota / $period" | bc) cores" fi else # cgroup v1 local quota=$(cat /sys/fs/cgroup/cpu/cpu.cfs_quota_us) local period=$(cat /sys/fs/cgroup/cpu/cpu.cfs_period_us) if [ "$quota" = "-1" ]; then echo "unlimited" else echo "$(echo "scale=3; $quota / $period" | bc) cores" fi fi } get_memory_limit() { if [ -f /sys/fs/cgroup/memory.max ]; then # cgroup v2 local mem=$(cat /sys/fs/cgroup/memory.max) if [ "$mem" = "max" ]; then echo "unlimited" else echo "$((mem / 1048576)) MiB" fi else # cgroup v1 local mem=$(cat /sys/fs/cgroup/memory/memory.limit_in_bytes) echo "$((mem / 1048576)) MiB" fi } # Print resource info every 5 seconds while true; do echo "---------- Resource Check: $(date) ----------" echo "CPU limit: $(get_cpu_limit)" echo "Memory limit: $(get_memory_limit)" echo "Available memory: $(free -h | grep Mem | awk '{print $7}')" sleep 5 done resizePolicy: - resourceName: cpu restartPolicy: NotRequired - resourceName: memory restartPolicy: NotRequired resources: requests: memory: "128Mi" cpu: "100m" limits: memory: "128Mi" cpu: "100m" [root@k8s-master01 ~]# [root@k8s-master01 ~]# kubectl apply -f resize.yaml pod/resize-demo created [root@k8s-master01 ~]# 查看 P…