Products
GG网络技术分享 2026-01-20 07:41 0
不忍卒读。 先说一句心里话:Kubernetes 那玩意儿啊,真是让人又爱又恨——爱它的强大,恨它的繁琐。下面这篇乱七八糟、 情绪化满满、甚至带点噪音的“全程解密”指南,就是要把那层层迷雾撕得粉碎,让你在哭笑不得中还Neng把集群装好。
先别急着打开终端,先把自己的心态调到“Neng忍受无尽报错”的模式。 未来可期。 下面这几步是必须踩过的坑:

systemctl stop firewalld ran后 systemctl disable firewalld——别问为什么经验告诉我们防火墙就是灾难之源。setenforce 0 + 把 /etc/selinux/config 里的 SELINUX=enforcing 改成 disabled。swapoff -a, 把 /etc/fstab 里suo有 swap 行删掉,要不然 kubelet 会狂怼你。/etc/hosts 加上 IP‑hostname 对应。net.bridge.bridge-nf-call-iptables = 1 net.bridge.bridge-nf-call-ip6tables = 1 net.ipv4.ip_forward = 1 vm.swappiness = 0 vm.overcommit_memory = 1
这里推荐 Docker 20.10.x 系列, 主要原因是文档Zui全,社区Zui热。若想玩点轻量级,可yi试试 cri‑dockerd huo者 CRI‑O,但记得先kan官方兼容性表。
alert 来提醒自己别忘了喝水。Kubeadm 是官方推荐的“一键装”,但它并不是魔法棒,需要配合正确的镜像仓库和网络环境。如guo你在国内,那就把 /etc/docker/daemon.json 改成阿里云huo者华为云加速地址。ran后:
yum install -y kubeadm kubelet kubectl --disableexcludes=kubernetes systemctl enable --now kubelet
Kubelet 的启动日志:
Starting kubelet... Swap is enabled; please disable swap. failed to run Kubelet: misconfiguration: kube-proxy is not running. ...
kan到这些报错?先深呼吸,再检查上面的步骤是否漏掉了什么。
Kubeadm init
kubeadm init \ --apiserver-advertise-address=$ \ --pod-network-cidr=10.244.0.0/16 \ --service-cidr=10.96.0.0/12 \ --image-repository=registry.cn-hangzhou.aliyuncs.com/google_containers \ --kubernetes-version=v1.27.3
没眼看。 注意!如guo你用了 Flannel 那么上面的 pod‑network‑cidr 必须对应, 否则 Dashboard 会一直报错 “No routes found for service”.
mkdir -p $HOME/.kube sudo cp -i /etc/kubernetes/admin.conf $HOME/.kube/config sudo chown $:$ $HOME/.kube/config kubectl get nodes # 此时应该只Nengkan到 master 自己一台
*如guo你是个极客,还可yi尝试 Cal ICU你。 ico 或 Cilium,这里就不展开了*
kubectl apply -f https://raw.githubusercontent.com/coreos/flannel/master/Documentation/kube-flannel.yml # 等待几秒钟……ran后再跑: kubectl get pods -n kube-system # kankan flannel 是否 Running
来一波... ⚠️ 如guo发现 flannel‑cni‑pod 一直 CrashLoopBackOff,那可Neng是主要原因是之前忘记关 swap!赶紧回去检查下你的 /etc/fstab。 🌀 提醒:K8s 的错误信息往往隐藏在几行日志后面需要耐心翻找。
Kubeadm 在 Master 初始化完毕后会给出类似下面的 token 命令, 正宗。 把它复制到每台 Node 上施行即可:
kubeadm join 10.0.2.21:6443 --token abcdef.0123456789abcdef \
--discovery-token-ca-cert-hash sha256: a1b2c3d4e5f6...
。加入成功后用 kubectl get nodes Nengkan到suo有节点状态为 Ready。
这玩意儿... 真的!每次 Node 卡住不加入,我dou要怀疑人生——到底是网卡问题还是 DNS 配置问题?于是我跑遍了公司每一个角落找网线, 一度以为自己快要被 K8s 吞噬掉了……不过到头来发现原来是主要原因是 /etc/resolv.conf 中只有本机 DNS,而没有外部 DNS 导致无法解析镜像仓库域名!哎呀,这种事真是太常见了。
kubectl apply -f https://raw.githubusercontent.com/kubernetes/dashboard/v2.7.0/aio/deploy/recommended.yaml # 创建 admin 用户并获取 token: catadmin-user.yaml apiVersion: v1 kind: ServiceAccount metadata: name: admin-user namespace: kubernetes-dashboard --- apiVersion: rbac.authorization.k8s.io/v1 kind: ClusterRoleBinding metadata: name: admin-user-binding roleRef: apiGroup: rbac.authorization.k8s.io kind: ClusterRole name: cluster-admin subjects: - kind: ServiceAccount name: admin-user namespace: kubernetes-dashboard EOF kubectl apply -f admin-user.yaml kubectl -n kubernetes-dashboard create token admin-user # 把返回值粘贴进去登录即可。
Dashboard 默认tong过 ClusterIP 暴露, 如需外网访问,请改成 NodePort 或 Ingress 并Zuo好平安加固!否则会被黑客当作跳板…,我懵了。
| # 排名 | 工具名称 | 主要功Neng | 适用场景 | ||||
|---|---|---|---|---|---|---|---|
| 1 | Kubeadm+ | 一键初始化集群,自动拉取镜像 | 新手入门 + 小规模实验环境 | ||||
| 2 | Kubespray | 多节点批量部署,可自定义组件版本 | 生产级集群 + 多 AZ 部署 | ||||
| 3 | Kops | 专注云原生自动化创建 EC2 集群 | 公有云 AWS 大规模部署 | ||||
| 4 | Tilt + Skaffold | 本地快速迭代开发、热加载代码变geng | 开发者工作站、小型微服务实验室 ⚠️ 注意:以上对比仅供参考,请自行验证兼容性与平安性!⚠️ | ||||
😜 好啦,好啦,我Yi经把从零开始装 K8s 的血泪史全dou倒出来了。如guo你Yi经跟着我一步一步走完, 也许会发现自己的脑细胞Yi经被「etcd」和「coredns」消耗殆尽, 共勉。 但至少现在你拥有了一套可yi跑容器的大平台——恭喜 🎉!下面再抛几个“超实用”但又wan全没必要的小建议:
再说说提醒一下 新手们Zui怕的是"不知道从哪儿找答案". suo以请务必收藏此页,bing且随时打开搜索引擎敲关键字——主要原因是 K8s 的世界永远比文档geng疯狂、geng不可预知。祝大家玩得开心,也祝你的集群永不 CrashLoopBackOff!🖤,出道即巅峰。
本文纯属个人经验分享,不构成ren何技术支持。如有错误欢迎指正; 换个思路。 如因本文导致生产环境崩溃,本人概不负责。😂
Demand feedback