GCP简介
2011年GCP正式推出,首先提供了PaaS(平台即服务),可以在平台上直接部署应用程序,而不是启动VM后
对于k8s用户重要的服务是GKE,托管k8s的服务,可以从k8s的安装、升级和管理中解脱出来
GCP组件
GCP提供web控制台和命令行界面(CLI),可直接控制GCP基础设施
VPC
google的VPC和AWS是完全不同的策略,不要为VPC设置CIDR,只需将一个或多个子网添加到VPC;子网始终带有CIDR块,GCP VPC可被看做子网的逻辑组,VPC内的子网可以互相通信
两种模式:自动模式(auto)、自定义模式(custom)
auto:将在每个区域上使用预定义CIDR块创建子网
custom:手动创建所需CIDR前缀的子网
子网
GCP的子网,跨地区region内多个区域(可用区),不能像AWS在单个可用区内创建子网,需要指定创建子网时的整个地区,没有像AWS公有和私有子网的概念(路由和Internet网关或NAT网关的组合,以确定是公有子网或私有子网)GCP中所有的子网都有到Internet网关的路由
GCP使用主机(实例)级访问控制(网络标签,Network tags),而不是子网级访问控制,以确保网络安全
GCP带来更简化和可扩展的VPC管理,可随时添加子网扩展整个网络块
GPC VPC可添加不同CIDR前缀网络块到单个VPC,无论何时扩展网络,都可以随意分配另一个CIDR前缀以添加到VPC
防火墙规则
AWS中,当启动EC2实例,需至少分配一个与EC2紧密耦合的SG
GCP中,无需分配任何防火墙规则,防火墙规则和VM实例通过网络标签松散耦合,没有直接关联
VM实例
GCP中VM实例与AWS EC2相似,可从具有不同硬件配置的各种机器(实例)类型中进行选择
启动VM实例前,先创建ssh公钥->启动VM实例
负载均衡
GCP提供了几种类型的负载均衡:
4层TCP负载均衡(类似AWS Classic ELB)
4层UDP负载均衡
7层HTTP(s)负载均衡(具有基于内容-上下文的路由)
持有化磁盘
Persistent Disk(PD)存储服务,可以在每个区域分配所需的大小和类型(标准或SSD),以便随时附加/分离到VM实例
Google 容器引擎(GKE)
GKE用来托管Kubernetes服务,服务背后使用GCP组件,如VPC、VM实例、PD、防火墙规则、负载均衡(LoadBalancer)
可以使用kubectl 在GKE上控制kubernetes集群,它被集成在cloud SDK中
在GKE上设置第一个Kubernetes集群
使用gcloud命令在GKE上设置Kubernetes集群
启动Kubernetes集群(启动几个VM实例,设置Kubernetes主节点和工作点),Kubernetes主节点和etcd将由GCP全托管
使用kubectl proxy命令作为代理链接计算机,通过代理访问UI
节点池
GKE将Kubernetes节点作为节点池进行管理,可以管理连接到Kubernetes集群的一个或多个节点池
多区域集群
GKE支持多区域集群,在多个区域上启动Kubernetes节点,但限制在同一个地区内
集群管理
使用gcloud命令升级:
从集群中注销目标节点
删除旧的VM实例
配置新的VM实例
使用新版本设置节点
向主节点注册
Kubernetes云提供商
GKE提供Kubernetes云提供商与GCP基础设施的深度集成
存储类型(storageClass)
GKE默认设置存储类型为使用持久化磁盘
创建持久卷声明时,会自动为Kubernetes持久卷分配GCP持久化磁盘
L4负载均衡
只需将service.spec.type 指定为LoadBalancer,GKE将设置和自动配置L4负载均衡(LoadBalancer)
L4负载均衡与Kubernetes节点之间的响应防火墙规则可由云提供商自动创建,它简单、功能强大,能快速的将应用程序开放给互联网
L7负载均衡(Ingress)
Kubernetes Ingress,可以设置GCP L7负载均衡基于URL分配对目标服务的请求
需设置一个或多个NodePort服务,然后创建Ingress规则以指定服务;在后端,Kubernetes将自动创建和配置防火墙规则、健康检查、后端服务、转发规则、URL映射
示例:
创建使用ngix和tomcat部署到Kubernetes集群,绑定到NodePort而不是LoaderBalancer
创建指向这些服务的Kubernetes Ingress,才能从互联网访问服务
Kubernetes Ingress定义与GCP后端服务定义非常相似,需要指定URL路径,Kubernetes服务名称和服务端口号的组合