当前位置: 首页 > news >正文

Linux系统部署k8s集群

在 Linux 系统上手动配置 Kubernetes (k8s) 集群是一个进阶操作,需要详细掌握 Linux 系统管理和 K8s 架构。以下是基于原生 Kubernetes 的配置流程(以 Ubuntu 22.04 为例):


核心组件及配置顺序

  1. 所有节点准备 → 2. 控制平面节点配置 → 3. 工作节点加入 → 4. 网络插件 → 5. 附加组件

1. 所有节点基础配置(Master+Worker)

# 禁用Swap
sudo swapoff -a
sudo sed -i '/ swap / s/^\(.*\)$/#\1/g' /etc/fstab# 设置主机名解析(以master节点为例)
sudo hostnamectl set-hostname k8s-master
echo "192.168.1.100 k8s-master" | sudo tee -a /etc/hosts
echo "192.168.1.101 k8s-worker1" | sudo tee -a /etc/hosts# 内核参数调优
cat <<EOF | sudo tee /etc/modules-load.d/k8s.conf
br_netfilter
overlay
EOFcat <<EOF | sudo tee /etc/sysctl.d/k8s.conf
net.bridge.bridge-nf-call-ip6tables = 1
net.bridge.bridge-nf-call-iptables = 1
net.ipv4.ip_forward = 1
EOF
sudo sysctl --system# 安装容器运行时(containerd)
sudo apt update
sudo apt 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 restart containerd

2. 控制平面节点安装(Master Node)

# 安装kubeadm/kubelet/kubectl
sudo apt install -y apt-transport-https ca-certificates curl
curl -s https://packages.cloud.google.com/apt/doc/apt-key.gpg | sudo apt-key add -
echo "deb https://apt.kubernetes.io/ kubernetes-xenial main" | sudo tee /etc/apt/sources.list.d/kubernetes.list
sudo apt update
sudo apt install -y kubelet kubeadm kubectl
sudo apt-mark hold kubelet kubeadm kubectl# 初始化控制平面(关键配置点)
sudo kubeadm init \--pod-network-cidr=10.244.0.0/16 \--apiserver-advertise-address=192.168.1.100 \--upload-certs# 配置kubectl
mkdir -p $HOME/.kube
sudo cp -i /etc/kubernetes/admin.conf $HOME/.kube/config
sudo chown $(id -u):$(id -g) $HOME/.kube/config

📌 记录输出的 kubeadm join 命令(用于工作节点加入)


3. 工作节点配置(Worker Nodes)

# 在各工作节点执行:
sudo kubeadm join 192.168.1.100:6443 \--token <your-token> \--discovery-token-ca-cert-hash <hash-value>

4. 网络插件安装(控制平面执行)

Flannel 示例:

kubectl apply -f https://raw.githubusercontent.com/flannel-io/flannel/master/Documentation/kube-flannel.yml

Calico 示例:

kubectl create -f https://docs.projectcalico.org/manifests/calico.yaml

5. 集群验证

# 查看节点状态
kubectl get nodes -o wide# 检查核心Pod
kubectl get pods -n kube-system# 测试DNS解析
kubectl run test-nginx --image=nginx
kubectl exec test-nginx -- nslookup kubernetes.default

6. 必要附加组件

组件安装命令作用
Metrics Serverkubectl apply -f https://github.com/kubernetes-sigs/metrics-server/releases/latest/download/components.yaml资源监控
Dashboardkubectl apply -f https://raw.githubusercontent.com/kubernetes/dashboard/v2.7.0/aio/deploy/recommended.yamlWeb管理界面
Ingress Controllerkubectl apply -f https://raw.githubusercontent.com/kubernetes/ingress-nginx/controller-v1.8.2/deploy/static/provider/cloud/deploy.yaml入口流量管理

关键配置文件位置

文件/目录路径作用
kubeconfig/etc/kubernetes/admin.conf集群凭证
kubelet配置/var/lib/kubelet/config.yaml节点代理设置
证书目录/etc/kubernetes/pki/**CA/证书文件
etcd数据/var/lib/etcd/**集群状态存储
CNI配置/etc/cni/net.d/**网络插件配置

生产环境注意事项

  1. 高可用控制平面

    • 部署至少 3 个 Master 节点
    • 使用 kubeadm init --control-plane-endpoint=<负载均衡IP>
  2. 证书管理

    • 使用 kubeadm certs renew 更新证书
    • 或配置外部 CA(修改 /etc/kubernetes/pki 文件)
  3. 安全加固

    • 启用 Pod 安全准入控制器
    • 配置 Network Policies
    apiVersion: networking.k8s.io/v1
    kind: NetworkPolicy
    metadata:name: default-deny
    spec:podSelector: {}policyTypes:- Ingress- Egress
    
  4. 持久化存储

    # NFS 示例
    kubectl create -f https://raw.githubusercontent.com/kubernetes-csi/csi-driver-nfs/master/deploy/install-driver.sh
    
  5. 自动化运维

    • 使用 Ansible 实现集群自动化部署
    • 配置 Prometheus + Grafana 监控
    • 实现 etcd 定期备份
    # etcd 手动备份
    kubectl exec -n kube-system etcd-k8s-master -- sh -c \'ETCDCTL_API=3 etcdctl snapshot save /var/lib/etcd/snapshot.db \--cacert /etc/kubernetes/pki/etcd/ca.crt \--cert /etc/kubernetes/pki/etcd/server.crt \--key /etc/kubernetes/pki/etcd/server.key'
    

排错命令速查

# 查看服务状态
sudo systemctl status kubelet
journalctl -xeu kubelet# 诊断容器
crictl ps -a
crictl logs <container-id># 检查证书有效期
openssl x509 -in /etc/kubernetes/pki/apiserver.crt -noout -text | grep Not

💡 建议:生产环境优先考虑使用 kubeadm、kops 或 Rancher 等工具简化部署。手工配置主要适用于学习场景或定制化需求高的环境。

http://www.dtcms.com/a/304463.html

相关文章:

  • 在 Web3 时代通过自我主权合规重塑 KYC/AML
  • Git快速入门,完整的git项目管理工具教程,git入门到精通!
  • 青少年软件编程图形化Scratch等级考试试卷(二级)2025年6月
  • 【EDA】Calma--早期版图绘制工具商
  • python案例:基于python 神经网络cnn和LDA主题分析的旅游景点满意度分析
  • 解决mac下git pull、push需要输入密码
  • 半导体企业选用的跨网文件交换系统到底应该具备什么功能?
  • 【007TG洞察】美欧贸易新政下跨境业务的技术破局:从数据治理到智能触达的全链路重构
  • SpringBoot整合RocketMQ(rocketmq-client.jar)
  • 小程序中事件对象的属性与方法
  • IT实施方案书
  • 【dropdown组件填坑指南】—怎么实现三角箭头效果
  • 网络安全第15集
  • 河南地区危化品安全员考试题库及答案
  • 【参考】Re
  • MYSQL难面试
  • 汇总数据(使用聚集函数)
  • Element Plus
  • AI数据管家:智能体如何像“超级助手”管理企业数据?
  • 宇树 G1 部署(九)——遥操作控制脚本 teleop_hand_and_arm.py 分析与测试部署
  • 项目如何分阶段推进?几大要点分析
  • 【Linux】初识make/makefile
  • 【C++算法】80.BFS解决FloodFill算法_岛屿数量
  • 数据结构 排序(2)---选择排序
  • 【WRF工具】服务器中安装编译GrADS
  • 组件调用传值、调用函数
  • 信息技术发展与区块链的崛起:深度解析与未来展望
  • Vulkan入门教程 | 第二部分:创建实例
  • 0基礎網站開發技術教學(一) --(前端篇)--
  • LeetCode 11 - 盛最多水的容器