centsos7修改主机名 [root@st152 ~]# cat /etc/hostname

本文介绍了在CentOS7系统中两种修改服务器主机名的方法。一种是临时修改,使用hostname命令;另一种是永久修改,使用hostnamectl set-hostname命令。通过这两种方式,用户可以根据实际需求选择合适的主机名修改方案。

CentOS7修改服务器主机名方法
CentOS7下修改主机名
第一种:hostname 主机名
01.hostname 主机名称

  1. <pre name="code" class="html">hostname xxx  
<pre name="code" class="html">hostname xxx
 
 

这种方式,只能修改临时的主机名,当重启机器后,主机名称又变回来了。 centos7修改主机名和7以下的版本都不一样,这就搞得很懵逼了,度娘还是很强大滴。 第二种:hostnamectl set-hostname xxx

命令行中输入
  1. hostnamectl set-hostname xxx  
hostnamectl set-hostname xxx

01.hostnamectl set-hostname xxx 使用这种方式修改,可以永久性的修改主机名称!  

[root@st152 ~]# cat /etc/hostname
st152 

 

   

         

 

转载于:https://www.cnblogs.com/gaoyuechen/p/7663747.html

<think>我们正在解决Kubernetes节点上`NetworkPluginNotReady`问题,具体表现为`/etc/cni/net.d`目录为空。根据用户提供的引用和上下文,我们需要为节点配置CNI网络插件(如Calico或Flannel)的配置文件。 ### 解决方案步骤: #### 1. **确认CNI插件安装状态** 首先,确保已经安装了CNI插件。对于Calico,通常需要部署相应的YAML文件;对于Flannel,同样需要部署其YAML文件。如果还没有部署,请先部署网络插件。 **部署Calico网络插件**(参考引用[3]中的配置示例): ```bash kubectl apply -f https://docs.projectcalico.org/manifests/calico.yaml ``` **部署Flannel网络插件**: ```bash kubectl apply -f https://raw.githubusercontent.com/flannel-io/flannel/master/Documentation/kube-flannel.yml ``` #### 2. **检查CNI配置文件生成** 部署网络插件后,插件会在每个节点的`/etc/cni/net.d`目录下生成配置文件。如果目录仍然为空,可能是由于以下原因: - 网络插件的Pod没有正常运行 - kubelet配置的CNI目录不正确 **检查网络插件Pod状态**: ```bash kubectl get pods -n kube-system ``` 确保所有Pod(尤其是网络插件相关的Pod)都处于`Running`状态。 #### 3. **手动创建CNI配置文件(如果插件未自动生成)** 如果网络插件Pod已经运行,但`/etc/cni/net.d`目录仍然为空,可以尝试手动创建配置文件。以下是一个Calico配置文件的示例(参考引用[3]): ```bash sudo mkdir -p /etc/cni/net.d sudo cat <<EOF > /etc/cni/net.d/10-calico.conflist { "name": "k8s-pod-network", "cniVersion": "0.3.0", "plugins": [ { "type": "calico", "log_level": "info", "datastore_type": "kubernetes", "nodename": "$(hostname)", # 使用当前节点的主机名 "mtu": 1440, "ipam": { "type": "calico-ipam" }, "policy": { "type": "k8s" }, "kubernetes": { "kubeconfig": "/etc/cni/net.d/calico-kubeconfig" } }, { "type": "portmap", "snat": true, "capabilities": {"portMappings": true} } ] } EOF ``` 注意:这个配置文件依赖于`calico-kubeconfig`文件,通常由Calico插件自动生成。如果手动创建,需要确保该文件存在且内容正确。 #### 4. **检查kubelet配置** kubelet的配置中需要指定CNI的配置目录。默认情况下,kubelet会使用`/etc/cni/net.d`。可以通过以下命令检查kubelet的配置: ```bash ps aux | grep kubelet | grep cni ``` 应该能看到类似`--cni-conf-dir=/etc/cni/net.d`的参数。如果没有,需要修改kubelet的启动参数(通常在`/etc/systemd/system/kubelet.service.d/10-kubeadm.conf`中),添加: ``` --cni-conf-dir=/etc/cni/net.d \ ``` #### 5. **重启kubelet服务** 修改配置后,重启kubelet服务使配置生效: ```bash sudo systemctl daemon-reload sudo systemctl restart kubelet ``` #### 6. **验证网络插件状态** 等待一段时间后,再次检查节点状态: ```bash kubectl get nodes ``` 如果网络插件配置成功,节点的状态应该变为`Ready`。 同时检查`/etc/cni/net.d`目录下是否有配置文件: ```bash ls /etc/cni/net.d/ ``` ### 可能遇到的问题及解决方案: - **网络插件Pod无法启动**:检查节点资源(如CPU、内存)是否充足,以及镜像拉取是否成功(特别是国内环境可能需要镜像加速)。 - **配置文件权限问题**:确保`/etc/cni/net.d`目录及其中的配置文件对kubelet进程可读(通常kubelet以root运行,所以问题不大)。 - **CNI插件二进制文件缺失**:确保CNI插件的二进制文件已安装到`/opt/cni/bin`目录下。网络插件的YAML文件中通常会通过hostPath挂载,但需要确保主机上存在该目录。 ### 总结: `/etc/cni/net.d`目录为空表明Kubernetes节点上缺少CNI网络插件的配置文件。通过部署网络插件(Calico或Flannel)并确保其Pod正常运行,通常会自动生成这些配置文件。如果未能自动生成,则需手动创建配置文件并检查kubelet配置。最后重启kubelet服务使配置生效。 §§相关问题§§ 1. 如何为Kubernetes集群选择适合的CNI网络插件? 2. Calico网络插件的安装和配置细节有哪些? 3. 如何调试Kubernetes节点处于NotReady状态的问题?</think>### 解决 Kubernetes 节点 `/etc/cni/net.d` 目录为空导致的 NetworkPluginNotReady 问题 #### 一、问题诊断 1. **核心症状**: - `crictl info` 显示 `NetworkPluginNotReady` 错误 - `/etc/cni/net.d` 目录为空(无 CNI 配置文件) - 节点状态为 `NotReady` 2. **根本原因**: - CNI 网络插件(Calico/Flannel)未正确部署或初始化失败 - kubelet 无法加载网络配置 - 可能伴随容器运行时(containerd/cri-dockerd)配置问题[^5] --- #### 二、解决方案(分步操作) ##### 步骤 1:验证网络插件部署状态 ```bash kubectl get pods -n kube-system -l k8s-app=calico-node # 对于 Calico # 或 kubectl get pods -n kube-system -l app=flannel # 对于 Flannel ``` - ✅ 正常状态:所有 Pod 应为 `Running` - ❌ 异常状态:Pod 处于 `CrashLoopBackOff` 或 `Init:Error` ##### 步骤 2:手动创建 CNI 配置文件(紧急修复) 根据引用[3]创建 Calico 配置: ```bash sudo mkdir -p /etc/cni/net.d sudo cat <<EOF > /etc/cni/net.d/10-calico.conflist { "name": "k8s-pod-network", "cniVersion": "0.3.0", "plugins": [ { "type": "calico", "log_level": "info", "datastore_type": "kubernetes", "nodename": "$(hostname)", # 自动获取当前节点名 "mtu": 1440, "ipam": { "type": "calico-ipam" }, "policy": { "type": "k8s" }, "kubernetes": { "kubeconfig": "/etc/cni/net.d/calico-kubeconfig" } }, { "type": "portmap", "snat": true, "capabilities": {"portMappings": true} } ] } EOF ``` > **注意**:Flannel 用户可参考引用[1]创建 `10-flannel.conflist` ##### 步骤 3:修复 kubeconfig 权限 ```bash sudo chmod 644 /etc/cni/net.d/10-calico.conflist sudo restorecon -Rv /etc/cni/net.d/ # SELinux 环境需要 ``` ##### 步骤 4:重启关键服务 ```bash sudo systemctl restart containerd kubelet sudo systemctl status kubelet -l | grep "cni config" # 正常应显示:"CNI config &{...} initialized" ``` ##### 步骤 5:验证修复效果 ```bash crictl info | grep -A 5 "NetworkReady" # 应显示 "status": true kubectl get nodes -o wide # 节点状态应变为 Ready ``` --- #### 三、根本原因修复 ##### 场景 1:网络插件未正确安装 ```bash # 安装 Calico kubectl apply -f https://docs.projectcalico.org/manifests/calico.yaml # 或安装 Flannel kubectl apply -f https://raw.githubusercontent.com/flannel-io/flannel/master/Documentation/kube-flannel.yml ``` ##### 场景 2:kubelet 配置错误 检查 `/var/lib/kubelet/kubeadm-flags.env`: ```bash sudo grep cni /var/lib/kubelet/kubeadm-flags.env # 应有:--cni-bin-dir=/opt/cni/bin --cni-conf-dir=/etc/cni/net.d ``` ##### 场景 3:节点残留配置(参考引用[2]) ```bash sudo kubeadm reset -f sudo rm -rf /etc/cni/net.d/* /var/lib/kubelet/* sudo ip link delete cni0 2>/dev/null sudo systemctl restart kubelet ``` --- #### 四、预防措施 1. **初始化集群时指定网络 CIDR**: ```bash kubeadm init --pod-network-cidr=192.168.0.0/16 # Calico 默认 # 或 kubeadm init --pod-network-cidr=10.244.0.0/16 # Flannel 默认 ``` 2. **检查 CNI 二进制文件**: ```bash ls /opt/cni/bin/ # 应有 calico, flannel 等文件 ``` 3. **内核参数优化(引用[5])**: ```bash echo -e "net.bridge.bridge-nf-call-iptables=1\nnet.ipv4.ip_forward=1" | sudo tee /etc/sysctl.d/99-kubernetes-cni.conf sudo sysctl --system ``` > **关键提示**:使用 `kubeadm` 时,网络插件必须在 `kubeadm init` 后立即安装,否则会导致 CNI 目录未初始化[^1]。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值