香港服务器租用后如何部署 Kubernetes?

租用香港服务器后,部署 Kubernetes (K8s) 是一个复杂但强大的过程,用于实现容器编排和管理。


一、环境准备

在部署 Kubernetes 集群之前,需要确保服务器满足以下条件:

1. 基础硬件和系统要求

  • 操作系统
    • 推荐使用 64 位的 Linux 发行版(如 Ubuntu 20.04/22.04 或 CentOS 7/8)。
  • CPU 和内存
    • 控制平面节点(Master):至少 2 核 CPU,2 GB 内存。
    • 工作节点(Worker):至少 1 核 CPU,1 GB 内存。
  • 磁盘空间
    • 每个节点至少需要 10 GB 的可用空间。

2. 网络要求

  • 开放必要端口
    • 控制平面节点需要开放以下端口:
      • TCP/6443:Kubernetes API 服务器。
      • TCP/2379-2380:etcd 服务。
      • TCP/10250:Kubelet API。
      • TCP/10259:kube-scheduler。
      • TCP/10257:kube-controller-manager。
    • 工作节点需要开放以下端口:
      • TCP/10250:Kubelet API。
      • TCP/30000-32767:NodePort 服务的默认范围。
  • 固定 IP 地址
    • 需要为每个节点分配固定的内部 IP 地址(或静态公网 IP)。

3. 软件要求

在每台服务器上安装以下组件:

  • Container Runtime
    • 推荐使用 containerd 或 Docker。
  • Kubernetes CLI 工具
    • kubeadm:用于初始化和配置 Kubernetes 集群。
    • kubectl:用于管理 Kubernetes 集群。
    • kubelet:在每个节点上运行的主要 Kubernetes 组件。

二、部署 Kubernetes 集群

以下步骤用于部署一个基本的 Kubernetes 集群,包括一个控制平面节点和多个工作节点。

1. 设置主机名并更新系统

在每台节点服务器上:

bash
# 设置主机名(根据节点类型设置不同的主机名)
sudo hostnamectl set-hostname k8s-master  # 控制平面节点
sudo hostnamectl set-hostname k8s-worker1  # 工作节点

# 更新系统包
sudo apt update && sudo apt upgrade -y

2. 禁用交换分区

Kubernetes 要求交换分区被禁用,否则会导致 kubelet 报错。

bash
sudo swapoff -a  # 临时禁用交换分区
sudo sed -i '/ swap / s/^\(.*\)$/#\1/g' /etc/fstab  # 永久禁用交换分区

3. 配置网络

  • 修改 iptables 设置,确保 Kubernetes 能正确处理网络流量:
bash
cat <<EOF | sudo tee /etc/modules-load.d/k8s.conf
br_netfilter
EOF

sudo modprobe br_netfilter
sudo sysctl --system

cat <<EOF | sudo tee /etc/sysctl.d/k8s.conf
net.bridge.bridge-nf-call-iptables = 1
net.ipv4.ip_forward = 1
EOF

sudo sysctl --system

4. 安装 Docker 或 containerd

安装 Docker

  1. 安装 Docker:
bash
# 安装必要的依赖
sudo apt-get install -y apt-transport-https ca-certificates curl gnupg

# 添加 Docker 官方 GPG 密钥
curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo apt-key add -

# 添加 Docker 的 apt 仓库
sudo add-apt-repository \
   "deb [arch=amd64] https://download.docker.com/linux/ubuntu \
   $(lsb_release -cs) stable"

# 安装 Docker
sudo apt update && sudo apt install -y docker-ce docker-ce-cli containerd.io
  1. 配置 Docker:
bash
cat <<EOF | sudo tee /etc/docker/daemon.json
{
  "exec-opts": ["native.cgroupdriver=systemd"],
  "log-driver": "json-file",
  "log-opts": {
    "max-size": "100m"
  },
  "storage-driver": "overlay2"
}
EOF

sudo systemctl restart docker
sudo systemctl enable docker

5. 安装 Kubernetes 组件

在所有节点(控制平面节点和工作节点)上安装以下 Kubernetes 组件:

  1. 添加 Kubernetes 的 apt 仓库:
bash
curl -s https://packages.cloud.google.com/apt/doc/apt-key.gpg | sudo apt-key add -

cat <<EOF | sudo tee /etc/apt/sources.list.d/kubernetes.list
deb https://apt.kubernetes.io/ kubernetes-xenial main
EOF

sudo apt update
  1. 安装 kubeadm、kubectl 和 kubelet:
bash
sudo apt install -y kubelet kubeadm kubectl
sudo apt-mark hold kubelet kubeadm kubectl  # 防止自动更新

6. 初始化控制平面节点

在控制平面节点(k8s-master)上执行以下操作:

  1. 初始化集群:
bash
sudo kubeadm init --pod-network-cidr=192.168.0.0/16
  1. 配置 kubectl
bash
mkdir -p $HOME/.kube
sudo cp -i /etc/kubernetes/admin.conf $HOME/.kube/config
sudo chown $(id -u):$(id -g) $HOME/.kube/config
  1. 记录加入集群的命令:
    安装完成后,kubeadm init 会给出一个 kubeadm join 命令,类似如下:
bash
kubeadm join <master-ip>:6443 --token <token> --discovery-token-ca-cert-hash sha256:<hash>

将此命令保存下来,用于稍后将工作节点加入集群。


7. 配置网络插件

Kubernetes 需要一个网络插件来管理 Pod 的网络。这里以 Calico 为例:

  1. 安装 Calico:
bash
kubectl apply -f https://docs.projectcalico.org/manifests/calico.yaml
  1. 验证网络插件是否正常运行:
bash
kubectl get pods --all-namespaces

8. 加入工作节点

在每个工作节点(如 k8s-worker1, k8s-worker2)上执行以下命令:

  1. 使用控制平面节点生成的 kubeadm join 命令加入集群:
bash
sudo kubeadm join <master-ip>:6443 --token <token> --discovery-token-ca-cert-hash sha256:<hash>
  1. 验证工作节点是否成功加入集群:
    在控制平面节点上运行:
bash
kubectl get nodes

9. 测试 Kubernetes 集群

  1. 部署一个测试应用:
bash
kubectl create deployment nginx --image=nginx
kubectl expose deployment nginx --port=80 --type=NodePort
  1. 获取服务的访问地址:
bash
kubectl get svc

将输出的 NodePort 端口与服务器 IP 结合在浏览器中访问,验证是否可以正常显示 Nginx 默认页面。


三、注意事项

  1. 香港网络延迟

    • 如果需要部署跨境服务,例如访问中国大陆用户,可以优化网络(如使用 CDN 或负载均衡)。
    • 确保集群的 API 服务器和节点之间的网络延迟较低。
  2. 安全加固

    • 修改默认的 kube-apiserver 配置,限制 API 访问来源。
    • 使用 RBAC(基于角色的访问控制)管理权限。
    • 定期更新 Kubernetes 和容器运行时的版本。
  3. 备份与监控

    • 使用工具(如 Velero)定期备份 Kubernetes 集群资源。
    • 部署监控系统(如 Prometheus + Grafana)监控集群运行状态。

 

通过以上步骤,您可以在香港服务器上成功部署 Kubernetes 集群,并利用其强大的容器编排能力来管理和运行您的应用程序。

超过 50,000 人的信任 网硕互联期待你加入我们的会员。