在虚拟机上部署k8s

最近在学k8s,记录一下学习经验。

k8s至少需要3台机才能算集群,故做以下分配:

IPhostname作用性能系统
192.168.124.11master主节点2核4Grocky linux 9.5
192.168.124.14worker01从节点14核4grocky linux 9.5
192.168.124.16worker02从节点24核4grocky linux 9.5

总部署思路

  1. 三台机器全部统一基础环境(关闭swap、关闭防火墙、同步时间、安装Containerd、kubeadm、kubelet、kubectl)
  2. 在192.168.124.11上初始化集群kubeadm init
  3. 装网络插件(比如Flannel)保证Pod通信1
  4. 92.168.124.14 和 192.168.124.16作为Worker节点join进来

🧱 一、系统初始化(所有节点)

1.1 关闭防火墙与 SELinux

sudo systemctl disable --now firewalld
sudo setenforce 0
sudo sed -i 's/^SELINUX=.*/SELINUX=disabled/' /etc/selinux/config

1.2 关闭 Swap

sudo swapoff -a
sudo sed -i '/swap/d' /etc/fstab

1.3 时间同步

sudo dnf install -y chrony
sudo systemctl enable --now chronyd
timedatectl set-timezone Asia/Shanghai

1.4 修改内核参数

cat <<EOF | sudo tee /etc/modules-load.d/k8s.conf
br_netfilter
overlay
EOF

modprobe br_netfilter
modprobe overlay

cat <<EOF | sudo tee /etc/sysctl.d/k8s.conf
net.bridge.bridge-nf-call-iptables  = 1
net.ipv4.ip_forward                 = 1
net.bridge.bridge-nf-call-ip6tables = 1
EOF

sysctl --system

🧰 二、安装 containerd

2.1 安装并配置

sudo dnf install -y containerd
sudo mkdir -p /etc/containerd
containerd config default | sudo tee /etc/containerd/config.toml
sudo sed -i 's/SystemdCgroup = false/SystemdCgroup = true/' /etc/containerd/config.toml
sudo systemctl enable --now containerd

🔧 三、安装 Kubernetes 组件

3.1 添加 YUM 源

cat <<EOF | sudo tee /etc/yum.repos.d/kubernetes.repo
[kubernetes]
name=Kubernetes
baseurl=https://mirrors.aliyun.com/kubernetes/yum/repos/kubernetes-el7-x86_64/
enabled=1
gpgcheck=0
EOF

3.2 安装 kubeadm, kubelet, kubectl

sudo dnf install -y kubelet-1.29.2 kubeadm-1.29.2 kubectl-1.29.2
sudo systemctl enable --now kubelet

🚀 四、初始化 Master 节点

sudo kubeadm init \
  --apiserver-advertise-address=192.168.0.100 \
  --pod-network-cidr=192.168.0.0/16 \
  --service-cidr=10.96.0.0/12 \
  --kubernetes-version=1.29.2

配置 kubeconfig(master 节点)

mkdir -p $HOME/.kube
sudo cp /etc/kubernetes/admin.conf $HOME/.kube/config
sudo chown $(id -u):$(id -g) $HOME/.kube/config

📡 五、部署 Flannel 网络插件

kubectl apply -f https://github.com/flannel-io/flannel/releases/latest/download/kube-flannel.yml

🧩 六、加入 Worker 节点

Master 节点生成 Join 命令

kubeadm token create --print-join-command

Worker 节点执行 Join

sudo kubeadm join <master-ip>:6443 --token <token> --discovery-token-ca-cert-hash sha256:<hash>

💾 七、存储与仪表盘(可选)

部署 NFS Provisioner 示例

kubectl apply -f https://raw.githubusercontent.com/kubernetes-sigs/nfs-subdir-external-provisioner/master/deploy/kubernetes/deployment.yaml

安装 Dashboard

kubectl apply -f https://raw.githubusercontent.com/kubernetes/dashboard/v2.7.0/aio/deploy/recommended.yaml

🔐 八、安全与监控建议

  • 使用 kube-bench 进行安全加固检查;
  • 安装 Prometheus + Grafana 进行监控;
  • 使用 OPA/Gatekeeper 实现策略控制。

✅ 九、验证集群状态

kubectl get nodes
kubectl get pods -A

🧠 总结

组件工具描述
容器运行时containerd替代 Docker
安装方式kubeadm官方推荐
网络插件Flannel配置简单,容易上手
存储方案NFS / Longhorn企业持久化方案
监控工具Prometheus集群可视化监控
安全基线kube-bench企业级合规工具
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值