海外云服务器K8s部署全流程实践
在海外云服务器上部署Kubernetes(K8s)容器集群,是实现应用高可用、弹性扩展的关键一步。从环境准备到集群搭建,再到最终应用上线,每个环节都需细致规划。本文将结合实际操作,梳理完整的部署流程与注意事项。

前期准备:环境与资源配置
部署K8s前,需先完成三方面基础工作。首先是选择海外云服务器,需根据业务规模评估CPU、内存、存储等配置——小规格应用可选2核4G起步,高并发场景则需8核16G以上。网络方面优先选择支持BGP多线的服务器,确保跨运营商访问稳定性,同时预留足够带宽(建议100Mbps以上)。
其次是操作系统安装,推荐使用Ubuntu 20.04或CentOS 7等长期支持版本(LTS),安装后需更新系统软件包至最新,命令示例:
```bash
# Ubuntu系统更新
apt update && apt upgrade -y
# CentOS系统更新
yum update -y
```
最后是网络配置,需关闭或配置防火墙放行K8s组件通信端口(如6443、2379、10250等)。以iptables为例,可临时关闭防火墙测试:
```bash
systemctl stop iptables
systemctl disable iptables
```
部署步骤:从Docker到K8s集群
1. **安装容器运行时Docker**
K8s默认依赖容器运行时,Docker是最常用的选择。通过官方脚本一键安装:
```bash
# 下载并执行安装脚本
curl -fsSL https://get.docker.com -o get-docker.sh
sh get-docker.sh
# 启动并设置Docker开机自启
systemctl start docker
systemctl enable docker
```
2. **安装K8s核心组件**
需安装kubeadm(集群初始化工具)、kubelet(节点代理)和kubectl(命令行工具)。以CentOS为例,添加K8s软件源后安装:
```bash
# 添加K8s官方YUM源
cat <
name=Kubernetes
baseurl=https://packages.cloud.google.com/yum/repos/kubernetes-el7-\$basearch
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
exclude=kubelet kubeadm kubectl
EOF
# 安装组件并启动kubelet
yum install -y kubelet kubeadm kubectl --disableexcludes=kubernetes
systemctl start kubelet
systemctl enable kubelet
```
3. **初始化主节点与网络插件**
使用kubeadm初始化主节点,需指定Pod网络CIDR(如10.244.0.0/16):
```bash
kubeadm init --pod-network-cidr=10.244.0.0/16
# 配置kubectl访问权限
mkdir -p $HOME/.kube
cp -i /etc/kubernetes/admin.conf $HOME/.kube/config
chown $(id -u):$(id -g) $HOME/.kube/config
```
初始化完成后,安装Flannel等Pod网络插件实现容器通信:
```bash
kubectl apply -f https://raw.githubusercontent.com/coreos/flannel/master/Documentation/kube-flannel.yml
```
4. **扩展工作节点**
主节点初始化成功后,通过kubeadm生成加入命令(在主节点执行):
```bash
kubeadm token create --print-join-command
```
在工作节点执行该命令(示例为`kubeadm join 192.168.1.100:6443 --token abcdef.0123456789abcdef --discovery-token-ca-cert-hash sha256:xxx`),即可完成集群扩展。
部署应用:从配置到上线
集群搭建完成后,通过Deployment和Service资源管理应用。以Nginx为例,创建deployment.yaml定义3个副本:
```yaml
apiVersion: apps/v1
kind: Deployment
metadata:
name: nginx-deployment
spec:
replicas: 3
selector:
matchLabels:
app: nginx
template:
metadata:
labels:
app: nginx
spec:
containers:
- name: nginx
image: nginx:1.14.2
ports:
- containerPort: 80
```
再创建service.yaml暴露服务:
```yaml
apiVersion: v1
kind: Service
metadata:
name: nginx-service
spec:
selector:
app: nginx
ports:
- protocol: TCP
port: 80
targetPort: 80
type: LoadBalancer
```
执行以下命令完成部署:
```bash
kubectl apply -f deployment.yaml
kubectl apply -f service.yaml
```
完成上述步骤后,即可在海外云服务器上稳定运行K8s集群并部署应用。过程中需重点关注网络配置与组件版本兼容问题(如Docker与K8s版本需匹配),同时建议通过Prometheus等工具定期监控集群状态,保障业务持续稳定。