后沛若 发表于 2025-6-2 23:52:56

[虚拟化/云原生] Kubernetes 安装部署指南

0 序


[*]先说我个人对当前ICT行业技术演进趋势的最大定论:大数据/云计算(云原生)/AI时代,K8s/docker在现在和未来都必将是云里头最重要的基础设施之一。
[*]docker 自己玩了很久;在公司里,k8s集群、rancher也用了几年了。
[*]docker / docker compose / k8s的架构、设计理念等,也均有所涉猎。
感兴趣的朋友,可拉到文章底部【推荐文献】查阅。


[*]唯一的遗憾是,自己从没有动手安装部署过 k8s。
[*]这不,最近在研究云边协同架构,不得不倒逼着我要亲手来安装一次 k8s 了。
目前已安装 ok 了,本文做个完整的总结。
1 Kubernetes 安装部署指南

1.1 前置工作与注意事项

部署规划


[*]服务器规划
IPRoleHostnameresourceRemark172.16.1.72master 和 node2c , 4g, 10GB(个人建议至少2c,2g)k8s-master-1资源有限,此台机器同时作为 master 和 node 节点

[*]版本


[*]cpu : x86-64
[*]os : centos 7.9
[*]docker : 26.1.4
也可换为其他的容器运行时(Container runtime)


[*]k8s : 1.25.0 ≥ 1.24.0 (docker 涉及适配 CRI-O)
安装过程中涉及安装的3大命令模块: kubelet / kubeadm / kubectl
Kubernetes 架构 - kubernetes.io



from https://cloud.tencent.com/developer/article/1525487


[*]kubeEdge : 1.16.6
机器配置


[*]系统配置


[*]要求:2c 2g 20g 以上
[*]cpu 至少为2核,否则k8s初始化无法成功。
[*]内存 建议master节点内存给4g
操作系统


[*]OS


[*]CENTOS 7.9
[*]不同版本的系统对k8s影响较大,具体看实际情况而定。 有的还需要更新系统内核
hosts / hostname


[*]hosts
vim /etc/hosts

172.16.1.72 k8s-master-1 k8s-slave-11台机器 1行 host 配置


[*]hostname配置
○ 每台机器都需配置,这里我们以 172.16.1.72 为例,我们需要设置hostname为 “k8s-master-1” ,与hosts 相匹配。
○ 如果不配置hostname 默认会配置为 localhost.localdomain ,k8s 运行时会报错Error getting node" err="node \"localhost.localdomain\" not found
# 设置当前机器的hostname
hostnamectl set-hostname k8s-master-1       

# 查看当前机器hostname
hostname

[*]ping 一下
ping k8s-master-1
ping k8s-slave-1其他注意事项


[*]k8s安装有多种方式


[*]使用minikube安装单节点集群,用于测试
[*]采用工具kubeadm – 我们使用的这种方式(开发环境,机器比较少(几十台以下))
[*]使用kubespray, google官方提供的工具
[*]全手动: 二进制安装(运维)
[*]全自动安装: rancher、kubesphere (大型生产环境,百台,万台机器)


[*]k8s health会依赖一些端口,为了不出现网络问题,我们在虚拟机(master)中开放以下端口:


[*]6443 主要
[*]2379
[*]2380


[*]kubeadm


[*]ca 证书:帮助我们安装的ca 证书时限是一年,所以不推荐正式环境使用,或需要手动配置ca证书。
1.2 安装步骤

1.2.1 初始准备

设置 hostname

# 设置当前机器的hostname
hostnamectl set-hostname k8s-master-1

# 查看当前机器hostname
hostname基础依赖包的安装

# 基础依赖包安装
yum -y install wget vim net-tools ntpdate bash-completion系统时钟同步

# 向阿里云服务器同步时间
ntpdate time1.aliyun.com

# 删除本地时间并设置时区为上海
rm -rf /etc/localtime
ln -s /usr/share/zoneinfo/Asia/Shanghai /etc/localtime

# 查看时间
date -R || date关闭防火墙、selinux

systemctl stop firewalld
systemctl disable firewalld

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

K8S 不能使用swap
# 临时关闭Swap
swapoff -a

# 修改 /etc/fstab 删除或者注释掉swap的挂载,可永久关闭swap
sed -i '/swap/s/^/#/' /etc/fstab

# 修改完后我们检测一下,看最后一行swap 都是0 就成功了
free -m
#----------------start----------------------
total used free shared buff/cache available
Mem: 1837 721 69 10 1046 944
Swap: 0 0 0
#-----------------end---------------------网桥过滤

# 网桥过滤
vim /etc/sysctl.conf

net.bridge.bridge-nf-call-ip6tables = 1
net.bridge.bridge-nf-call-iptables = 1
net.bridge.bridge-nf-call-arptables = 1
net.ipv4.ip_forward=1
net.ipv4.ip_forward_use_pmtu = 0

# 生效命令
sysctl --system

# 查看效果
sysctl -a|grep "ip_forward"开启ipvs


[*]开启ipvs


[*]kubernetes 1.8版本开始,新增了kube-proxy对ipvs的支持,性能和追踪问题比iptable强
此步骤为选填项,如果不执行那么默认使用iptables
# 安装IPVS
yum -y install ipset ipvsdm

# 编译ipvs.modules文件
vi /etc/sysconfig/modules/ipvs.modules
# 文件内容如下
#!/bin/bash
modprobe -- ip_vs
modprobe -- ip_vs_rr
modprobe -- ip_vs_wrr
modprobe -- ip_vs_sh
modprobe -- nf_conntrack_ipv4

# 赋予权限并执行
chmod 755 /etc/sysconfig/modules/ipvs.modules && bash /etc/sysconfig/modules/ipvs.modules &&lsmod | grep -e ip_vs -e nf_conntrack_ipv4

# 重启电脑,检查是否生效
reboot
lsmod | grep ip_vs_rr修改hosts


[*]修改hosts文件
添加 dns 解析
vim /etc/hosts
       
172.16.1.72 k8s-master-1 k8s-slave-11.2.2 Docker 安装

docker 换源

# 安装yum utils ( 安装 yum-config-manager 命令 )
yum install -y yum-utils

# yum docker-ce config 换源
#yum-config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo
yum-config-manager --add-repo http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo

ls -la /etc/yum.repos.d/安装docker


[*]安装 docker
# 安装 docker (亦可指定版本)
yum -y install docker-ce docker-ce-cli containerd.io

# 启动docker, enable 为必须,k8s会检测docker.service
systemctl enable docker && systemctl start docker

[*]查验 docker 版本
docker version配置镜像加速

# 创建docker目录mkdir -p /etc/docker# 设置镜像源, exec-opts必须指定否则k8s启动报错(cgroup、systemd)tee /etc/docker/daemon.json
页: [1]
查看完整版本: [虚拟化/云原生] Kubernetes 安装部署指南