本次笔记记录了在欧拉操作系统上从零部署Kubernetes(K8S)1.28集群的完整实操流程,涵盖环境准备、容器运行时安装、集群初始化、网络插件部署、监控组件安装、Dashboard配置、资源对象管理及生产环境最佳实践。

一、环境初始化准备

1.1关闭Swap交换空间

关闭命令

bash

    #临时关闭
    swapoff -a

    #永久关闭(注释掉/etc/fstab中的swap行)
    sed -i '/swap/d' /etc/fstab

1.2配置主机名与DNS解析

bash

    #设置主机名(每个节点唯一)
    hostnamectl set-hostname master
    hostnamectl set-hostname node1
    hostnamectl set-hostname node2

    #配置/etc/hosts解析
    cat >> /etc/hosts << EOF
    192.168.160.139 master
    192.168.160.140 node1
    192.168.160.141 node2
    EOF

1.3启用内核路由转发与网桥参数

参数 说明
 net.iov4.ip_forward 1 IPv4路由转发
 net.bridge.bridge-nf-call-iptables 1 网桥iptables调用
 net.bridge.bridge-nf-call-ip6tables 1 网桥ip6tables调用

配置方法

bash 
  
    # 加载br_netfilter模块
    modprobe be_netfilter

    # 配置内核参数
    cat > /etc/sysctl.d/k8s.conf << EOF
    net.ipv4.ip_forward=1
    net.bridge.brodge-nf-call-iptables=1
    net.bridge.bridge-nf-call-ip6tables=1
    EOF

    #使配置生效
    sysctl - p /etc/sysctl.d/k8s.conf

二、容器运行时与CRI插件安装

2.1containerd运行时安装

2.2CRI-Docker插件安装

用途:兼容原有Docker使用习惯,使K8S通过CRI接口调用Docker。

bash

    #安装cri-dockerd
    rpm -ivh cri-dockerd-0.3.x.rpm

    #验证安装
    cri-dockerd --version
  
    #启动服务
    systemctl start cri-docker
    systemctl enable cri-docker

2.3启动插件并配置K8S运行时

bash

    #在kubeadm init中指定CRI socket
    --cri-socket /var/run/cri-dockerd.sock

三、K8S核心组件安装与初始化

3.1安装kubeadm/kubelet/kubectl

三个核心组件:

组件 功能
kubeadm 集群引导工具
kubelet 节点代理
kubectl 集群管理CLI
bash

    #配置K8S yum源
    cat > /etc/yum.repos.d/kubernetes.repo << EOF
    name=Kubernetes
    baseurl=https://mirrors.aliyun.com/kubernetes/kubernetes/yum/repos/kubernetes-el7-x86_64
    enabled=1
    gpgcheck=0
    EOF

    #安装指定版本
    yum insta;; -y kubesdm-1.28.15 kubelet-1.25.15 kubect-1.25.15
 
    #启动kubelet
    systemctl enablr kubelet
    systemctl start kubelet

3.2Master节点初始化

bash 
 
    kubeadm init \
      --apiserver-advertise-address=192.168.160.139 \
      --pod-network-cide=10.244.0.0/16 \
      --service-cidr=10.96.0.0/12 \
      --cri-socket /var/run/cri-dockerd.sock \
      --kubernetes-bersion=1.28.15

参数说明:

参数

说明

 --apiserver-advertise-address API Server通告地址
 --pod-network-cidr Pod网络CIDR
 --service-cidr

Service网络CIDR

 --cri-socket 指定CRI socket
 --kubernetes-version K8S版本

3.3初始化后配置管理凭证

bash
  
    #创建.kube目录
    mkdie -p $HOME/.kube

    #拷贝管理凭证
    cp -i /etc/kubernetes/admin.conf $HOME/.kube/config

    #修改权限
    chown $(id -u):$(id -g) $HOME/.kube/config
   
    #验证集群状态
    kubectl get nodes

3.4Worker节点加入集群

bash

    #在Master节点生成加入命令
    kubeadm token create --print-join-command

    #在Worker节点执行(示例)
    kubeadm join 192.168.160.139:6443 \
      --token <token> \
      --discovery-token-ca-cert-hash sha256:<hash> \
      --cri-socker /var/run/cri-dockerd.sock

四、网络插件Calico部署

4.1离线镜像预加载

Calico镜像(国内无法直连下载)

镜像 用途
 calico/cni:v3.26 CNI插件
 calico/node:v3.26 节点组件
 calico/kube-controllers:v3.26 控制器
bash

    #导入镜像(所有节点)
    docker load -i calico-cni-v3.26.tar
    docker load -i calico-node-v3.26.tar
    docker load -i calico-kube-controllers-v3.26.tar

4.2应用Calico资源

bash
    
    #下载Calico YAML(或使用离线文件)
    wget https://raw.githubusercontent.com/projectcalico/calico/v3.26/manifests/calico.yaml

    #修改CALLCO_IPV4POOL_CIDR
    #必须与kubeadm init中--pod-network-cidr一致
    #即: 10.244.0.0/16
 
    #应用配置
    kubectl apply -f calico.yaml

4.3节点状态就绪验证

bash

    #查看节点状态
    kubectl get nodes

    #状态由NotReady变成Ready,标识网络插件生效
    #NAME    STAUS     ROLES          AGE    VERSION
    #master  Ready   control-plane    10m    v1.28.15
    #node1   Ready   <none>            5m    v1.28.15
    #node2   Ready   <none>            5m    v1.28.15

五、监控组件Metrics Server部署

5.1证书与资源配置

bash

    #复制证书文件至Master节点
    cp ca.crt /etc/kubernetes/pki/
    cp server.crt /etc/kubernetes/pki/

    #部署Metrics Server
    kubectl create -f metrics-server.yaml

5.2资源指标查看

bash
    #查看节点资源使用率
    kubectl top nodes
 
    #输出示例:
    #NAME   CPU(cores) CPU%   MEMORY(bytes) MEMORY%
    #mater  250m        12%      1024Mi       25%
    #node1  150m        7%        512Mi       12%
   
    #查看Pod资源占用
    kubectl top pods
  
    #查看指定命名空间的Pod
    kubectl top pods -n kube-system

六、Dashboard图形化界面配置

6.1创建ServiceAccount与RBAC绑定

bash
   
    #创界admin-user服务账户
    kubectl create serviceaccount admin-user -n kuble-system

    #绑定cluster-admin集群角色
    kubectl create clusterrolebinding admin-user-binding \
      --clusterrole=cluster-admin \
      --serviceaccount=kube-system:admin-user

6.2生成访问Token

bash
 
    #生成临时访问令牌
    kubectl create token admin-user -n kuble-system

    #输出示例:
    # eyJhbGciOiJSUzI1NiIsImtpZCI6IjEyMzQ1Njc4OTA...

    #注意:Token有效期有限,安全性高

6.3NodePort方式暴露

bash

    #修改Dashboard Service类型
    kubectl edit svc kubernetes-dashboard -n kubernetes-dashboard

    #将type:ClusterIP改为type:NodePort
    #添加nodePort:30001(端口必须≥30000)

    #或使用patch命令
    kubectl patch svc kubernetes-dashboard -n kubernetes-dashboard \
    -p '{"spec":{"type":"NodePort","ports":[{"port":443,"targetPort":8443,"nodePort":30001}]}}'

6.4访问Dashboard

访问地址:https://<Msater-IP>:30001

登录方式

1.选择“Token”

2.粘贴生成的Token

3.点击登录

七、工作负载管理与高级实践

7.1Deployment控制器使用

bash
 
    #创建Deployment
    kubectl create deployment nginx --image=nginx

    #查看Deployment
    kubectl get deployments
  
    #查看Pod
    kubectl get pods

    #动态扩缩容
    kubectl scale deployment nginx --replicas=3

    #查看扩容结果
    kubectl get pods

7.2Service服务暴露

bash
   
    #创建Service(类型为NodePort)
    kubectl expose deploment nginx \
      --port=80 \
      --target-port=80 \
      --type=NodePoet

    #查看Service
    kubectl get svc
 
    #访问服务
    curl http://<Node-IP>:<NodePort> 

7.3静态Pod机制说明

7.4节点角色标签配置

bash
    
    #查看当前节点标签
    kubectl get nodes --show-labels
  
    #为Worker节点添加角色标签
    kubectl label node node1 node-role.kubernetes.io/worker=worker
    kubectl label node nodes node-role.kubernetes.io/worker=worker

    #再次查看节点
    kubectl get nodes

    #输出示例:
    #NAME      STATUS   ROLES           AGE  VERSION
    #master     Ready  control-plane     1h   v1.28.15
    #node1      Ready    worker          1h   v1.28.15
    #node2      Ready    worker          1h   v1.28.15

八、生产环境设计规范

8.1Master/Node节点配比

集群规模 Master数量 Master配置
小型(≤10 Node) 1

2核CPU/4GB内存

中型(11-50 Node) 3(高可用) 4核CPU/8GB内存

大型(>50 Node)

3+(高可用) 8核CPU/16GB内存+

8.2资源规划依据

容量估算方法:

业务指标:

1.日均访问量:50万

2.峰值QPS:1000

估算过程:

1.单Pod处理能力:100 QPS

2.所需Pod副本数:1000/100=10

3.单Pod资源:0.5核CPU / 512MB内存

4.总资源需求:5核CPU/5gb内存

5.Node数量(按4核4G计算):2台

6.预留30%冗余:3台Node

8.3虚拟机环境优化建议

配置项 最低配置 推荐配置
CPU 2核 4核
内存 2GB 4GB
磁盘 20GB 50GB

九、常用命令速查

9.1集群管理

bash

    #查看集群信息
    kubectl cluster-info

    #查看节点状态
    kubectl get nodes

    #查看节点详情
    kubectl describe node <node-name>
 
    #查看所有命名空间的Pod
    kubectl get pods -A

9.2工作负载管理

bash

    #创建Deployment
    kubectl create deployment <name> --image=<image>

    #扩缩容
    kubectl scale deployment <name> --replicas=<num>

    #查看Deployment
    kubectl get deployment

    #查看Pod详情
    kubectl describe pod <pod-name>

    #查看Pod日志
    kubectl logs <pod-name>

    #进去Pod容器
    kubectl exec -it <pod-name> -- /bin/bash

9.3服务与网络

bash

    #创建Service
    kubectl expose deployment <name> --port=<port> --target-port=<target>

    #查看Service
    kubectl get svc

    #查看Endpoints
    kubectl get endpoints

十、总览

总结

模块 核心要点
环境准备 关闭Swao、主机名解析、内核参数配置
容器运行时 K8S 1.24+不再支持Docker,适用containerd或cri-dockerd
集群初始化 kubeadm init指定CIDR和CRI socket
网络插件 Calico CIDR必须与kubeadm init一致
监控组件

Metrics Server提供资源指标查看

Dsahboard ServiceAccount+RBAC+Token认证
工作负载 Deployment管理Pod副本,静态Pod由Kubelet直接管理
生产规范 根据集群规模配置Master规格,预留冗余资源

实践要点:Calico的CALICO_IPV4POOL_CIDR必须与kubeadm init的--pod-network-cidr完全一致;Dashboard推荐使用Token认证;生产环境Master节点建议3节点高可用部署。

Logo

AtomGit 是由开放原子开源基金会联合 CSDN 等生态伙伴共同推出的新一代开源与人工智能协作平台。平台坚持“开放、中立、公益”的理念,把代码托管、模型共享、数据集托管、智能体开发体验和算力服务整合在一起,为开发者提供从开发、训练到部署的一站式体验。

更多推荐