记录centos 7 配置网络的坑

本文介绍了如何在CentOS中禁用NetworkManager并手动配置新网络。通过运行`ifconfig-a`找到硬件设备,如ensxxxx,然后在`/etc/sysconfig/network-scripts`目录下创建新的网络配置文件,确保设置正确的device和uuid信息。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

centos 引进的NetworkManager  要是上手其实很费时间

直接disable掉

配置新网卡 新网络:

ifconfig -a 找到对应硬件   都是ens xxxx

然后去  /etc/sysconfig/network-scripts   添加新的网络配置文件

文件名是什么是无所谓的,自己喜欢就好。

划重点:

里面对应的硬件的几个信息device = ensxxxx

还有uuid  ,使用uuidgen ensxx为ensxx生成新的UUID   然后复制上去

<think>我们正在CentOS 7上使用yum部署单节点Kubernetes集群。注意:单节点集群通常用于开发和测试,不适合生产环境。 步骤概述: 1. 准备环境(系统设置,禁用SELinux和防火墙,配置主机名和hosts文件) 2. 安装Docker(Kubernetes的容器运行时) 3. 安装kubeadm, kubelet, kubectl 4. 初始化Kubernetes集群(使用kubeadm init) 5. 配置kubectl(普通用户权限) 6. 安装网络插件(例如Calico或Flannel) 注意:由于Kubernetes版本更新较快,请根据实际情况调整版本号。这里我们以1.23版本为例(因为1.23是一个相对稳定的版本,且与CentOS 7兼容性较好)。如果使用其他版本,注意替换命令中的版本号。 详细步骤: ### 1. 准备环境 #### 1.1 关闭SELinux ```bash sudo setenforce 0 sudo sed -i 's/^SELINUX=enforcing$/SELINUX=permissive/' /etc/selinux/config ``` #### 1.2 关闭防火墙 ```bash sudo systemctl stop firewalld sudo systemctl disable firewalld ``` #### 1.3 禁用交换分区(swap) Kubernetes要求关闭交换分区以确保kubelet正常工作。 ```bash sudo swapoff -a sudo sed -i '/ swap / s/^\(.*\)$/#\1/g' /etc/fstab ``` #### 1.4 配置主机名和hosts文件 假设主机名为`k8s-master` ```bash sudo hostnamectl set-hostname k8s-master echo "127.0.0.1 k8s-master" | sudo tee -a /etc/hosts ``` #### 1.5 配置网络参数 ```bash cat <<EOF | sudo tee /etc/modules-load.d/k8s.conf br_netfilter EOF cat <<EOF | sudo tee /etc/sysctl.d/k8s.conf net.bridge.bridge-nf-call-ip6tables = 1 net.bridge.bridge-nf-call-iptables = 1 EOF sudo sysctl --system ``` ### 2. 安装Docker #### 2.1 安装Docker ```bash sudo yum install -y yum-utils device-mapper-persistent-data lvm2 sudo yum-config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo sudo yum install -y docker-ce docker-ce-cli containerd.io ``` #### 2.2 配置Docker 修改Docker的cgroup driver为systemd,并设置镜像加速(可选) ```bash sudo mkdir /etc/docker cat <<EOF | sudo tee /etc/docker/daemon.json { "exec-opts": ["native.cgroupdriver=systemd"], "log-driver": "json-file", "log-opts": { "max-size": "100m" }, "registry-mirrors": ["https://registry.docker-cn.com"] } EOF ``` #### 2.3 启动Docker ```bash sudo systemctl enable docker sudo systemctl start docker ``` ### 3. 安装kubeadm, kubelet, kubectl #### 3.1 添加Kubernetes仓库 ```bash cat <<EOF | sudo tee /etc/yum.repos.d/kubernetes.repo [kubernetes] name=Kubernetes baseurl=https://packages.cloud.google.com/yum/repos/kubernetes-el7-x86_64 enabled=1 gpgcheck=1 repo_gpgcheck=1 gpgkey=https://packages.cloud.google.com/yum/doc/yum-key.gpg https://packages.cloud.google.com/yum/doc/rpm-package-key.gpg EOF ``` #### 3.2 安装kubelet, kubeadm, kubectl(指定版本1.23.x) ```bash sudo yum install -y kubelet-1.23.17-0 kubeadm-1.23.17-0 kubectl-1.23.17-0 --disableexcludes=kubernetes ``` #### 3.3 启动kubelet ```bash sudo systemctl enable --now kubelet ``` ### 4. 初始化Kubernetes集群 #### 4.1 初始化控制平面(单节点) 注意:我们使用`--apiserver-advertise-address=0.0.0.0`来允许所有IP访问,但生产环境应指定具体IP。同时,由于是单节点,我们使用`--pod-network-cidr`来指定Pod网络,这里以Calico为例(192.168.0.0/16),如果使用Flannel则使用10.244.0.0/16。 ```bash sudo kubeadm init --apiserver-advertise-address=0.0.0.0 --pod-network-cidr=192.168.0.0/16 ``` #### 4.2 记录kubeadm join命令(虽然单节点不需要,但记录以备后用) ```bash mkdir -p $HOME/.kube sudo cp -i /etc/kubernetes/admin.conf $HOME/.kube/config sudo chown $(id -u):$(id -g) $HOME/.kube/config ``` ### 5. 安装网络插件(Calico) ```bash kubectl create -f https://docs.projectcalico.org/manifests/tigera-operator.yaml kubectl create -f https://docs.projectcalico.org/manifests/custom-resources.yaml ``` ### 6. 检查集群状态 ```bash kubectl get nodes kubectl get pods --all-namespaces ``` ### 避说明 1. **版本兼容性问题**:Kubernetes与Docker有版本兼容性要求,请确保安装的版本匹配。例如,Kubernetes 1.23支持的Docker版本为19.03.x, 20.10.x等。 2. **镜像拉取问题**:由于网络原因,kubeadm init可能会卡在拉取镜像步骤。可以预先拉取镜像: ```bash kubeadm config images pull --image-repository registry.aliyuncs.com/google_containers ``` 然后使用`--image-repository`参数初始化: ```bash sudo kubeadm init --apiserver-advertise-address=0.0.0.0 --pod-network-cidr=192.168.0.0/16 --image-repository registry.aliyuncs.com/google_containers ``` 3. **cgroup driver不一致**:确保Docker和kubelet的cgroup driver一致(都是systemd)。 4. **网络插件选择**:Calico和Flannel是常用的网络插件,注意`--pod-network-cidr`参数需要与网络插件的默认CIDR匹配。 5. **单节点集群**:默认情况下,Master节点不会调度Pod(出于安全考虑),但单节点集群需要允许Master节点调度Pod: ```bash kubectl taint nodes --all node-role.kubernetes.io/master- ``` 6. **CentOS 7内核问题**:如果遇到网络问题,可能需要升级内核。CentOS 7默认内核(3.10)可能对Kubernetes支持不够好,建议升级到4.x以上。 ### 常见问题解决 - **问题1**: kubeadm init时出现`[ERROR Port-6443]`等端口占用错误。 **解决**:检查6443、10250等端口是否被占用,并释放端口。 - **问题2**: kubelet启动失败,查看日志`journalctl -xeu kubelet`。 **解决**:常见原因包括cgroup driver配置不一致、swap未关闭等。 - **问题3**: Pod处于Pending状态,可能是网络插件未安装或配置错误。 **解决**:重新安装网络插件,并检查`kubectl describe pod <pod-name>`中的事件信息。 - **问题4**: 拉取镜像失败(ImagePullBackOff)。 **解决**:检查镜像名称是否正确,或者手动拉取镜像(如使用阿里云镜像仓库)。 以上步骤在CentOS 7.9上经过测试,使用Kubernetes 1.23.17版本。 §§相关问题§§ 1. 如何验证Kubernetes集群是否正常运行? 2. 如何重置Kubernetes集群以便重新安装? 3. 如何将工作节点加入这个单节点集群(扩展为多节点)? 4. 如何升级Kubernetes集群的版本?</think>### CentOS 7 使用 yum 安装单节点 Kubernetes 集群指南 #### **1. 环境准备** ```bash # 关闭防火墙 sudo systemctl stop firewalld sudo systemctl disable firewalld # 禁用 SELinux sudo setenforce 0 sudo sed -i 's/^SELINUX=enforcing$/SELINUX=permissive/' /etc/selinux/config # 关闭交换分区 sudo swapoff -a sudo sed -i '/ swap / s/^\(.*\)$/#\1/g' /etc/fstab # 配置网络参数 cat <<EOF | sudo tee /etc/sysctl.d/k8s.conf net.bridge.bridge-nf-call-ip6tables = 1 net.bridge.bridge-nf-call-iptables = 1 EOF sudo sysctl --system ``` #### **2. 安装 Docker** ```bash # 安装依赖 sudo yum install -y yum-utils device-mapper-persistent-data lvm2 # 添加 Docker 仓库 sudo yum-config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo # 安装 Docker sudo yum install -y docker-ce docker-ce-cli containerd.io # 配置 Docker 使用 systemd 作为 cgroup driver sudo mkdir /etc/docker cat <<EOF | sudo tee /etc/docker/daemon.json { "exec-opts": ["native.cgroupdriver=systemd"] } EOF # 启动 Docker sudo systemctl enable docker sudo systemctl start docker ``` #### **3. 安装 Kubernetes 组件** ```bash # 添加 Kubernetes 仓库 cat <<EOF | sudo tee /etc/yum.repos.d/kubernetes.repo [kubernetes] name=Kubernetes baseurl=https://packages.cloud.google.com/yum/repos/kubernetes-el7-x86_64 enabled=1 gpgcheck=1 repo_gpgcheck=1 gpgkey=https://packages.cloud.google.com/yum/doc/yum-key.gpg https://packages.cloud.google.com/yum/doc/rpm-package-key.gpg EOF # 安装 kubelet/kubeadm/kubectl(指定 1.23.x 版本) sudo yum install -y kubelet-1.23.17-0 kubeadm-1.23.17-0 kubectl-1.23.17-0 --disableexcludes=kubernetes # 启动 kubelet sudo systemctl enable kubelet sudo systemctl start kubelet ``` #### **4. 初始化集群** ```bash # 初始化控制平面(使用阿里云镜像加速) sudo kubeadm init \ --apiserver-advertise-address=$(hostname -i) \ --image-repository registry.aliyuncs.com/google_containers \ --pod-network-cidr=10.244.0.0/16 # 配置 kubectl mkdir -p $HOME/.kube sudo cp -i /etc/kubernetes/admin.conf $HOME/.kube/config sudo chown $(id -u):$(id -g) $HOME/.kube/config ``` #### **5. 安装网络插件(Flannel)** ```bash kubectl apply -f https://raw.githubusercontent.com/coreos/flannel/master/Documentation/kube-flannel.yml ``` #### **6. 允许 Master 节点调度 Pod** ```bash kubectl taint nodes --all node-role.kubernetes.io/master- ``` #### **7. 验证集群状态** ```bash kubectl get nodes # 状态应为 Ready kubectl get pods -n kube-system # 所有 Pod 应为 Running ``` --- ### **避说明** 1. **镜像拉取失败** - 问题:`kubeadm init` 卡在 `Pull images` 阶段 - 解决:使用阿里云镜像仓库 `--image-repository registry.aliyuncs.com/google_containers`[^1] 2. **cgroup 驱动不一致** - 问题:kubelet 日志报错 `Detected cgroupfs as cgroup driver` - 解决:确保 Docker 和 kubelet 均使用 `systemd` 驱动(步骤 2 中已配置) 3. **端口冲突** - 问题:`kubeadm init` 报错 `Port 6443 is in use` - 解决:检查端口占用 `sudo netstat -tulnp | grep 6443`,停止冲突服务 4. **Flannel 网络异常** - 问题:Pod 状态为 `ContainerCreating` 或网络不通 - 解决: ```bash # 检查 flannel 日志 kubectl logs -n kube-system kube-flannel-ds-<pod-id> # 常见原因:防火墙未关闭或内核路由问题 ``` 5. **CentOS 7 内核兼容性** - 建议升级内核至 4.x+: ```bash sudo yum install -y kernel-lt sudo reboot ``` --- ### **常用命令参考** ```bash # 重置集群(重新安装时使用) sudo kubeadm reset -f sudo rm -rf /etc/cni/net.d ~/.kube/config # 查看 kubelet 日志 journalctl -xeu kubelet # 强制删除卡在 Terminating 状态的 Pod kubectl delete pod <pod-name> --grace-period=0 --force ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值