本次笔记记录了在欧拉操作系统上从零部署Kubernetes(K8S)1.28集群的完整实操流程涵盖环境准备、容器运行时安装、集群初始化、网络插件部署、监控组件安装、Dashboard配置、资源对象管理及生产环境最佳实践。一、环境初始化准备1.1关闭Swap交换空间关闭命令bash #临时关闭 swapoff -a #永久关闭注释掉/etc/fstab中的swap行 sed -i /swap/d /etc/fstab1.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 EOF1.3启用内核路由转发与网桥参数参数值说明net.iov4.ip_forward1IPv4路由转发net.bridge.bridge-nf-call-iptables1网桥iptables调用net.bridge.bridge-nf-call-ip6tables1网桥ip6tables调用配置方法bash # 加载br_netfilter模块 modprobe be_netfilter # 配置内核参数 cat /etc/sysctl.d/k8s.conf EOF net.ipv4.ip_forward1 net.bridge.brodge-nf-call-iptables1 net.bridge.bridge-nf-call-ip6tables1 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-docker2.3启动插件并配置K8S运行时bash #在kubeadm init中指定CRI socket --cri-socket /var/run/cri-dockerd.sock三、K8S核心组件安装与初始化3.1安装kubeadm/kubelet/kubectl三个核心组件组件功能kubeadm集群引导工具kubelet节点代理kubectl集群管理CLIbash #配置K8S yum源 cat /etc/yum.repos.d/kubernetes.repo EOF nameKubernetes baseurlhttps://mirrors.aliyun.com/kubernetes/kubernetes/yum/repos/kubernetes-el7-x86_64 enabled1 gpgcheck0 EOF #安装指定版本 yum insta;; -y kubesdm-1.28.15 kubelet-1.25.15 kubect-1.25.15 #启动kubelet systemctl enablr kubelet systemctl start kubelet3.2Master节点初始化bash kubeadm init \ --apiserver-advertise-address192.168.160.139 \ --pod-network-cide10.244.0.0/16 \ --service-cidr10.96.0.0/12 \ --cri-socket /var/run/cri-dockerd.sock \ --kubernetes-bersion1.28.15参数说明参数说明--apiserver-advertise-addressAPI Server通告地址--pod-network-cidrPod网络CIDR--service-cidrService网络CIDR--cri-socket指定CRI socket--kubernetes-versionK8S版本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 nodes3.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.26CNI插件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.tar4.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.yaml4.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.yaml5.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 \ --clusterrolecluster-admin \ --serviceaccountkube-system:admin-user6.2生成访问Tokenbash #生成临时访问令牌 kubectl create token admin-user -n kuble-system #输出示例 # eyJhbGciOiJSUzI1NiIsImtpZCI6IjEyMzQ1Njc4OTA... #注意Token有效期有限安全性高6.3NodePort方式暴露bash #修改Dashboard Service类型 kubectl edit svc kubernetes-dashboard -n kubernetes-dashboard #将typeClusterIP改为typeNodePort #添加nodePort30001端口必须≥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.粘贴生成的Token3.点击登录七、工作负载管理与高级实践7.1Deployment控制器使用bash #创建Deployment kubectl create deployment nginx --imagenginx #查看Deployment kubectl get deployments #查看Pod kubectl get pods #动态扩缩容 kubectl scale deployment nginx --replicas3 #查看扩容结果 kubectl get pods7.2Service服务暴露bash #创建Service类型为NodePort kubectl expose deploment nginx \ --port80 \ --target-port80 \ --typeNodePoet #查看Service kubectl get svc #访问服务 curl http://Node-IP:NodePort7.3静态Pod机制说明7.4节点角色标签配置bash #查看当前节点标签 kubectl get nodes --show-labels #为Worker节点添加角色标签 kubectl label node node1 node-role.kubernetes.io/workerworker kubectl label node nodes node-role.kubernetes.io/workerworker #再次查看节点 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 Node12核CPU/4GB内存中型11-50 Node3高可用4核CPU/8GB内存大型50 Node3(高可用8核CPU/16GB内存8.2资源规划依据容量估算方法业务指标1.日均访问量50万2.峰值QPS1000估算过程1.单Pod处理能力100 QPS2.所需Pod副本数1000/100103.单Pod资源0.5核CPU / 512MB内存4.总资源需求5核CPU/5gb内存5.Node数量按4核4G计算2台6.预留30%冗余3台Node8.3虚拟机环境优化建议配置项最低配置推荐配置CPU2核4核内存2GB4GB磁盘20GB50GB九、常用命令速查9.1集群管理bash #查看集群信息 kubectl cluster-info #查看节点状态 kubectl get nodes #查看节点详情 kubectl describe node node-name #查看所有命名空间的Pod kubectl get pods -A9.2工作负载管理bash #创建Deployment kubectl create deployment name --imageimage #扩缩容 kubectl scale deployment name --replicasnum #查看Deployment kubectl get deployment #查看Pod详情 kubectl describe pod pod-name #查看Pod日志 kubectl logs pod-name #进去Pod容器 kubectl exec -it pod-name -- /bin/bash9.3服务与网络bash #创建Service kubectl expose deployment name --portport --target-porttarget #查看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提供资源指标查看DsahboardServiceAccountRBACToken认证工作负载Deployment管理Pod副本静态Pod由Kubelet直接管理生产规范根据集群规模配置Master规格预留冗余资源实践要点Calico的CALICO_IPV4POOL_CIDR必须与kubeadm init的--pod-network-cidr完全一致Dashboard推荐使用Token认证生产环境Master节点建议3节点高可用部署。