k8s sysctl --system 加载了这个文件 /etc/sysctl.d/k8s.conf 为什么出来参数不对 加载出来得数据是 * Applying /usr/lib/sysctl.d/00-system.conf ... net.bridge.bridge-nf-call-ip6tables = 0 net.bridge.bridge-nf-call-iptables = 0 net.bridge.bridge-nf-call-arptables = 0 Applying /usr/lib/sysctl.d/10-default-yama-scope.conf ... kernel.yama.ptrace_scope = 0 Applying /usr/lib/sysctl.d/50-default.conf ... kernel.sysrq = 16 kernel.core_uses_pid = 1 net.ipv4.conf.default.rp_filter = 1 net.ipv4.conf.all.rp_filter = 1 net.ipv4.conf.default.accept_source_route = 0 net.ipv4.conf.all.accept_source_route = 0 net.ipv4.conf.default.promote_secondaries = 1 net.ipv4.conf.all.promote_secondaries = 1 fs.protected_hardlinks = 1 fs.protected_symlinks = 1 Applying /etc/sysctl.d/99-sysctl.conf ... Applying /etc/sysctl.d/k8s.conf ... net.bridge.bridge-nf-call-ip6tables = 1 net.bridge.bridge-nf-call-iptables = 1 net.ipv4.ip_nonlocal_bind = 1 net.ipv4.ip_forward = 1 vm.swappiness = 0 Applying /etc/sysctl.conf ...
时间: 2024-04-09 13:29:30 浏览: 184
根据您提供的信息,加载了`/etc/sysctl.d/k8s.conf`文件后,输出的参数似乎与期望的不符。可能的原因是:
1. 文件内容错误:请确保`/etc/sysctl.d/k8s.conf`文件中的参数设置正确,每个参数的格式应为`键 = 值`。
2. 文件冲突:可能存在其他配置文件或默认配置与`/etc/sysctl.d/k8s.conf`中的参数产生冲突。在输出中看到了其他配置文件的应用(如`/usr/lib/sysctl.d/10-default-yama-scope.conf`和`/usr/lib/sysctl.d/50-default.conf`),这些文件中的设置可能会覆盖`/etc/sysctl.d/k8s.conf`中的设置。
建议您按照以下步骤进行排查:
1. 检查`/etc/sysctl.d/k8s.conf`文件的内容,确保参数设置正确。
2. 检查其他可能存在冲突的配置文件,特别是与网络和内核相关的配置文件。
3. 可以尝试手动执行所需的sysctl命令来设置参数,而不是依赖于加载配置文件。
如果问题仍然存在,请提供`/etc/sysctl.d/k8s.conf`文件的内容,以及其他可能相关的配置文件,我将尽力提供帮助。
相关问题
k8s ubuntu
### 安装和配置 Kubernetes (k8s) on Ubuntu
#### 准备工作
对于某些Ubuntu版本,由于未安装SELinux,因此无需特别设置`setenforce 0`或修改 `/etc/selinux/config` 文件来禁用 SELinux[^1]。
#### 修改主机名
为了区分集群中的不同节点,建议为每台机器设定特定的主机名。可以通过命令 `hostnamectl set-hostname {k8s-m|k8s-node1|k8s-node2}` 来实现这一操作。这一步骤有助于后续管理和识别各个节点的功能定位。
#### 主机间通信配置
编辑 `/etc/hosts` 文件以确保各节点能够通过名称相互解析IP地址。具体条目如下所示:
```plaintext
10.120.10.190 k8s-master
10.120.10.191 k8s-node1
10.120.10.192 k8s-node2
```
此配置允许集群内部成员之间基于域名的服务发现机制正常运作。
#### 启用IPv4转发并调整iptables规则支持桥接流量
为了让Kubernetes网络插件能正确处理容器间的通讯,需开启系统的IPv4包转发功能,并使iptables可见于网桥设备上的数据流。可通过以下指令完成相应设置:
```bash
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
```
上述脚本会创建一个新的sysctl配置文件用于持久化这些更改,并立即应用它们。
#### 使用官方文档推荐的方式安装Kubernetes组件
考虑到软件源更新频率以及兼容性问题,推荐采用官方指南中提及的方法获取最新稳定版的kubelet、kubectl 和 kubeadm工具。通常涉及添加apt-key, 添加repository URL至/etc/apt/sources.list.d/, 更新APT缓存列表最后再执行实际安装动作。
```bash
sudo apt-get update && sudo apt-get install -y apt-transport-https curl
curl -fsSL https://packages.cloud.google.com/apt/doc/apt-key.gpg | sudo gpg --dearmor -o /usr/share/keyrings/cloud-archive-keyring.gpg
echo "deb [signed-by=/usr/share/keyrings/cloud-archive-keyring.gpg] http://apt.kubernetes.io/ kubernetes-xenial main" | sudo tee /etc/apt/sources.list.d/kubernetes.list
sudo apt-get update
sudo apt-get install -y kubelet kubeadm kubectl
sudo apt-mark hold kubelet kubeadm kubectl
```
这段代码片段展示了如何安全地引入Google Cloud APT仓库密钥环,并从中下载所需二进制文件;同时锁定已安装版本防止意外升级影响稳定性。
centos7 k8s
### 在 CentOS 7 上安装和配置 Kubernetes (k8s)
#### 环境准备
为了确保顺利部署 Kubernetes,在开始之前需确认操作系统已更新至最新版本并重启服务器。
#### 所有节点执行的操作
1. **解压安装包**
如果使用的是离线安装方式,则需要提前准备好所需的安装包,并将其放置于合适位置以便后续操作[^3]。
2. **创建 containerd 配置文件**
创建 `/etc/modules-load.d/containerd.conf` 文件,内容如下:
```bash
modprobe overlay
modprobe br_netfilter
```
3. **使容器运行时配置生效**
使用 `sysctl --system` 命令让上述修改立即生效。
4. **创建 CRI 配置文件**
编辑 `/etc/sysctl.d/99-kubernetes-cri.conf` 文件,添加以下参数以优化网络性能:
```bash
net.bridge.bridge-nf-call-ip6tables = 1
net.bridge.bridge-nf-call-iptables = 1
net.ipv4.ip_forward = 1
```
5. **加载 IPVS 内核模块**
对于 Linux Kernel 版本大于等于 4.19 的系统,可以通过脚本来批量加载必要的IPVS模块。对于低于此版本的情况,请手动指定所需的具体模块名称进行加载。
6. **关闭 Swap 并禁用**
修改 `/etc/fstab` 文件移除 swap 分区条目;也可以临时通过命令 `swapoff -a` 来实现相同效果。
7. **停用防火墙与 SELinux**
这是为了减少不必要的安全策略干扰集群内部通信。建议仅在测试环境中这么做,在生产环境下应谨慎处理网络安全规则。
8. **配置主机名解析表 (`/etc/hosts`)**
添加各节点之间的映射关系,方便跨机器访问。
9. **安装 Containerd 和 CNI 插件**
主节点和工作节点都需要完成这一步骤来支持 Pod 网络功能。
10. **安装 kubectl, kubeadm 和 kubelet**
利用官方提供的yum源或者下载rpm包来进行安装。注意保持这三个组件版本一致。
11. **启动 Kubelet 服务**
启动前可先检查其状态是否正常。即使显示未处于 running 状态也属常见现象,因为此时还没有任何Kubernetes组件被激活[^2]。
```bash
systemctl enable kubelet && systemctl start kubelet && systemctl status kubelet
```
#### Master 节点特定步骤
1. 初始化集群
使用 `kubeadm init` 发起初始化请求,按照提示信息继续下一步直到获得加入指令。
2. 设置认证权限
将管理员账户关联到新建立的上下文中去,从而允许对其进行管理和控制。
#### Work 节点特定步骤
利用 master 提供的 token 加入集群即可成为正式成员参与调度任务。
#### 时间同步设置
考虑到分布式系统的特性,各个节点之间的时间一致性非常重要。因此推荐采用 NTP 协议下的 ntpd 或者 chronyd 实现自动化校准机制[^4]。
阅读全文