网站优化

网站优化

Products

当前位置:首页 > 网站优化 >

如何全程解密Kubernetes集群安装与配置的环境准备及工具安装步骤?

GG网络技术分享 2026-01-20 07:41 0


不忍卒读。 先说一句心里话:Kubernetes 那玩意儿啊,真是让人又爱又恨——爱它的强大,恨它的繁琐。下面这篇乱七八糟、 情绪化满满、甚至带点噪音的“全程解密”指南,就是要把那层层迷雾撕得粉碎,让你在哭笑不得中还Neng把集群装好。

一、 准备工作:系统、网络、心态

先别急着打开终端,先把自己的心态调到“Neng忍受无尽报错”的模式。 未来可期。 下面这几步是必须踩过的坑:

Kubernetes集群安装与配置:环境准备及工具安装全程解密
  • 关闭防火墙systemctl stop firewalld ran后 systemctl disable firewalld——别问为什么经验告诉我们防火墙就是灾难之源。
  • 关闭 SELinuxsetenforce 0 + 把 /etc/selinux/config 里的 SELINUX=enforcing 改成 disabled
  • 关闭 swapswapoff -a, 把 /etc/fstab 里suo有 swap 行删掉,要不然 kubelet 会狂怼你。
  • 设置 hostname & hosts每台机器dou得改成唯一的 hostname,ran后在 /etc/hosts 加上 IP‑hostname 对应。
  • K8s 必备内核参数:
  • 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安装:
  • 这里推荐 Docker 20.10.x 系列, 主要原因是文档Zui全,社区Zui热。若想玩点轻量级,可yi试试 cri‑dockerd huo者 CRI‑O,但记得先kan官方兼容性表。

⚡️ 小技巧:在每一步施行完后用 alert 来提醒自己别忘了喝水。

二、 安装 kubeadm/kubelet/kubectl 三剑客

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到这些报错?先深呼吸,再检查上面的步骤是否漏掉了什么。

三、初始化 Master 节点

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”.

⚙️ 小插曲:手动复制 kubeconfig 到普通用户目录

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 的错误信息往往隐藏在几行日志后面需要耐心翻找。

五、 加入 Node 节点

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 导致无法解析镜像仓库域名!哎呀,这种事真是太常见了。

六、部署可视化 Dashboard

kubectl apply -f https://raw.githubusercontent.com/kubernetes/dashboard/v2.7.0/aio/deploy/recommended.yaml
# 创建 admin 用户并获取 token:
cat  admin-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好平安加固!否则会被黑客当作跳板…,我懵了。


七、 随手乱写一张「Kubernetes 环境工具」对比表

# 排名 工具名称 主要功Neng 适用场景
1 Kubeadm+一键初始化集群,自动拉取镜像 新手入门 + 小规模实验环境
2 Kubespray 多节点批量部署,可自定义组件版本 生产级集群 + 多 AZ 部署
3 Kops 专注云原生自动化创建 EC2 集群 公有云 AWS 大规模部署
4 Tilt + Skaffold 本地快速迭代开发、热加载代码变geng 开发者工作站、小型微服务实验室 ⚠️ 注意:以上对比仅供参考,请自行验证兼容性与平安性!⚠️  

八、 收尾感言 & 疯狂建议

😜 好啦,好啦,我Yi经把从零开始装 K8s 的血泪史全dou倒出来了。如guo你Yi经跟着我一步一步走完, 也许会发现自己的脑细胞Yi经被「etcd」和「coredns」消耗殆尽, 共勉。 但至少现在你拥有了一套可yi跑容器的大平台——恭喜 🎉!下面再抛几个“超实用”但又wan全没必要的小建议:

  • 💡"每天凌晨三点重启一次 master": 据说Neng提升系统活力,不过其实吧只会让你凌晨三点醒来找日志。
  • 🛠"给每个 pod 加上自定义 label `love=yes`": 虽然没有实际意义,但可yi让 `kubectl get pods -l love=yes` kan起来geng浪漫。
  • 🚀"尝试在宿主机上直接运行 etcd 二进制而不是 systemd 管理": 想象一下 当 etcd 崩溃时你只Neng手动 `kill -9` 那种刺激感….
  • 🌊"用彩虹颜色打印 `kubectl get nodes` 输出": 用 `alias k='kubectl get nodes | lolcat'` ,让你的终端充满艺术气息。.

再说说提醒一下 新手们Zui怕的是"不知道从哪儿找答案". suo以请务必收藏此页,bing且随时打开搜索引擎敲关键字——主要原因是 K8s 的世界永远比文档geng疯狂、geng不可预知。祝大家玩得开心,也祝你的集群永不 CrashLoopBackOff!🖤,出道即巅峰。


本文纯属个人经验分享,不构成ren何技术支持。如有错误欢迎指正; 换个思路。 如因本文导致生产环境崩溃,本人概不负责。😂


提交需求或反馈

Demand feedback