国外VPS搭建K8s集群入门操作指南
在国外VPS上搭建Kubernetes(K8s)集群,是很多技术爱好者和开发者探索容器编排的第一步。不同于本地环境,国外VPS的稳定网络和弹性资源,能为K8s提供更可靠的运行基础。本文将从环境准备到基础操作逐步拆解,帮新手快速掌握核心流程。

环境准备:选对国外VPS是关键
搭建K8s集群前,首先要确认国外VPS的硬件和系统配置。根据K8s官方建议,单节点至少需要2核CPU、2GB内存(主节点建议更高配置),操作系统推荐Ubuntu 18.04及以上版本——这类系统对K8s组件兼容性更好。
所有节点需满足两个基础条件:一是网络互通(可通过ping命令测试IP连通性),二是安装Docker作为容器运行时。Docker安装命令很简单:
```bash
sudo apt-get update
sudo apt-get install docker.io -y
```
安装完成后,输入`docker --version`检查是否成功,出现版本号即表示安装就绪。
安装K8s组件:从源到版本的细节把控
K8s组件的安装需通过官方软件源完成,避免使用第三方仓库导致版本混乱。在所有国外VPS节点上执行以下指令:
```bash
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
sudo apt-get update
sudo apt-get install -y kubelet kubeadm kubectl
sudo apt-mark hold kubelet kubeadm kubectl
```
最后一行的`apt-mark hold`是关键操作,它会锁定组件版本,防止系统自动更新时破坏集群兼容性。
集群初始化:主节点的核心步骤
选择一台配置较高的国外VPS作为主节点,执行初始化命令:
```bash
sudo kubeadm init --pod-network-cidr=10.244.0.0/16
```
命令中的`--pod-network-cidr`指定了Pod的IP地址范围,Flannel等网络插件会依赖这个配置。初始化完成后,终端会输出类似`kubeadm join 192.168.1.10:6443 --token abcdef.1234567890abcdef --discovery-token-ca-cert-hash sha256:xxx`的加入命令,这是工作节点接入集群的“钥匙”,务必复制保存。
为了用`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
```
网络与节点:让集群“活”起来
K8s集群的Pod间通信依赖网络插件,这里以轻量级的Flannel为例。在主节点输入:
```bash
kubectl apply -f https://raw.githubusercontent.com/coreos/flannel/master/Documentation/kube-flannel.yml
```
等待几分钟,Flannel会自动在集群中部署网络组件。此时输入`kubectl get pods -n kube-system`,看到`kube-flannel-ds-xxx`状态为Running即表示安装成功。
接下来是工作节点加入。在其他国外VPS上执行之前保存的`kubeadm join`命令(需替换实际IP、令牌等参数)。完成后,回到主节点输入`kubectl get nodes`,若所有节点状态显示为Ready,说明集群搭建成功。
基础操作:部署一个Nginx服务
集群就绪后,试试部署一个简单的Nginx服务验证功能。输入:
```bash
kubectl create deployment nginx-deployment --image=nginx
```
这会创建一个名为`nginx-deployment`的部署,自动管理Nginx容器副本。为了让外部访问,再创建负载均衡服务:
```bash
kubectl expose deployment nginx-deployment --port=80 --type=LoadBalancer
```
稍等片刻,输入`kubectl get service`查看外部IP,用浏览器访问该IP,若看到Nginx欢迎页,说明整个流程已跑通。
从环境准备到服务部署,国外VPS为K8s集群提供了稳定的物理支撑。掌握这些基础操作后,后续可以尝试扩展节点、部署更复杂的应用,逐步探索容器编排的更多可能。