温馨提示×

centos k8s容器怎么管理

小樊
46
2025-10-03 02:30:20
栏目: 智能运维

CentOS环境下Kubernetes容器管理指南

1. 集群部署与基础配置

在CentOS上部署Kubernetes集群是容器管理的前提,常用工具为kubeadm。首先完成系统准备:关闭SELinux(setenforce 0并修改/etc/selinux/config)、停用防火墙(systemctl stop firewalld && systemctl disable firewalld)、配置Docker使用systemd作为cgroup驱动(编辑/etc/docker/daemon.json添加"exec-opts": ["native.cgroupdriver=systemd"]并重启Docker)。随后安装kubeletkubeadmkubectl(通过yum install -y kubelet kubeadm kubectl --disable-gpg-check),并初始化Master节点(kubeadm init --pod-network-cidr=10.244.0.0/16,按提示配置kubectl)。最后加入Worker节点(在Master节点获取kubeadm join命令,在Worker节点执行)并安装网络插件(如Flannel:kubectl apply -f https://raw.githubusercontent.com/coreos/flannel/master/Documentation/kube-flannel.yml)。

2. 容器部署与编排

容器部署通过Deployment(无状态应用)或StatefulSet(有状态应用)实现。以Deployment为例,创建deployment.yaml文件,定义应用名称、副本数、容器镜像及端口(如Nginx示例):

apiVersion: apps/v1
kind: Deployment
metadata:
  name: nginx-deployment
spec:
  replicas: 3
  selector:
    matchLabels:
      app: nginx
  template:
    metadata:
      labels:
        app: nginx
    spec:
      containers:
      - name: nginx
        image: nginx:latest
        ports:
        - containerPort: 80

使用kubectl apply -f deployment.yaml部署,通过kubectl get pods查看Pod状态(确保STATUSRunning)。如需扩缩容,可修改replicas字段并重新应用,或使用kubectl scale deployment nginx-deployment --replicas=5命令。

3. 日志管理

容器日志查看主要通过kubectl logs命令,常用参数包括:

  • kubectl logs <pod-name>:查看指定Pod的日志(单容器Pod无需-c参数);
  • kubectl logs -f <pod-name>:实时跟踪日志输出(类似tail -f);
  • kubectl logs --tail=100 <pod-name>:查看最后100行日志;
  • kubectl logs --since=5m <pod-name>:查看过去5分钟的日志;
  • kubectl logs -c <container-name> <pod-name>:查看多容器Pod中指定容器的日志。

对于大规模集群,建议使用EFK Stack(Elasticsearch+Fluentd+Kibana)或Loki+Grafana实现日志集中收集、存储与可视化,便于快速定位问题。

4. 容器监控与性能优化

容器监控需覆盖资源使用(CPU、内存、网络)和应用状态(Pod健康、服务可用性),常用工具组合为:

  • Metrics Server:收集CPU、内存等基础指标,支持kubectl top命令(kubectl top pods查看Pod资源使用);
  • Prometheus+Grafana:Prometheus抓取集群指标(通过kubeletcAdvisor),Grafana创建仪表盘可视化(如CPU利用率、内存占用趋势);
  • cAdvisor:内置在Kubelet中,提供容器级别的资源监控数据;
  • kube-state-metrics:暴露Kubernetes资源状态指标(如Pod副本数、Deployment更新状态)。

性能优化技巧:

  • 为容器设置资源请求与限制resources.requests定义最小资源,resources.limits定义最大资源),避免资源争抢;
  • 使用轻量级镜像(如Alpine Linux替代Ubuntu),减少镜像体积和启动时间;
  • 启用Pod反亲和性podAntiAffinity),将相关Pod分散到不同节点,提高可用性;
  • 调整内核参数(如vm.swappiness降低到10以下),优化容器性能。

5. 容器运维操作

  • 进入容器:使用kubectl exec -it <pod-name> -- /bin/bash进入容器内部(交互式Shell),或kubectl attach <pod-name>附加到正在运行的容器(如查看应用日志输出);
  • 查看容器详情kubectl describe pod <pod-name>查看Pod的事件、状态、容器信息(如重启原因);
  • 删除容器kubectl delete pod <pod-name>删除指定Pod(若Pod由Deployment管理,会自动重建);
  • 更新容器:修改Deployment的image字段(如kubectl set image deployment/nginx-deployment nginx=nginx:v2),触发滚动更新(逐步替换旧Pod)。

6. 安全管理

  • 镜像安全:使用可信镜像仓库(如Docker Hub官方镜像),定期扫描镜像漏洞(工具如trivykube-bench);
  • 访问控制:通过RBAC(基于角色的访问控制)限制用户权限(如创建Role定义资源操作权限,绑定RoleBinding到用户/组);
  • 网络安全:使用NetworkPolicy定义Pod间通信规则(如仅允许同一命名空间的Pod访问),隔离敏感应用;
  • 系统加固:关闭不必要的端口、禁用Swap、配置防火墙、时间同步(ntpdate),确保集群环境安全。

0