centos k8s容器管理技巧
导读:CentOS环境下Kubernetes容器管理核心技巧 一、集群基础部署与配置 在CentOS上部署Kubernetes集群是容器管理的前提,需完成以下关键步骤: 系统准备:关闭SELinux(setenforce 0并修改/etc/se...
CentOS环境下Kubernetes容器管理核心技巧
一、集群基础部署与配置
在CentOS上部署Kubernetes集群是容器管理的前提,需完成以下关键步骤:
- 系统准备:关闭SELinux(
setenforce 0并修改/etc/selinux/config)、停用firewalld(systemctl stop firewalld & & systemctl disable firewalld)、配置Docker使用systemd作为cgroup驱动(编辑/etc/docker/daemon.json添加"exec-opts": ["native.cgroupdriver=systemd"]并重启Docker)。 - 安装核心组件:通过
yum install -y kubelet kubeadm kubectl --disable-gpg-check安装kubelet、kubeadm、kubectl,启用kubelet服务(systemctl enable --now kubelet)。 - 初始化集群:在Master节点执行
kubeadm init --pod-network-cidr=10.244.0.0/16(Flannel网络插件需指定CIDR),按提示配置kubectl(mkdir -p $HOME/.kube; sudo cp -i /etc/kubernetes/admin.conf $HOME/.kube/config; sudo chown $(id -u):$(id -g) $HOME/.kube/config)。 - 加入节点:在Worker节点执行Master节点生成的
kubeadm join命令,完成节点加入。 - 安装网络插件:通过
kubectl apply -f https://raw.githubusercontent.com/coreos/flannel/master/Documentation/kube-flannel.yml部署Flannel,实现Pod间通信。
二、容器日常运维操作
1. 容器生命周期管理
- 查看Pod状态:使用
kubectl get pods -A查看所有命名空间的Pod状态(确保STATUS为Running)。 - 进入容器:通过
kubectl exec -it < pod-name> -- /bin/bash进入容器内部(交互式Shell);若需附加到正在运行的容器(如查看应用日志输出),使用kubectl attach < pod-name>。 - 删除Pod:执行
kubectl delete pod < pod-name>删除指定Pod(若Pod由Deployment管理,会自动重建)。 - 更新容器:修改Deployment的
image字段(如kubectl set image deployment/nginx-deployment nginx=nginx:v2),触发滚动更新(逐步替换旧Pod)。
2. 日志管理
- 查看实时日志:使用
kubectl logs -f < pod-name>实时跟踪Pod日志(类似tail -f);若需查看最后100行日志,添加--tail=100;查看过去5分钟的日志,添加--since=5m。 - 多容器Pod日志:通过
-c < container-name>指定容器(如kubectl logs -c app-container < pod-name>)。 - 历史日志:使用
kubectl logs --previous < pod-name>查看容器重启前的日志。 - 集中式日志:采用EFK(Elasticsearch+Fluentd+Kibana)或Loki+Grafana方案。Fluentd以DaemonSet模式部署在每个节点,收集
/var/log/containers/*.log并转发至Elasticsearch;Loki通过Promtail收集日志,与Grafana集成实现可视化。同时,配置logrotate(如/etc/logrotate.d/kubernetes-containers)实现日志轮转(每天轮转、保留7天、压缩旧日志),避免磁盘爆满。
三、容器编排与调度优化
1. 资源管理
- 设置资源请求与限制:在Pod配置中定义
resources.requests(最小资源,用于调度)和resources.limits(最大资源,防止资源争抢)。例如:resources: requests: memory: "64Mi" cpu: "250m" limits: memory: "128Mi" cpu: "500m" - 水平自动伸缩(HPA):通过
HorizontalPodAutoscaler根据CPU/内存利用率自动调整Pod数量。例如,创建HPA实现当CPU利用率超过50%时,自动扩容Pod(最多10个):apiVersion: autoscaling/v2beta2 kind: HorizontalPodAutoscaler metadata: name: nginx-hpa spec: scaleTargetRef: apiVersion: apps/v1 kind: Deployment name: nginx minReplicas: 1 maxReplicas: 10 metrics: - type: Resource resource: name: cpu target: type: Utilization averageUtilization: 50
2. 调度策略
- 节点亲和性与反亲和性:通过
affinity规则控制Pod调度。例如,使用反亲和性将相关Pod分散到不同节点(提高可用性):affinity: podAntiAffinity: preferredDuringSchedulingIgnoredDuringExecution: - weight: 100 podAffinityTerm: labelSelector: matchExpressions: - key: app operator: In values: - example topologyKey: "kubernetes.io/hostname" - 污点与容忍度:对节点添加污点(
kubectl taint nodes < node-name> key=value:NoSchedule),配置容器的容忍度(tolerations),确保关键业务Pod运行在符合条件的节点上。
四、性能优化技巧
- 容器镜像优化:使用轻量级基础镜像(如Alpine Linux替代Ubuntu),减少镜像体积;通过多阶段构建精简镜像(仅包含运行时必要的文件),加快启动速度。
- 内核参数调优:调整CentOS内核参数(如
vm.swappiness降低到10以下,减少交换分区使用),优化容器性能。 - 监控与分析:使用Prometheus收集集群指标(CPU、内存、网络),通过Grafana创建仪表盘可视化(如CPU利用率趋势、内存占用率),及时发现性能瓶颈。
五、安全管理措施
- 镜像安全:使用可信镜像仓库(如Docker Hub官方镜像),定期扫描镜像漏洞(工具如Trivy、Kube-bench),避免运行有漏洞的镜像。
- 访问控制:通过RBAC(基于角色的访问控制)限制用户权限。例如,创建
Role定义资源操作权限(如get、list、create),通过RoleBinding绑定到用户/组。 - 网络安全:使用
NetworkPolicy定义Pod间通信规则(如仅允许同一命名空间的Pod访问),隔离敏感应用;关闭不必要的端口、禁用Swap、配置防火墙、同步时间(ntpdate),确保集群环境安全。
声明:本文内容由网友自发贡献,本站不承担相应法律责任。对本内容有异议或投诉,请联系2913721942#qq.com核实处理,我们将尽快回复您,谢谢合作!
若转载请注明出处: centos k8s容器管理技巧
本文地址: https://pptw.com/jishu/743852.html
