[root@localhost ~]# kubeadm init \ > --kubernetes-version=v1.18.0 \ > --apiserver-advertise-address=192.168.100.8 \ > --image-repository=registry.aliyuncs.com/google_containers \ > --service-cidr=10.96.0.0/12 \ > --pod-network-cidr=10.244.0.0/16 W0315 21:52:19.033913 8517 configset.go:202] WARNING: kubeadm cannot validate component configs for API groups [kubelet.config.k8s.io kubeproxy.config.k8s.io] [init] Using Kubernetes version: v1.18.0 [preflight] Running pre-flight checks [WARNING Firewalld]: firewalld is active, please ensure ports [6443 10250] are open or your cluster may not function correctly [WARNING IsDockerSystemdCheck]: detected "cgroupfs" as the Docker cgroup driver. The recommended driver is "systemd". Please follow the guide at https://kubernetes.io/docs/setup/cri/ [preflight] Pulling images required for setting up a Kubernetes cluster [preflight] This might take a minute or two, depending on the speed of your internet connection [preflight] You can also perform this action in beforehand using 'kubeadm config images pull'
时间: 2025-07-05 08:35:43 浏览: 11
<think>好的,我现在要解决用户提到的Kubernetes初始化过程中遇到的警告问题,特别是kubeadm init在版本1.18.0时出现的警告,涉及firewalld、docker、cgroupfs和systemd相关的问题。首先,我需要回忆一下Kubernetes集群初始化的常见问题以及解决方法,并结合用户提供的引用内容来寻找线索。
用户提到使用的是Kubernetes 1.18.0,这个版本可能和docker、cgroup驱动等组件的兼容性有关。根据引用[1]中的内容,用户配置了docker使用systemd作为cgroup驱动,这可能是因为默认情况下docker使用cgroupfs,而Kubernetes推荐使用systemd,以避免cgroup驱动不匹配的问题。但用户可能在此处配置有误,或者需要进一步调整。
接下来,用户提到的警告可能包括以下几个方面:
1. **cgroup驱动不匹配**:当docker的cgroup驱动(比如cgroupfs)与kubelet使用的驱动(systemd)不一致时,kubeadm会发出警告。根据引用[1]和引用[3],正确的做法是配置docker使用systemd,并确保kubelet也使用相同的驱动。用户需要检查docker的配置文件(如/etc/docker/daemon.json)是否正确设置了"exec-opts": ["native.cgroupdriver=systemd"],并重启docker服务。
2. **防火墙(firewalld)未关闭或配置不当**:Kubernetes需要特定的端口开放才能正常工作。用户可能没有正确配置防火墙规则,或者最好在初始化集群时暂时关闭firewalld以避免干扰。引用[4]提到集群环境初始化时需要做一些前期准备,可能包括关闭防火墙。用户需要确认firewalld的状态,必要时关闭或配置允许相关端口。
3. **版本兼容性问题**:Kubernetes 1.18.0可能与docker的版本存在兼容性问题。需要确认docker版本是否符合Kubernetes 1.18.0的要求,比如docker的版本是否在支持的列表中。根据引用[2],安装docker-ce时可能需要特定版本,用户需检查安装的docker版本是否合适。
4. **kubeadm配置参数**:在初始化时可能需要指定某些参数,如忽略预检错误或明确设置cgroup驱动。例如,使用`--ignore-preflight-errors=all`可以跳过一些警告,但这可能不是最佳实践。更好的方法是在初始化前通过kubeadm的配置文件正确配置cgroup驱动。
接下来,我需要一步步整理解决方案:
首先,处理cgroup驱动问题。检查docker配置是否正确,是否已经重启docker服务。然后,确保kubelet的cgroup驱动也设置为systemd。这可能需要修改kubelet的配置文件,通常在/etc/systemd/system/kubelet.service.d/10-kubeadm.conf,添加环境变量`--cgroup-driver=systemd`。之后重启kubelet服务。
其次,处理防火墙问题。关闭firewalld或者放行必要的端口,如6443、10250等。用户可以选择临时关闭firewalld(systemctl stop firewalld)或配置相应的防火墙规则。
然后,检查版本兼容性。确认docker版本是否与Kubernetes 1.18.0兼容。例如,docker 19.03可能是一个合适的版本。
最后,使用kubeadm init时可能需要指定配置文件,明确设置cgroup驱动和其他参数。例如,生成配置文件kubeadm-config.yaml,内容包含cgroupDriver: systemd,然后使用kubeadm init --config kubeadm-config.yaml。
此外,用户提到的引用[3]中提到pod包含kubelet和kube-proxy,这也提示需要确保kubelet服务正常运行,配置正确。
可能遇到的警告信息示例包括:
- [WARNING SystemVerification]: failed to parse kernel config: unable to load kernel module: "configs", output: "", err: exit status 1
- [WARNING Service-Docker]: docker service is not enabled, please run 'systemctl enable docker.service'
- [WARNING IsDockerSystemdCheck]: detected "cgroupfs" as the Docker cgroup driver. The recommended driver is "systemd". Please follow the guide at https://kubernetes.io/docs/setup/cri/
针对这些警告,逐一解决:
对于Docker cgroup驱动警告,必须确保docker使用systemd驱动,并重启docker。对于未启用docker服务的问题,使用systemctl enable docker。关于内核参数的问题,可能需要加载某些模块或调整系统参数,比如设置net.bridge.bridge-nf-call-iptables=1等。
总结步骤:
1. 确认并配置docker使用systemd作为cgroup驱动,重启docker。
2. 配置kubelet使用systemd驱动。
3. 关闭或配置firewalld。
4. 检查并安装兼容的docker版本。
5. 生成kubeadm配置文件,指定cgroup驱动。
6. 初始化集群时使用配置文件,处理其他可能的预检错误。
在回答中需要将这些步骤清晰地列出,并引用用户提供的参考资料中的相关内容,例如引用[1]关于docker配置的部分,引用[4]关于集群初始化的步骤。同时,生成相关问题,帮助用户进一步排查可能的问题。</think>### 解决Kubernetes初始化警告的步骤
#### 1. **解决cgroup驱动不匹配问题**
- **修改Docker配置**:
确保Docker使用`systemd`作为cgroup驱动(引用[1]):
```bash
cat > /etc/docker/daemon.json << EOF
{
"registry-mirrors": ["https://b9pmyelo.mirror.aliyuncs.com"],
"exec-opts": ["native.cgroupdriver=systemd"]
}
EOF
```
重启Docker服务:
```bash
systemctl restart docker
```
- **配置kubelet**:
修改kubelet配置文件(如`/etc/sysconfig/kubelet`),添加:
```bash
KUBELET_EXTRA_ARGS="--cgroup-driver=systemd"
```
重启kubelet:
```bash
systemctl restart kubelet
```
#### 2. **处理防火墙(firewalld)警告**
- **临时关闭防火墙**:
```bash
systemctl stop firewalld
systemctl disable firewalld
```
- **或放行必要端口**:
开放Kubernetes所需端口(如6443、10250等):
```bash
firewall-cmd --permanent --add-port={6443,10250,10251,10255}/tcp
firewall-cmd --reload
```
#### 3. **版本兼容性检查**
- **确认Docker版本**:
Kubernetes 1.18.0建议使用Docker 18.06~19.03。检查版本:
```bash
docker --version
```
若不兼容,卸载旧版本并安装指定版本(引用[2])。
#### 4. **使用kubeadm配置文件初始化**
- **生成配置文件**:
创建`kubeadm-config.yaml`:
```yaml
apiVersion: kubeadm.k8s.io/v1beta2
kind: InitConfiguration
nodeRegistration:
criSocket: /var/run/dockershim.sock
kubeletExtraArgs:
cgroup-driver: "systemd"
---
apiVersion: kubeadm.k8s.io/v1beta2
kind: ClusterConfiguration
kubernetesVersion: v1.18.0
```
- **初始化集群**:
```bash
kubeadm init --config kubeadm-config.yaml
```
#### 5. **处理其他预检警告**
- **启用Docker服务自启动**:
```bash
systemctl enable docker
```
- **调整内核参数**:
修改`/etc/sysctl.conf`:
```bash
net.bridge.bridge-nf-call-iptables = 1
net.ipv4.ip_forward = 1
```
加载配置:
```bash
sysctl --system
```
---
### 常见警告及解决方案
| 警告信息 | 解决方案 |
|---------|---------|
| `[WARNING IsDockerSystemdCheck]: detected "cgroupfs" as the Docker cgroup driver` | 确保Docker配置为`systemd`并重启服务[^1]。 |
| `[WARNING Service-Firewalld]: firewalld is active` | 关闭防火墙或放行K8s端口[^4]。 |
| `[WARNING SystemVerification]: failed to parse kernel config` | 调整内核参数并加载模块。 |
---
阅读全文
相关推荐



















