最近在学k8s,记录一下学习经验。
k8s至少需要3台机才能算集群,故做以下分配:
| IP | hostname | 作用 | 性能 | 系统 |
|---|---|---|---|---|
| 192.168.124.11 | master | 主节点 | 2核4G | rocky linux 9.5 |
| 192.168.124.14 | worker01 | 从节点1 | 4核4g | rocky linux 9.5 |
| 192.168.124.16 | worker02 | 从节点2 | 4核4g | rocky linux 9.5 |
总部署思路
- 三台机器全部统一基础环境(关闭swap、关闭防火墙、同步时间、安装Containerd、kubeadm、kubelet、kubectl)
- 在192.168.124.11上初始化集群(
kubeadm init) - 装网络插件(比如Flannel)保证Pod通信1
- 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 | 企业级合规工具 |
5887

被折叠的 条评论
为什么被折叠?



