上一篇文章对GKE做了小小的介绍,这篇就来从0开始建k8s
,本篇都是以UI操作用主,如果有cli控可以参考
进入GCP的console页面时,点选导览选单
,选择今天本篇的主角Kubernetes Engine
一进来就可以看到google大大的广告Autopilot
,如果按下立即试用
的话,本篇就全剧终
这边不理它,下面的总览
会呈现目前已经建立的k8s cluster,包含node数量跟资源,通知这边会跟你说目前是否可版本升级或是资源吃紧,像图上的pod无法排程
就是cluster中有pod发生异常。
选择GKE Standard
这点就分成三个部份丛集基本资讯
、节点集区
、丛集
这边区域跟地区性就自行选择cluster的所在机房,在台湾一般都选asia-east1-a/b/c这三个。
指定预设节点位置
:如果只选一个区域,node只会建在一个区域,如果不想要鸡蛋放在同一个篮子里,也可以勾多个区域,这样子node会分布到不同的区域上
静态版本:pool的gke版本不会被自动更新,但是master还是会被自动更新
发布版本:你就当开启window更新就好
如果是prod环境就自行评估要不要用发布版本
,这边就用静态版本
为主,GKE跟K8s的版本号会有差一些些喔。
节点版本
可以不跟cluster master的一致,但是版本号无法超越它。
启用自动调度资源功能
就是auto scaling node的功能,可设定它的node上下限值,搭配指定节点位置
设定,可以做到跨zone的使用情境
自动升级
这个就见人见智啦,个人是倾向关掉..因为你不想要半夜突然被call起来尿尿吧XD,它还有一个先天的限制,node数最好要大於3台,如果低於3台,有可能更新时三台同时离线XD
节点的image有分成二种
含有 Containerd 的 Container-Optimized OS
跟含有 docker 的 Container-Optimized OS
,
基本上新版本GKE预设已经是含有 Containerd 的 Container-Optimized OS
,windows node也有,但是需 Kubernetes 1.21.1-gke.2200 以上版本才行。
安全性如果没特殊需求就是照default走就好
如果要帮cluster贴上label可以在这边新增
因为无法关掉自动更新,所以可以用维护作业排除时段
的方法来避免,新增一组很长期的时间就可以
因为启用垂直自动调度 Pod 资源功能
跟启用节点自动布建功能
这二个功能算是GKE上面新增的黑科技,但是因为没有实际在生产环境用过,无法很确认它的作动方式,如果本身deplymonet上面有指定resource的话,应该是不用特别开启它。
网路
这边会吃虚拟私人云端网路
的设定,如果没特殊需求就直接用default
就好,这边就不多做说明咧了~~
公用丛集
知道ip就可以被外部网路打到,也可以从cluster里面连外
私人丛集
除非有开loadbanace或是nodeport才会被外部存取,cluster内是无法连外,但是可以透过cloud nat
连外
丛集预设 Pod 位址范围
这个就看自己有没有ip位址范围的需求,如果没有是可以照着他的范例填就好
其他选项就照default值就好
这边一样是照default值就可以了
这边可以自行加上label,方便团队管理专案
如果有使用elk取代stackdriver的话,那就可以不用cloud logging
,因为这边还是会收取费用,如果自架log系统就可以不用被课金了(?)
cloud monitoring
就打开就好,剩下功能就照default值设定
Istio
这边就不走gcp上的版本,因为gcp上的istio跟官方版的还有是版本差异,所以统一还是走官方安装就好
以上该勾的都勾一勾完就可以建立啦
除了从ui操作外,他还有REST跟CLI操作
REST
POST https://container.googleapis.com/v1beta1/projects/rd2-test/zones/asia-east1-a/clusters
{
"cluster": {
"name": "cluster-1",
"masterAuth": {
"clientCertificateConfig": {}
},
"network": "projects/rd2-test/global/networks/default",
"addonsConfig": {
"httpLoadBalancing": {},
"horizontalPodAutoscaling": {},
"kubernetesDashboard": {
"disabled": true
},
"dnsCacheConfig": {},
"gcePersistentDiskCsiDriverConfig": {
"enabled": true
}
},
"subnetwork": "projects/rd2-test/regions/asia-east1/subnetworks/default",
"nodePools": [
{
"name": "default-pool",
"config": {
"machineType": "n1-standard-2",
"diskSizeGb": 100,
"oauthScopes": [
"https://www.googleapis.com/auth/devstorage.read_only",
"https://www.googleapis.com/auth/logging.write",
"https://www.googleapis.com/auth/monitoring",
"https://www.googleapis.com/auth/servicecontrol",
"https://www.googleapis.com/auth/service.management.readonly",
"https://www.googleapis.com/auth/trace.append"
],
"metadata": {
"disable-legacy-endpoints": "true"
},
"imageType": "COS_CONTAINERD",
"diskType": "pd-standard",
"shieldedInstanceConfig": {
"enableIntegrityMonitoring": true
}
},
"initialNodeCount": 1,
"autoscaling": {},
"management": {
"autoUpgrade": true,
"autoRepair": true
},
"maxPodsConstraint": {
"maxPodsPerNode": "110"
},
"version": "1.20.9-gke.1001",
"upgradeSettings": {
"maxSurge": 1
}
}
],
"locations": [
"asia-east1-a"
],
"networkPolicy": {},
"ipAllocationPolicy": {
"useIpAliases": true
},
"masterAuthorizedNetworksConfig": {},
"autoscaling": {},
"networkConfig": {
"datapathProvider": "LEGACY_DATAPATH"
},
"defaultMaxPodsConstraint": {
"maxPodsPerNode": "110"
},
"authenticatorGroupsConfig": {},
"databaseEncryption": {
"state": "DECRYPTED"
},
"shieldedNodes": {
"enabled": true
},
"releaseChannel": {},
"notificationConfig": {
"pubsub": {}
},
"initialClusterVersion": "1.20.9-gke.1001",
"location": "asia-east1-a",
"loggingConfig": {
"componentConfig": {}
},
"monitoringConfig": {
"componentConfig": {
"enableComponents": [
"SYSTEM_COMPONENTS"
]
}
}
}
}
CLI
gcloud beta container --project "your_project" clusters create "cluster-1" --zone "asia-east1-a" --no-enable-basic-auth --cluster-version "1.20.9-gke.1001" --release-channel "None" --machine-type "n1-standard-2" --image-type "COS_CONTAINERD" --disk-type "pd-standard" --disk-size "100" --metadata disable-legacy-endpoints=true --scopes "https://www.googleapis.com/auth/devstorage.read_only","https://www.googleapis.com/auth/logging.write","https://www.googleapis.com/auth/monitoring","https://www.googleapis.com/auth/servicecontrol","https://www.googleapis.com/auth/service.management.readonly","https://www.googleapis.com/auth/trace.append" --max-pods-per-node "110" --num-nodes "1" --monitoring=SYSTEM --enable-ip-alias --network "projects/rd2-test/global/networks/default" --subnetwork "projects/rd2-test/regions/asia-east1/subnetworks/default" --no-enable-intra-node-visibility --default-max-pods-per-node "110" --no-enable-master-authorized-networks --addons HorizontalPodAutoscaling,HttpLoadBalancing,GcePersistentDiskCsiDriver --enable-autoupgrade --enable-autorepair --max-surge-upgrade 1 --max-unavailable-upgrade 0 --enable-shielded-nodes --node-locations "asia-east1-a"
这时候就可以看到丛集上面出现刚刚建立的资讯
建立完成後,可以执行连线至丛集
gcloud container clusters get-credentials cluster-1 --zone asia-east1-a --project your_project
最後一哩路就完成啦~~~
以上就是简单的GKE建立丛集的流程,如果要安装Istio就可以从前面的文章一步一步装起来~~
<<: Day22 - Shioaji X Backtesting -双均线策略
>>: 21 - Commitlint - Lint Commit 讯息
前置处理器(Preprocessor) 在程序码最前面内容,编译前编译器会依照这些内容进行不同的处理...
tags: OC 30 day OC 有哪些数据类型呢? oc 中支援所有C语言的数据变量。 基本数...
DBABootcamp 在处理资料库还原的时候,常常会出现 (the database is in ...
PST档单一档案20GB 超过或将近 , 造成开启无反应或者需时很久. 解决1:scanpst 修...
您是否有做过投资运彩的发财梦呢,或幻想过周公托梦给您一封如何靠投资运彩赚大钱的《财富密码》!? 但是...