在香港服务器上部署 Kubernetes(K8s)是一项复杂但非常有价值的任务,尤其是当你需要高性能的集群管理和应用容器化时。
一、部署 Kubernetes 的前提条件
在开始部署之前,确保以下条件已满足:
1. 已租用香港服务器
- 服务器配置(推荐):
- Master 节点(控制平面):
- 2 核 CPU
- 4 GB 内存
- 50 GB SSD 硬盘
- Worker 节点(工作节点,运行应用容器):
- 2 核 CPU 或以上
- 2 GB 内存或以上(根据负载需求调整)
- 50 GB SSD 硬盘或以上
- Master 节点(控制平面):
2. 操作系统
- 推荐使用 Ubuntu 20.04 或 CentOS 7/8,因为 Kubernetes 官方支持这些发行版。
3. 公网 IP 和网络连接
- 每个节点需分配公网 IP 地址,便于节点之间的通信。
- 开放必要的端口(见后文的防火墙配置)。
4. 了解 Kubernetes 部署方式
- 你可以通过以下工具部署 Kubernetes:
- 使用 kubeadm(官方推荐的方法)。
- 使用 K3s(轻量化 Kubernetes,适合资源有限的环境)。
- 使用云服务商的 Kubernetes 托管服务(如阿里云 ACK 或 AWS EKS,适合不想手动部署的情况)。
二、部署 Kubernetes 的步骤
以下是通过 kubeadm
部署 Kubernetes 的详细步骤。
1. 准备服务器环境
1) 更新系统
在所有节点(Master 和 Worker 节点)上执行:
sudo apt update && sudo apt upgrade -y
2) 设置主机名
为每个服务器设置唯一的主机名:
sudo hostnamectl set-hostname <hostname>
- Master 节点命名为
k8s-master
。 - Worker 节点命名为
k8s-worker-1
,k8s-worker-2
等。
3) 配置 hosts 文件
确保每个节点能通过主机名互相通信。编辑 /etc/hosts
文件:
sudo nano /etc/hosts
添加以下内容(替换为实际 IP 和主机名):
<Master_IP> k8s-master
<Worker1_IP> k8s-worker-1
<Worker2_IP> k8s-worker-2
4) 禁用交换分区
Kubernetes 要求禁用交换分区,否则 kubelet 服务无法正常运行:
sudo swapoff -a
为了永久禁用,编辑 /etc/fstab
,注释掉包含 swap
的行:
sudo nano /etc/fstab
5) 配置防火墙
在所有节点上,开放 Kubernetes 所需的端口(TCP 和 UDP):
sudo ufw allow 6443 # API Server
sudo ufw allow 2379:2380 # etcd
sudo ufw allow 10250 # kubelet
sudo ufw allow 10251 # kube-scheduler
sudo ufw allow 10252 # kube-controller-manager
sudo ufw allow 10255 # Metrics server
sudo ufw reload
2. 安装 Docker 和 Kubernetes 组件
1) 安装 Docker
Kubernetes 使用 Docker 或其他容器运行时(如 containerd)来运行容器。
在所有节点上安装 Docker:
sudo apt install -y docker.io
启动并启用 Docker:
sudo systemctl enable docker
sudo systemctl start docker
2) 安装 kubeadm, kubelet, kubectl
-
添加 Kubernetes 的 apt 源:
bashsudo 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 -a /etc/apt/sources.list.d/kubernetes.list
-
安装 Kubernetes 组件:
bashsudo apt update sudo apt install -y kubelet kubeadm kubectl sudo apt-mark hold kubelet kubeadm kubectl
-
启动 kubelet:
bashsudo systemctl enable kubelet sudo systemctl start kubelet
3. 初始化 Kubernetes 集群
1) 在 Master 节点初始化集群
在 Master 节点上执行以下命令:
sudo kubeadm init --pod-network-cidr=192.168.0.0/16
--pod-network-cidr
:指定 Pod 网络的 CIDR(需要与后续网络插件配置一致)。- 初始化完成后,将显示一段命令,用于将 Worker 节点加入集群。保存该命令。
2) 配置 kubectl
在 Master 节点上运行以下命令,为 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) 检查集群状态
运行以下命令,检查集群是否正常:
kubectl get nodes
4. 配置网络插件
Kubernetes 集群需要网络插件来实现 Pod 间通信。这里推荐使用 Calico。
1) 安装 Calico
在 Master 节点上执行:
kubectl apply -f https://docs.projectcalico.org/manifests/calico.yaml
2) 验证网络插件
确保所有 Pod 都正常运行:
kubectl get pods -n kube-system
5. 添加 Worker 节点
1) 在 Worker 节点运行加入命令
在初始化 Master 节点时保存的加入命令类似于:
kubeadm join <Master_IP>:6443 --token <TOKEN> --discovery-token-ca-cert-hash sha256:<HASH>
在每个 Worker 节点上运行该命令,将其加入集群。
2) 验证节点状态
在 Master 节点上运行以下命令,确保所有节点都已加入:
kubectl get nodes
输出示例:
NAME STATUS ROLES AGE VERSION
k8s-master Ready master 5m v1.25.0
k8s-worker-1 Ready <none> 2m v1.25.0
k8s-worker-2 Ready <none> 2m v1.25.0
6. 部署测试应用
1) 部署 Nginx 示例应用
运行以下命令,部署一个简单的 Nginx 应用:
kubectl create deployment nginx --image=nginx
kubectl expose deployment nginx --port=80 --type=NodePort
2) 获取服务的访问地址
运行以下命令,获取应用的 NodePort:
kubectl get services
输出示例:
NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE
nginx NodePort 10.96.0.1 <none> 80:32000/TCP 1m
此时可通过 <Node_IP>:<NodePort>
(如 123.123.123.123:32000
)访问 Nginx 服务。
三、优化与管理
1. 配置 HTTPS 和 Ingress
使用 Ingress 控制器(如 Nginx Ingress)实现域名和 HTTPS 访问:
kubectl apply -f https://raw.githubusercontent.com/kubernetes/ingress-nginx/main/deploy/static/provider/cloud/deploy.yaml
2. 监控和日志
安装 Kubernetes Dashboard 或 Prometheus+Grafana,监控集群状态:
kubectl apply -f https://raw.githubusercontent.com/kubernetes/dashboard/v2.5.0/aio/deploy/recommended.yaml
3. 定期更新
保持 Kubernetes 和相关组件更新,以获得最新功能和安全修复。
四、总结
通过以上步骤,你可以在香港服务器租用上成功部署 Kubernetes,并运行容器化应用。香港服务器的地理优势和国际网络连接,使其特别适合部署面向亚太地区用户的 Kubernetes 集群。你可以利用 Kubernetes 的强大功能实现高可用性、扩展性和自动化管理,为你的业务或个人项目提供最佳支持。
- Tags:
- 香港服务器租用,租用香港服务器,香港服务器