登录GCP console,确保Compute Enginee API 已经被eanbled
在左边菜单栏,选择第一个item - VM instance
如果见到上面页面, 则代表compute enginee的API 已经被enabled, 否则要先enable Compute enginee的API.
后者从APIs & Service 页面去检查已经enabled的APIs
创建1个VPC
其实所有的VM都需要1个内网ip, 但是首先我们需要1个VPC先。
虽然VPC 全名是Virtual Private Cloud, 但是我们可以理解它就是1个虚拟局域网, 虚拟内网。
我们进入VPC network的页面,并点击button “CREATE VPC Network”
那么我们就进入VPC network创建的页面
我们接下里解析一些细节:
Maximum transmission unit (MTU)
最大传输单元(MTU)是指在网络通信中可以传输的最大数据包大小。它是以字节为单位来衡量的,包括数据包的有效载荷和头部信息。
当数据包从源主机发送到目标主机时,它们会被分割成更小的片段进行传输。MTU定义了每个片段的最大大小。如果数据包的大小超过了网络路径上的任何设备或链路的MTU,那么它将被分割成更小的片段以适应MTU的限制。
在一些情况下,你可能需要调整MTU的大小。例如,当使用虚拟专用网络(VPN)时,VPN隧道的头部信息会增加数据包的大小,可能导致超过某些网络设备或链路的MTU。在这种情况下,你可能需要降低MTU的大小,以确保数据包能够成功传输。
关于收费的问题,通常来说,调整MTU的大小不会直接导致额外的费用。然而,如果你需要使用特定的网络服务或功能来支持更大的MTU,可能会涉及到额外的费用。例如,某些云服务提供商可能会为支持更大的MTU大小而收取额外的费用。因此,在调整MTU大小之前,建议你查看相关的服务提供商文档或与他们联系,以了解是否会有额外的费用或限制。
我们保持默认值 1460 就好
VPC network ULA internal IPv6 range
这个选项是用来指定在VPC网络中分配内部IPv6地址时使用的ULA地址范围。你可以在创建VPC网络时设置这个选项,以定义你希望在VPC网络中使用的特定IPv6地址范围。
在创建VPC网络时,你可以选择启用IPv6,并指定一个ULA地址范围。这样,GCP会为你的VPC网络分配一个内部IPv6地址范围,以供你在网络中分配给内部资源。
除非你有ipv6的使用需求, 否则保持disabled就好
创建1个VPC subnet
在创建VPC页面, 我们应该要同时创建1个subnet
当然你可以选择Automatic, 这样GCP 会自动分配1个subnet,到这个VPC上.
如果把 VPC 当左1个大的内网, 那么subnet就是这个内网的一些子网, 而子网最重要的就是ip地址范围。 当我们点击Add Subnet button就可见到下面的创建子网页面
region 区域
这个很重要, 每个子网必须属于1个region, 而后面的resource 例如VM自能选择相同区域的子网。
举个例子, 假如我选择在HK创建1个VM, 那么这个VM必须选择1个HK region的子网。
上面的例子我选择了eurepo-west2 , 那么代表这个子网是属于伦敦的.
IPv4 Range
这个就是子网的重点, 意思就是ipv4 地址的范围
上面我写到是 192.168.1.0/24
意思就是这个子网
从192.168.0.1 开始, 从192.168.0.255 结束, 简单来讲就是可以分配 254个虚拟机到这个子网.
而192.168.0.1 必须用于gateway , 192.168.0.255 用于广播, 这两个ip是不能被分配给其他resources的
具体子网掩码的换算可以参考
https://www.sojson.com/convert/subnetmask.html
Private Google Access
用于控制子网中的实例是否可以通过内部IP地址访问Google服务,而无需通过公共Internet连接。
当你启用"Private Google Access"选项时,子网中的实例可以使用内部IP地址直接访问Google服务,例如Google Cloud Storage、Google BigQuery等,而无需通过公共Internet连接。这提供了一种更安全和高效的方式来访问Google服务,特别是在需要保护数据隐私或限制公共Internet访问的情况下。
需要注意的是,启用"Private Google Access"选项只适用于子网内的实例,对于子网之外的实例仍然需要通过公共Internet连接来访问Google服务。
简单来讲也可以让子网下的resource可以通过GCP内网而不是公网去连接 GCP的其他产品(BQ, bucket等), 走内网的好处是
1,更快
2,更安全
3,公网流量更低, 更便宜
所以一般选择ON
配置VPC network的firewall rules
其实你不知道怎么配置的话,保持默认就好
Firewall 这里配置是 公网和这个VPN network的出入口规则
allow-custom 表示 允许用户自定义防火墙规则, 不要动它
allow-icmp 也不要动它, 否则会影响一些网络工具的使用, 例如ping等
allow-rdp 3389 这里 表示允许rdp 3389协议的接入, rdp协议就是远程桌面的协议, 适用于both windows 和linux, 如果你确定你这个子网下的所有VM都不需要远程桌面接入, 可以禁掉它
allow-ssh 22 , 这里就是允许外部主机ssh登录VPC network的主机啦, 务必打开
至于下面的 deny all ingress 就是默认是禁止所有外部主机访问的, 但是因为上面allow-ssh 的优先级别更高, 所以22端口还是开通的。 假如 之后我们要开启web服务, 则需要把80和443端口打开, 就是新镇1个规则, 但是优先级必须在deny all ingress 之前
allow-all-egress 就是表明vm内的resource是无限制访问外网的, 如果需要禁止访问外网, 则需要把这个规则改掉
Dynamic routing mode
如果你的网络环境是多区域的,并且你希望在每个区域内具有更细粒度的控制,那么选择 Regional dynamic routing mode 可能更合适。这样,你可以针对每个区域设置特定的路由策略,并根据需要进行定制。这种方式可以提供更灵活的网络配置和管理。
另一方面,如果你的网络环境是全局性的,并且你希望在整个项目中使用统一的路由策略,那么选择 Global dynamic routing mode 可能更合适。这样,你可以使用单个路由策略来管理整个项目中的所有区域,简化了配置和管理的复杂性。
需要考虑的因素还包括网络规模、复杂性和管理成本。如果你的网络规模较小且相对简单,那么选择 Regional dynamic routing mode 可能更加适合。如果你的网络规模较大且跨多个区域,那么选择 Global dynamic routing mode 可能更具优势。
我建议选择regional就好
切换到Compute enginee 页面, 在VM instance的子页面,点解create VM instance button
这样我们就见到了 下面 的页面
选择region
因为我的账号的是公司给员工买的学习账号, 只有两个regions 选择 我这里就选了europe-west2
如果是自己购买的账号, 建议选择香港或者台湾, 网络速度会更快。
选择vm 的规格
如果没有特别需求的话,选择E2 (最便宜)的机型就好, 如果你要使用显卡计算, 可以选择GPUs的机型, 如果是大规模并行作业, 建议选择AMD EPYC 的机型.
下面我选了E2 4核16GB的 , 价格是$127 一个月, 美金哦, 相信香港台湾的机器会便宜一点。
Availability policies
Standard(标准):选择这个选项意味着你的虚拟机实例将以正常的定价和可用性模式运行。这是一种常规的可用性策略,适用于大多数工作负载和应用程序。
Spot(抢占式):选择这个选项意味着你的虚拟机实例将以抢占式定价模式运行。抢占式实例的定价较低,但可能会在资源需求高时被其他用户的正常实例抢占。这种策略适用于对可用性要求较低的工作负载,例如批处理作业或测试环境。
如果是生产用的服务器请选择 standard, 否则选择Spot 可以节省3分之二的费用
Display device
Enable to use screen capturing and recording tools.
如果你需要跑 selenium 等自动化UI测试, 则需要启用这个选项
一些杂项
Confidential VM service
Confidential VM service(保密虚拟机服务)是Google Cloud Platform(GCP)提供的一项安全功能,旨在保护敏感数据免受恶意软件和特权用户的访问。
Confidential VM service 使用了硬件级别的内存加密技术,称为Intel Software Guard Extensions(SGX),以保护虚拟机中的敏感数据。SGX技术通过将敏感数据存储在加密的内存区域中,确保只有经过验证的代码可以访问和处理这些数据。
我觉得是多9余 的东西, 而且只有部分intel机型可以启用. 建议不要启用
Container
如果你想马上部署某个docker 容器在内, 可以配置这个选项, 当然后面再配置docker也可以的
配置启动盘
默认10GB, 我这里改到了100GB, 有特殊需求(例如大量日志写入)可以选择ssd
但是后面可以继续添加磁盘的
配置service account
一般来讲, 一台VM需要绑定1个service account, 这样这个VM不需要其他任何配置就可以用这个service account去访问其他GCP资源, 具体权限就看这个service account的权限了, 个人建议实现create 1个 vm-common的service account for 所有的vm, 如果不配置, 默认下会为这个VM创建1个新的service account, 具体怎么配置看需求了
配置VM级别firewall
上面说到了, VPC network 本身有firewall 设置, 但是这里配置的是VM级别的firewall
enable http 和 https 就好
一些高级设定
Networking
重点来了, 这里就是配置VM网络的地方
Network tag:
如果你没有大量的vm需要管理,可以留空
Hostname:
这里就是配置hostname的地方, 留空让它取默认值也可以的
IP forwarding:
如果你的vm要作为Nat gateway使用, 则要enable这个ip 选项
具体关于什么是 ip 转发请参考
https://openvpn.net/faq/what-is-and-how-do-i-enable-ip-forwarding-on-linux/
Network interfaces
这里就是配置VPC network 和subnet的地方了, 必须选1个
Disks
这里可以添加额外挂载的磁盘
Security
这里就是配置登录的地方
强烈建议把你local 电脑的public key 加上去
那么初始化后你就可以在本地免密码登录它了, 然后再设置账号密码让其他人登录
初始化VM 并获得external ip
接下来我们就可以按create button了
然后在本地尝试登录:
> ssh 34.147.158.1
The authenticity of host '34.147.158.1 (34.147.158.1)' can't be established.
ED25519 key fingerprint is SHA256:ZmOJwYYLwxKHIgBwLOv9Pvm9ClWYIblZmnJb7e3prFk.
This key is not known by any other names.
Are you sure you want to continue connecting (yes/no/[fingerprint])? yes
Warning: Permanently added '34.147.158.1' (ED25519) to the list of known hosts.
Linux instance-2 5.10.0-26-cloud-amd64 #1 SMP Debian 5.10.197-1 (2023-09-29) x86_64
The programs included with the Debian GNU/Linux system are free software;
the exact distribution terms for each program are described in the
individual files in /usr/share/doc/*/copyright.
Debian GNU/Linux comes with ABSOLUTELY NO WARRANTY, to the extent
permitted by applicable law.
gateman@instance-2:~$ free
total used free shared buff/cache available
Mem: 16392448 144088 16082020 388 166340 15995908
Swap: 0 0 0
gateman@instance-2:~$
就是这么简单