选择实例时先确认业务需求:CPU、内存、磁盘IO与带宽。对于轻量服务建议选择1-2核、2-4GB内存的实例;生产环境或容器密集型建议4核以上、8GB+内存,并使用SSD(NVMe)磁盘。网络方面优先选择靠近目标用户的日本可用区,开启公网IP或弹性IP(EIP),并在安全组中开放必需端口(如22、80、443、容器暴露端口与监控端口)。
购买实例后,配置云硬盘(挂载数据盘用于容器数据卷),设置私有子网以隔离管理流量,使用NAT或负载均衡器(ELB/ALB)对外暴露服务。为容器化服务预留端口范围,并考虑弹性伸缩策略。
生产环境建议启用自动快照与备份策略,设置监控告警阈值以便及时扩容。
在Ubuntu或CentOS实例上安装Docker:先更新包,然后按官方方式安装docker-ce或使用containerd。示例流程:apt/yum更新 -> 安装依赖 -> 添加官方仓库 -> 安装docker-ce -> 启动并加入开机自启。安装后调整daemon配置(/etc/docker/daemon.json),设置registry镜像加速器与日志驱动。
为容器数据配置专用卷(挂载到/var/lib/docker或使用bind mount),使用自定义bridge或macvlan网络以满足网络隔离需求。若使用Kubernetes,选择containerd作为CRI并安装CRI插件。
禁用root直接远程登录、使用非root用户管理容器、限制容器特权模式,并配置SELinux/AppArmor和防火墙规则。
小规模或单机场景建议用Docker Compose:用docker-compose.yml定义服务、网络和卷,使用docker stack或docker-compose up -d启动。示例包括web、db、redis等并通过nginx做反向代理。对于多节点或需高可用的场景,使用Kubernetes(k3s或kubeadm安装)更合适。
在VPS上部署K8s时先规划Master与Worker节点、网络插件(Calico、Flannel)、存储类(local-path或NFS)、以及Ingress(nginx-ingress)。使用Helm管理应用,定义Deployment、Service、Ingress和PersistentVolumeClaim。
利用Kubernetes的Deployment实现滚动升级,结合liveness/readiness探针保证健康检查;对Compose则用compose pull、recreate策略进行替换与回滚。
监控体系建议采用Prometheus采集指标、Node Exporter采集主机指标、cAdvisor采集容器指标、Grafana负责展示,Alertmanager负责告警路由。步骤:部署Node Exporter与cAdvisor为targets,配置Prometheus scrapes与规则,接入Grafana并导入仪表盘。
重点监控:CPU、内存、磁盘IO、网络吞吐、容器重启次数和应用响应时间。为关键阈值建立PromQL告警规则,并在Alertmanager配置接收端(邮件、Slack、Webhook)。
为Prometheus和Grafana配置持久化存储,并考虑使用Prometheus HA(两套实例+对外网关)或远程写入远程存储以防数据丢失。
高可用方面使用负载均衡(ALB/NGINX)+多副本+自动伸缩;跨AZ部署提高容错。日志使用ELK/EFK(Elasticsearch+Fluentd/Filebeat+Kibana)集中采集容器与系统日志,并设置索引生命周期管理(ILM)。
对数据库与重要数据定期快照并异地复制,容器镜像推送到私有registry并做版本管理。测试恢复流程确保备份可靠。
启用安全组最小化规则、使用TLS加密服务通信、启用镜像扫描、对敏感配置使用密钥管理服务(KMS)或Vault,并定期更新系统与容器镜像。