linux

Linux系统中Kubernetes如何管理

小樊
47
2025-09-23 02:20:55
栏目: 智能运维

Linux系统中Kubernetes管理指南

一、Kubernetes集群部署(Linux环境)

1. 安装前准备

2. 安装Kubernetes核心组件

使用kubeadm(官方推荐工具)、kubelet(节点代理)、kubectl(命令行工具):

sudo apt update && sudo apt install -y apt-transport-https curl
curl -s https://packages.cloud.google.com/apt/doc/apt-key.gpg | sudo apt-key add -
echo "deb https://apt.kubernetes.io/ kubernetes-xenial main" | sudo tee /etc/apt/sources.list.d/kubernetes.list
sudo apt update && sudo apt install -y kubelet kubeadm kubectl
sudo apt-mark hold kubelet kubeadm kubectl  # 锁定版本避免自动升级

3. 初始化Master节点

在Master节点执行初始化命令(以指定Pod网络CIDR为例):

sudo kubeadm init --pod-network-cidr=10.244.0.0/16 --apiserver-advertise-address=<Master_IP>

初始化完成后,按提示配置kubectl

mkdir -p $HOME/.kube
sudo cp -i /etc/kubernetes/admin.conf $HOME/.kube/config
sudo chown $(id -u):$(id -g) $HOME/.kube/config

4. 加入Worker节点

Master节点初始化后会生成kubeadm join命令(包含token和CA证书哈希),在Worker节点执行该命令即可加入集群:

sudo kubeadm join <Master_IP>:6443 --token <token> --discovery-token-ca-cert-hash sha256:<hash>

5. 部署网络插件

Kubernetes需要网络插件实现Pod间通信,常用Calico(适合生产环境):

kubectl apply -f https://docs.projectcalico.org/v3.25/manifests/calico.yaml

验证网络插件是否正常:

kubectl get pods -n kube-system  # 查看网络插件Pod是否为Running状态

二、Kubernetes日常管理

1. 集群状态检查

2. 应用部署与管理

3. 常用运维命令

三、集群监控与日志管理

1. 监控系统(Metrics)

使用Prometheus+Grafana组合监控集群性能:

2. 日志管理(Logging)

使用**EFK(Elasticsearch+Fluentd+Kibana)**收集和分析日志:

四、集群安全配置

1. RBAC(基于角色的访问控制)

通过RoleRoleBinding限制用户对资源的访问权限,例如创建pod-reader角色(允许读取default命名空间的Pod):

apiVersion: rbac.authorization.k8s.io/v1
kind: Role
metadata:
  namespace: default
  name: pod-reader
rules:
- apiGroups: [""]
  resources: ["pods"]
  verbs: ["get", "watch", "list"]
---
apiVersion: rbac.authorization.k8s.io/v1
kind: RoleBinding
metadata:
  name: read-pods
  namespace: default
subjects:
- kind: User
  name: alice  # 用户名(需提前创建)
  apiGroup: rbac.authorization.k8s.io
roleRef:
  kind: Role
  name: pod-reader
  apiGroup: rbac.authorization.k8s.io

2. 网络策略(NetworkPolicy)

通过NetworkPolicy限制Pod间的通信,例如禁止所有Pod间的入站流量(默认拒绝):

apiVersion: networking.k8s.io/v1
kind: NetworkPolicy
metadata:
  name: default-deny-all
spec:
  podSelector: {}  # 选择所有Pod
  policyTypes:
  - Ingress  # 仅限制入站流量
  - Egress   # 可选:限制出站流量

五、集群升级与维护

1. 升级Kubernetes版本

使用kubeadm升级集群(以升级到v1.28.0为例):

sudo kubeadm upgrade plan v1.28.0  # 检查升级兼容性
sudo kubeadm upgrade apply v1.28.0  # 执行升级

升级后需重启kubelet服务:

sudo systemctl restart kubelet

2. 备份与恢复

六、自动化管理工具(可选)

0
看了该问题的人还看了