Kubernetes之kubeadm集群部署篇—系统初始化

文章目录

  • 操作系统初始化配置
    • [1.1 设置主机名](#1.1 设置主机名)
    • [1.2 设置hosts解析主机名](#1.2 设置hosts解析主机名)
    • [1.3 关闭SELinux和防火墙](#1.3 关闭SELinux和防火墙)
    • [1.4 关闭swap](#1.4 关闭swap)
    • [1.5 设置系统参数](#1.5 设置系统参数)
    • [1.6 设置节点间的SSH免密码登录](#1.6 设置节点间的SSH免密码登录)
    • [1.7 配置docker](#1.7 配置docker)

操作系统初始化配置

1.1 设置主机名

根据规划设置主机名 (所有节点)

hostnamectl set-hostname <hostname>

1.2 设置hosts解析主机名

设置/etc/hosts保证主机名能够解析 (所有节点)

# cat /etc/hosts
10.20.17.20 k8s-master
10.20.17.21 k8s-node1
10.20.17.22 k8s-node2

1.3 关闭SELinux和防火墙

所有节点

# 关闭防火墙
systemctl disable firewalld  永久
systemctl stop firewalld   临时


# 关闭selinux
sed -i 's/enforcing/disabled/' /etc/selinux/config  # 永久
setenforce 0  # 临时

1.4 关闭swap

所有节点

swapoff -a  # 临时
sed -ri 's/.*swap.*/#&/' /etc/fstab    # 永久

1.5 设置系统参数

vim /etc/sysctl.conf

net.ipv6.conf.all.disable_ipv6 = 1
net.ipv6.conf.default.disable_ipv6 = 1
net.ipv6.conf.lo.disable_ipv6 = 1

net.ipv4.ip_forward = 1

#iptables透明网桥的实现
# NOTE: kube-proxy 要求 NODE 节点操作系统中要具备 /sys/module/br_netfilter 文件,而且还要设置 bridge-nf-call-iptables=1,如果不满足要求,那么 kube-proxy 只是将检查信息记录到日志中,kube-proxy 仍然会正常运行,但是这样通过 Kube-proxy 设置的某些 iptables 规则就不会工作。

net.bridge.bridge-nf-call-ip6tables = 1
net.bridge.bridge-nf-call-iptables = 1
net.bridge.bridge-nf-call-arptables = 1


# 生效配置
sysctl -p

1.6 设置节点间的SSH免密码登录

所有节点

ssh-keygen -t rsa
ssh-copy-id k8s-master
ssh-copy-id k8s-node1
ssh-copy-id k8s-node2

1.7 配置docker

# vim /etc/docker/daemon.json

{
    "log-driver": "json-file", #容器日志的默认驱动程序(默认为" json-file")
    "insecure-registries": ["http://10.20.17.20"], # 设置私有仓库地址可以设为http
    "registry-mirrors": ["https://zn14eon5.mirror.aliyuncs.com"], # 设置阿里云镜像加速器
    "log-opts": {"max-size":"10m", "max-file":"1"},  # 容器默认日志驱动程序选项
    "exec-opts": ["native.cgroupdriver=systemd"], # 高版本 kubernetes kubeadm 依赖;
    "max-concurrent-downloads": 10, # 设置每个请求的最大并发下载量(默认为3)
    "data-root": "/opt/data/docker", # Docker运行时使用的根路径
    "hosts": ["tcp://0.0.0.0:5000", "unix:///var/run/docker.sock"], # 需要删除docker启动文件:service文件中的 -H fd://(/usr/lib/systemd/system/docker.service)
    "graph": "/opt/data/docker", # 已标记为未来版本弃用,建议 data-root ;
}



{
    "log-driver": "json-file",
    "insecure-registries": ["http://10.20.17.20"],
    "registry-mirrors": ["https://zn14eon5.mirror.aliyuncs.com"],
    "log-opts": {"max-size":"10m", "max-file":"1"},
    "exec-opts": ["native.cgroupdriver=systemd"],
    "max-concurrent-downloads": 10,
    "data-root": "/opt/data/docker",
    "hosts": ["tcp://0.0.0.0:5000", "unix:///var/run/docker.sock"]
}

重启docker

systemctl daemon-reload
systemctl restart docker

如果报错,可执行命令查看原因

dockerd

基本上都是修改这个文件导致的:/etc/docker/daemon.json

如果依然无法启动,可查看系统日志,查看详细报错

tail -f /var/log/messages
相关推荐
对许13 分钟前
FusionInsight MRS云原生数据湖
云原生·fusioninsight·mrs
桂月二二1 小时前
基于WebAssembly的云原生运行时:重新定义轻量化微服务架构
云原生·架构·wasm
阿里云云原生2 小时前
深度测评国产 AI 程序员,在 QwQ 和满血版 DeepSeek 助力下,哪些能力让你眼前一亮?
云原生
张晋涛4 小时前
KCD 北京站丨云原生与AI的双向奔赴,超强Speakers阵容公开
云原生·aigc·线下活动
梦游钓鱼5 小时前
在window终端创建docker容器的问题
运维·docker·容器
StableAndCalm6 小时前
什么是zookeeper
分布式·zookeeper·云原生
SelectDB技术团队6 小时前
云原生时代的架构革新,Apache Doris 存算分离如何实现弹性与性能双重提升
大数据·数据库·云原生·doris·存算分离
海鸥818 小时前
在 k8s中查看最大 CPU 和内存的极限
linux·容器·kubernetes
rocksun9 小时前
使用GITOPS简化KUBERNETES实施:最佳实践
kubernetes