插件窝 干货文章 如何在Linux上配置容器管理平台(如Kubernetes)

如何在Linux上配置容器管理平台(如Kubernetes)

Kubernetes sudo 节点 kubectl 1041    来源:    2025-04-16

在Linux上配置Kubernetes容器管理平台指南

前期准备

系统要求

  • 至少2台Linux机器(1个主节点,1+个工作节点)
  • 每台机器至少2GB RAM(生产环境推荐更多)
  • 每台机器至少2个CPU核心
  • 所有节点间网络互通
  • 禁用swap:sudo swapoff -a 并永久注释掉/etc/fstab中的swap行

环境准备(所有节点)

# 更新系统
sudo apt-get update && sudo apt-get upgrade -y  # Ubuntu/Debian
sudo yum update -y && sudo yum upgrade -y      # CentOS/RHEL

# 安装必要工具
sudo apt-get install -y apt-transport-https ca-certificates curl software-properties-common  # Ubuntu/Debian
sudo yum install -y yum-utils device-mapper-persistent-data lvm2                             # CentOS/RHEL

安装容器运行时

选项1:安装Docker

# Ubuntu/Debian
curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo apt-key add -
sudo add-apt-repository "deb [arch=amd64] https://download.docker.com/linux/ubuntu $(lsb_release -cs) stable"
sudo apt-get update && sudo apt-get install -y docker-ce

# CentOS/RHEL
sudo yum-config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo
sudo yum install -y docker-ce
sudo systemctl enable --now docker

选项2:安装containerd

# 对于containerd
sudo apt-get install -y containerd  # Ubuntu/Debian
sudo yum install -y containerd      # CentOS/RHEL
sudo systemctl enable --now containerd

安装Kubernetes组件

1. 添加Kubernetes仓库

# Ubuntu/Debian
sudo apt-get update && sudo apt-get 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

# CentOS/RHEL
cat <<EOF | sudo tee /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

2. 安装kubeadm, kubelet和kubectl

# Ubuntu/Debian
sudo apt-get update
sudo apt-get install -y kubelet kubeadm kubectl
sudo apt-mark hold kubelet kubeadm kubectl

# CentOS/RHEL
sudo yum install -y kubelet kubeadm kubectl
sudo systemctl enable --now kubelet

初始化Kubernetes集群(主节点)

1. 初始化控制平面

sudo kubeadm init --pod-network-cidr=10.244.0.0/16

(注意:--pod-network-cidr的值应根据您选择的网络插件调整)

2. 设置kubectl配置

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

3. 安装网络插件(以Flannel为例)

kubectl apply -f https://raw.githubusercontent.com/coreos/flannel/master/Documentation/kube-flannel.yml

加入工作节点

在主节点初始化完成后,会输出类似以下的加入命令:

kubeadm join <control-plane-host>:<control-plane-port> --token <token> --discovery-token-ca-cert-hash sha256:<hash>

在每个工作节点上运行此命令。

验证集群状态

# 查看节点状态
kubectl get nodes

# 查看所有pod状态
kubectl get pods --all-namespaces

可选配置

安装Dashboard

kubectl apply -f https://raw.githubusercontent.com/kubernetes/dashboard/v2.7.0/aio/deploy/recommended.yaml

# 创建访问令牌
cat <<EOF | kubectl apply -f -
apiVersion: v1
kind: ServiceAccount
metadata:
  name: admin-user
  namespace: kubernetes-dashboard
EOF

cat <<EOF | kubectl apply -f -
apiVersion: rbac.authorization.k8s.io/v1
kind: ClusterRoleBinding
metadata:
  name: admin-user
roleRef:
  apiGroup: rbac.authorization.k8s.io
  kind: ClusterRole
  name: cluster-admin
subjects:
- kind: ServiceAccount
  name: admin-user
  namespace: kubernetes-dashboard
EOF

# 获取访问令牌
kubectl -n kubernetes-dashboard create token admin-user

# 启动代理访问
kubectl proxy

然后访问:http://localhost:8001/api/v1/namespaces/kubernetes-dashboard/services/https:kubernetes-dashboard:/proxy/

安装Ingress控制器(以Nginx为例)

kubectl apply -f https://raw.githubusercontent.com/kubernetes/ingress-nginx/controller-v1.8.1/deploy/static/provider/cloud/deploy.yaml

故障排除

  1. 节点NotReady

    • 检查网络插件是否安装正确
    • 检查kubelet服务状态:systemctl status kubelet
  2. kubeadm init失败

    • 检查端口冲突(6443, 10250等)
    • 确保swap已禁用
    • 尝试重置后重新初始化:kubeadm reset
  3. Pod卡在Pending状态

    • 检查资源配额:kubectl describe pod <pod-name>
    • 检查节点资源是否充足
  4. 网络问题

    • 检查CNI插件日志
    • 验证节点间网络连通性

生产环境建议

  1. 使用高可用控制平面(多主节点)
  2. 设置适当的RBAC策略
  3. 配置网络策略
  4. 启用集群自动扩展
  5. 设置监控和日志系统(如Prometheus + Grafana)
  6. 考虑使用托管Kubernetes服务(如EKS, AKS, GKE)以减少运维负担

希望这个指南能帮助您成功在Linux上配置Kubernetes集群!根据您的具体需求,可能还需要进行额外的配置和优化。