找回密码
 立即注册
首页 业界区 业界 [虚拟化/云原生] Kubernetes 安装部署指南

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

后沛若 2025-6-2 23:52:56
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
1.png

2.png

3.png

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


  • kubeEdge : 1.16.6 [x/本文不涉及]
机器配置


  • 系统配置


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


  • OS


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


  • hosts
  1. vim /etc/hosts
  2. 172.16.1.72 k8s-master-1 k8s-slave-1
复制代码
1台机器 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
  1. # 设置当前机器的hostname
  2. hostnamectl set-hostname k8s-master-1       
  3. # 查看当前机器hostname
  4. hostname
复制代码
4.png


  • ping 一下
  1. ping k8s-master-1
  2. 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 初始准备 [master + node]

设置 hostname
  1. # 设置当前机器的hostname
  2. hostnamectl set-hostname k8s-master-1
  3. # 查看当前机器hostname
  4. hostname
复制代码
基础依赖包的安装
  1. # 基础依赖包安装
  2. yum -y install wget vim net-tools ntpdate bash-completion
复制代码
系统时钟同步
  1. # 向阿里云服务器同步时间
  2. ntpdate time1.aliyun.com
  3. # 删除本地时间并设置时区为上海
  4. rm -rf /etc/localtime
  5. ln -s /usr/share/zoneinfo/Asia/Shanghai /etc/localtime
  6. # 查看时间
  7. date -R || date
复制代码
关闭防火墙、selinux
  1. systemctl stop firewalld
  2. systemctl disable firewalld
  3. # 临时关闭
  4. setenforce 0
  5. # 永久关闭
  6. sed -i 's/enforcing/disabled/' /etc/selinux/config
复制代码
关闭 swap

K8S 不能使用swap
  1. # 临时关闭Swap
  2. swapoff -a
  3. # 修改 /etc/fstab 删除或者注释掉swap的挂载,可永久关闭swap
  4. sed -i '/swap/s/^/#/' /etc/fstab
  5. # 修改完后我们检测一下,看最后一行swap 都是0 就成功了
  6. free -m
  7. #----------------start----------------------
  8. total used free shared buff/cache available
  9. Mem: 1837 721 69 10 1046 944
  10. Swap: 0 0 0
  11. #-----------------end---------------------
复制代码
网桥过滤
  1. # 网桥过滤
  2. vim /etc/sysctl.conf
  3. net.bridge.bridge-nf-call-ip6tables = 1
  4. net.bridge.bridge-nf-call-iptables = 1
  5. net.bridge.bridge-nf-call-arptables = 1
  6. net.ipv4.ip_forward=1
  7. net.ipv4.ip_forward_use_pmtu = 0
  8. # 生效命令
  9. sysctl --system
  10. # 查看效果
  11. sysctl -a|grep "ip_forward"
复制代码
开启ipvs


  • 开启ipvs


  • kubernetes 1.8版本开始,新增了kube-proxy对ipvs的支持,性能和追踪问题比iptable强
此步骤为选填项,如果不执行那么默认使用iptables
  1. # 安装IPVS
  2. yum -y install ipset ipvsdm
  3. # 编译ipvs.modules文件
  4. vi /etc/sysconfig/modules/ipvs.modules
  5. # 文件内容如下
  6. #!/bin/bash
  7. modprobe -- ip_vs
  8. modprobe -- ip_vs_rr
  9. modprobe -- ip_vs_wrr
  10. modprobe -- ip_vs_sh
  11. modprobe -- nf_conntrack_ipv4
  12. # 赋予权限并执行
  13. chmod 755 /etc/sysconfig/modules/ipvs.modules && bash /etc/sysconfig/modules/ipvs.modules &&lsmod | grep -e ip_vs -e nf_conntrack_ipv4
  14. # 重启电脑,检查是否生效
  15. reboot
  16. lsmod | grep ip_vs_rr
复制代码
修改hosts


  • 修改hosts文件
添加 dns 解析
  1. vim /etc/hosts
  2.        
  3. 172.16.1.72 k8s-master-1 k8s-slave-1
复制代码
1.2.2 Docker 安装 [master + node]

docker 换源
  1. # 安装yum utils ( 安装 yum-config-manager 命令 )
  2. yum install -y yum-utils
  3. # yum docker-ce config 换源
  4. #yum-config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo
  5. yum-config-manager --add-repo http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
  6. ls -la /etc/yum.repos.d/
复制代码
安装docker


  • 安装 docker
  1. # 安装 docker (亦可指定版本)
  2. yum -y install docker-ce docker-ce-cli containerd.io
  3. # 启动docker, enable 为必须,k8s会检测docker.service
  4. systemctl enable docker && systemctl start docker
复制代码

  • 查验 docker 版本
  1. docker version
复制代码
配置镜像加速

[code]# 创建docker目录mkdir -p /etc/docker# 设置镜像源, exec-opts必须指定否则k8s启动报错(cgroup、systemd)tee /etc/docker/daemon.json
您需要登录后才可以回帖 登录 | 立即注册