Sealos 部署 K8s + DeepFlow
创建时间:2025-10-24 最近修改时间:2025-10-24
#1. Sealos 部署 K8s + DeepFlow
文件路径: oss://df-patch-no-delete/sealos/
#1.1 环境优化
swapoff -a
sed -i '/swap/d' /etc/fstab
systemctl stop firewalld
systemctl disable firewalld
setenforce 0
sed -ri "s#SELINUX=.*#SELINUX=disabled#g" /etc/selinux/config
echo "net.ipv4.ip_forward=1" >> /etc/sysctl.conf
sysctl -p
sed -i "/nproc/d" /etc/security/limits.conf
sed -i "/nofile/d" /etc/security/limits.conf
echo -e "root soft nofile 1048576\nroot hard nofile 1048576\nroot soft nproc 1048576\nroot hard nproc 1048576" >> /etc/security/limits.conf
## 配置免密
# 方式一,有root密码
ssh-keygen
ssh-copy-id -i ~/.ssh/id_rsa.pub -p 16022 x.x.x.x
# 方式二,没有root密码
ssh-keygen
cat .ssh/id_rsa.pub
# 被登陆机器
mkdir /root/.ssh
cat .ssh/id_rsa.pub >> /root/.ssh/authorized_keys
chmod 700 /root/.ssh
chomd 600 /root/.ssh/authorized_keys
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
#1.1.1 部署 kubernetes
mkdir /deepflow/sealos-soft && tar xf sealos-amd64-k8s-1.25.16.tar.gz -C /deepflow/sealos-soft && cd /deepflow/sealos-soft
\cp sealos helm calicoctl nerdctl /usr/bin/ && chmod +x /usr/bin/sealos /usr/bin/helm /usr/bin/calicoctl /usr/bin/nerdctl
sealos load -i sealos-calico.tar
sealos load -i sealos-helm.tar
sealos load -i sealos-k8s-1.25.16.tar
# 安装
sealos run registry.cn-shanghai.aliyuncs.com/labring/kubernetes:v1.25.16 registry.cn-shanghai.aliyuncs.com/labring/helm:v3.9.4 registry.cn-shanghai.aliyuncs.com/labring/calico:v3.24.1 --masters x.x.x.x,x.x.x.x
# 高级配置,将信息写入到本地文件后可以按需修改配置
sealos gen registry.cn-shanghai.aliyuncs.com/labring/kubernetes:v1.25.16 registry.cn-shanghai.aliyuncs.com/labring/helm:v3.9.4 registry.cn-shanghai.aliyuncs.com/labring/calico:v3.24.1 --masters x.x.x.x,x.x.x.x > Clusterfile
# 启动集群
sealos apply -f Clusterfile
# 检查集群
kubectl get pod -A
kubectl get no
# 增加master/node节点
sealos add --masters/--nodes 10.1.18.31
# 删除master/node节点
sealos delete --masters/--node 10.1.18.31
### 清理污点 例子
kubectl describe node | grep Taint
kubectl taint nodes nodename node-role.kubernetes.io/master:NoSchedule-
# 释放集群(不要进行该操作)
sealos reset
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
#1.1.1.1 常见问题处理
冲突依赖解决
rpm -qa | grep -E "docker|podman|containerd|kubelet"
rpm -e xxx
跨主机域名解析失败
通过修改calico的网络模式为vxlan后解析SVC的地址正常。
# 查看当前的网络模式,默认IPIPMODE下面是Always, VXLANMODE下面是Never
calicoctl get ipPool -o wide --allow-version-mismatch
# 配置另存为
calicoctl get ipPool -o yaml --allow-version-mismatch > ipPool.yaml
# 删除多余的信息,如下
apiVersion: projectcalico.org/v3
items:
- apiVersion: projectcalico.org/v3
kind: IPPool
metadata:
name: default-ipv4-ippool
resourceVersion: "1734"
spec:
blockSize: 26
cidr: 100.64.0.0/10
ipipMode: Never
natOutgoing: true
nodeSelector: all()
vxlanMode: Always
kind: IPPoolList
metadata:
resourceVersion: "3440"
# apply执行修改
calicoctl apply -f ipPool.yaml --allow-version-mismatch
# 重启所有的calico POD
kubectl -n calico-apiserver delete pod --all
kubectl -n calico-system delete pod --all
calico获取不到网卡接口
kubectl scale deployment -n tigera-operator tigera-operator --replicas=0
然后在修改
kubectl edit ds -n calico-system calico-node
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
29
30
31
32
33
34
35
36
37
38
39
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
29
30
31
32
33
34
35
36
37
38
39
#1.1.2 部署 DeepFlow
# 挂载 ISO
mount -o ro deepflow-docker-release-*.iso /media
mkdir -p /usr/local/deepflow/{debug,patch,mysql}
cp -a /media/* /usr/local/deepflow/
## 启动DeepFlow仓库
## 方式一:自建
nerdctl load -i registry.tar
cp bridge firewall /opt/cni/bin/
chmod +x /opt/cni/bin/firewall /opt/cni/bin/bridge
nerdctl run -d -p 6000:5000 -v /usr/local/deepflow/registry:/var/lib/registry --restart=always --name deepflow-registry registry:latest
## 方式二:复用Sealos仓库
\cp -a /usr/local/deepflow/registry/docker /var/lib/sealos/data/default/rootfs/registry
rm -rf /usr/local/deepflow/registry
ln -s /var/lib/sealos/data/default/rootfs/registry /usr/local/deepflow/registry
1
2
3
4
5
6
7
8
9
10
11
12
13
14
2
3
4
5
6
7
8
9
10
11
12
13
14
#1.1.2.1 DeepFlow 仓库配置方法
# 所有节点添加
mkdir -p /etc/containerd/certs.d/x.x.x.x:6000
vi /etc/containerd/certs.d/x.x.x.x\:6000/hosts.toml
server = "http://x.x.x.x:6000"
[host."http://x.x.x.x:6000"]
capabilities = ["pull", "resolve", "push"]
skip_verify = true
# 修改后重启Containerd和kubelet进程:systemctl daemon-reload && systemctl restart containerd kubelet
1
2
3
4
5
6
7
8
9
2
3
4
5
6
7
8
9
#1.1.2.2 DeepFlow 组件角色介绍
- 主要角色
- master_controller:用于标记
主区域控制器节点,至少有一个,与 slave_controller label 互斥 - slave_controller:用于标记
从区域控制器节点, 仅从区域部署时使用 slave_controller,至少有一个,与 master_controller label 互斥 - tsdb:用于部署
ClickHouse 数据节点,至少有一个,用于存储时序数据,考虑到性能推荐使用 SSD - dfdb: 用于指定运行 MySQL 的
控制器节点- 有共享存储: 可标记多个 controller 上部署 MySQL
- 无共享存储: 仅支持标记一个固定节点,需要与 master_controller 或 slave_controller位于同一台服务器上。
- master_controller:用于标记
- 其他角色
- dedicated-agent:【可选】用于部署专用物理机采集器
- admin_controller: [可选] 打在操作 kubelet 节点上,用于调度 mntnct 工具至指定节点
- check: [可选] 将会在每个节点运行磁盘性能测试,测试数据可查看每节点运行的 check pod 日志
#1.1.2.3 DeepFlow 节点标记
根据服务器角色不同,将服务器角色以 K8s label 形式进行标记
- 标记节点
kubectl label node [node name] [role]=enable1 - 清除标记
kubectl label node [node name] [role]-1
#1.1.2.4 修改部署参数
deepflowVersion DeepFlow版本,例如:"DeepFlow-6.6.9"
image.repository sealos.hub:5000/x.x.x.x:6000
node_type 主从区域标识,只可配置为 "master" 或者 "slave"
master_region_domain_prefix 主区域域名前缀,例如:"master-"( 从区域必填,主区域可不填)
current_region_domain_prefix 当前区域前缀,例如:"slave1-"、"master-"
deepflow.server.replicas 可配置为 K8s 集群的节点数量
deepflow.server.resources.limits.memory 可配置为节点资源的 70% and > 2Gi,如 128G,则配置为 128x0.7~=90G。
1
2
3
4
5
6
7
2
3
4
5
6
7
#1.1.2.5 安装 DeepFlow
echo "net.ipv6.conf.all.disable_ipv6=0" >> /etc/sysctl.conf
sysctl -p
# 安装
/usr/local/deepflow/bin/deepflow-deploy -i
参数详解
-i, --install Install all [安装 DeepFlow 所有依赖,但默认不初始化数据库]
-d, --deepflow Install DeepFlow
-u, --upgrade Upgrade all [更新所有应用 yaml 改动]
-uo, --upgrade-one Upgrade One [更新单个应用 yaml 改动]
-ud, --upgrade-deepflow Upgrade DeepFlow [更新 DeepFlow 业务组件 yaml 改动]
-e, --erase Uninstall all
-ed, --erase-deepflow Uninstall DeepFlow
1
2
3
4
5
6
7
8
9
10
11
12
2
3
4
5
6
7
8
9
10
11
12