k8s应用如何在centos上高效部署
导读:一、环境准备:系统配置与依赖安装 在CentOS上部署Kubernetes前,需完成基础环境配置,确保系统符合Kubernetes的要求: 系统要求:使用CentOS 7.9及以上版本(推荐CentOS Stream 8/9),每节点至少...
一、环境准备:系统配置与依赖安装
在CentOS上部署Kubernetes前,需完成基础环境配置,确保系统符合Kubernetes的要求:
- 系统要求:使用CentOS 7.9及以上版本(推荐CentOS Stream 8/9),每节点至少2核CPU、2GB内存、20GB存储空间。
- 关闭不必要的服务:
systemctl stop firewalld & & systemctl disable firewalld # 关闭防火墙 setenforce 0 & & sed -i 's/SELINUX=.*/SELINUX=disabled/' /etc/selinux/config # 禁用SELinux swapoff -a & & sed -i '/swap/s/^/#/' /etc/fstab # 关闭交换分区(Kubernetes要求) - 配置内核参数:创建
/etc/sysctl.d/k8s.conf文件,添加以下内容并应用:net.bridge.bridge-nf-call-ip6tables = 1 net.bridge.bridge-nf-call-iptables = 1 net.ipv4.ip_forward = 1 sysctl --system - 安装必要工具:安装
conntrack、ipvsadm、jq等Kubernetes依赖工具:yum install -y conntrack ipvsadm ipset jq iptables curl sysstat libseccomp wget vim net-tools git
二、容器运行时安装:选择高效运行时
Kubernetes推荐使用containerd作为容器运行时(性能优于Docker,且原生支持Kubernetes):
- 配置containerd模块:创建
/etc/modules-load.d/containerd.conf文件,加载必要内核模块:echo -e "overlay\nbr_netfilter" > /etc/modules-load.d/containerd.conf modprobe overlay & & modprobe br_netfilter # 立即加载模块 - 安装与配置containerd:
yum install -y containerd.io systemctl enable --now containerd - 优化containerd配置(可选):编辑
/etc/containerd/config.toml,启用cgroups v2(CentOS 8+默认使用)和镜像加速:ctr config dump > /etc/containerd/config.toml # 生成默认配置 sed -i 's/SystemdCgroup = false/SystemdCgroup = true/' /etc/containerd/config.toml # 启用cgroups v2 systemctl restart containerd
三、Kubernetes组件安装:使用kubeadm快速部署
kubeadm是Kubernetes官方推荐的集群部署工具,可简化Master节点和Worker节点的初始化流程:
- 添加Kubernetes软件源:创建
/etc/yum.repos.d/kubernetes.repo文件,配置官方镜像源:cat < < EOF > /etc/yum.repos.d/kubernetes.repo [kubernetes] name=Kubernetes baseurl=https://packages.cloud.google.com/yum/repos/kubernetes-el7-x86_64 enabled=1 gpgcheck=1 repo_gpgcheck=1 gpgkey=https://packages.cloud.google.com/yum/doc/yum-key.gpg https://packages.cloud.google.com/yum/doc/rpm-package-key.gpg EOF - 安装kubeadm、kubelet、kubectl:
yum install -y kubelet kubeadm kubectl --disableexcludes=kubernetes systemctl enable --now kubelet
四、集群初始化:Master节点部署
- 初始化Master节点:使用
kubeadm init命令初始化集群,指定Pod网络CIDR(需与后续网络插件兼容,如Flannel的10.244.0.0/16):
初始化完成后,记录输出的kubeadm init --pod-network-cidr=10.244.0.0/16 --apiserver-advertise-address=< Master_IP>kubeadm join命令(用于Worker节点加入)。 - 配置kubectl:将Admin配置文件复制到用户目录,赋予正确权限:
mkdir -p $HOME/.kube cp -i /etc/kubernetes/admin.conf $HOME/.kube/config chown $(id -u):$(id -g) $HOME/.kube/config
五、网络插件安装:实现Pod间通信
Kubernetes需要网络插件实现Pod跨节点通信,推荐使用轻量级的Flannel:
kubectl apply -f https://raw.githubusercontent.com/coreos/flannel/master/Documentation/kube-flannel.yml
等待网络插件部署完成(可通过kubectl get pods -n kube-system查看Pod状态,需全部为Running)。
六、Worker节点加入:扩展集群规模
在每个Worker节点上执行Master节点初始化时输出的kubeadm join命令,例如:
kubeadm join 192.168.1.100:6443 --token abcdef.0123456789abcdef --discovery-token-ca-cert-hash sha256:xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
加入后,Master节点执行kubectl get nodes,若Worker节点状态变为Ready,则说明加入成功。
七、应用部署:高效发布K8s应用
- 编写高效YAML文件:
- 资源限制:为Pod设置
requests(最低资源需求)和limits(最大资源限制),避免资源争抢:resources: requests: memory: "64Mi" cpu: "250m" limits: memory: "128Mi" cpu: "500m" - 轻量级镜像:使用Alpine等基础镜像减小镜像体积(如Nginx Alpine镜像仅几MB):
FROM alpine:latest RUN apk add --no-cache nginx CMD ["nginx", "-g", "daemon off; "] - 多阶段构建:进一步减小镜像大小(如Go应用的多阶段构建)。
- 资源限制:为Pod设置
- 部署应用:通过
kubectl apply命令部署应用(以Nginx为例):kubectl apply -f nginx-deployment.yaml # Deployment定义 kubectl apply -f nginx-service.yaml # Service定义(暴露服务) - 验证部署:
kubectl get pods -w # 查看Pod状态(需为Running) kubectl get svc # 查看Service状态(若有External IP,可直接访问)
八、优化与维护:提升部署效率与稳定性
- 自动化部署:使用Terraform管理基础设施(创建EC2、VPC等),用Ansible自动化Kubernetes集群部署和应用发布,减少手动操作。
- 版本控制与回滚:将Kubernetes YAML文件存入Git仓库(如GitHub),使用
kubectl rollout undo命令快速回滚到上一版本(如kubectl rollout undo deployment/nginx-deployment)。 - 监控与日志:部署Prometheus+Grafana监控集群状态(CPU、内存、Pod状态),使用ELK Stack(Elasticsearch+Logstash+Kibana)收集和分析应用日志,及时发现和解决问题。
- 定期更新:定期更新Kubernetes组件(
yum update kubelet kubeadm kubectl)和容器镜像(拉取最新版本),修复安全漏洞并提升性能。
声明:本文内容由网友自发贡献,本站不承担相应法律责任。对本内容有异议或投诉,请联系2913721942#qq.com核实处理,我们将尽快回复您,谢谢合作!
若转载请注明出处: k8s应用如何在centos上高效部署
本文地址: https://pptw.com/jishu/739379.html
