相关文档
当然你需要先申请一个aws账号(必备:信用卡)
概念点解释:
nodegroup:节点组,是eks的node组合概念,分为自管理节点组,托管节点组,用来配置多台资源配置的节点资源方式,相关参数有:最大,最小节点数量、系统基础配额、可用区等信息,后续用来快速kuo平滑升级时,也能发挥大作用
会在web页面显示
创建方式-web页面创建、命令行创建、yaml配置文件使用managedNodeGroups
定义nodegroup类型web不显示
创建方式-命令行创建时使用--managed=false
参数、yaml配置文件使用nodeGroups
定义nodegroup类型yaml模板文件
apiVersion: eksctl.io/v1alpha5
kind: ClusterConfig
metadata:
name: test-eks01-1-16
region: ap-northeast-1
version: "1.17" #指定版本 默认为最新
vpc: #加入vpc
id: "vpc-0c5772731331faf1c"
subnets:
private:
ap-northeast-1d:
id: "subnet-09593b4fc19416371"
ap-northeast-1a:
id: "subnet-0e2ec95462826a769"
ap-northeast-1c:
id: "subnet-06d1ea445c2d75506"
# ap-northeast-1c:
# id: "subnet-07b057c0481f60720"
# ap-northeast-1d:
# id: "subnet-09ff2d8c908309b97"
# ap-northeast-1d:
# id: "subnet-049ee3fe1eed8bf97"
clusterEndpoints: ##公网和内网访问master
publicAccess: true
privateAccess: true
nodeGroups: #节点组类型
- name: test-eks01-nodegroup-1-17-2
privateNetworking: true #node节点只有内网地址 nat网关模式上网 false 即分配公网ip
instanceType: t3.medium #实例类型
minSize: 1
maxSize: 3
desiredCapacity: 1
kubeletExtraConfig: #节点压力驱逐配置
kubeReserved: #kubenernetes组件 预留配置
cpu: "300m"
memory: "300Mi"
ephemeral-storage: "1Gi"
kubeReservedCgroup: "/kube-reserved"
systemReserved: #系统组件预留配置
cpu: "300m"
memory: "300Mi"
ephemeral-storage: "1Gi"
evictionHard: #硬驱逐条件
memory.available: "200Mi"
nodefs.available: "10%"
featureGates:
RotateKubeletServerCertificate: true #固定打开 或者不生效
volumeSize: 50
ssh: # import default public key (~/.ssh/id_rsa.pub)
allow: true
labels: {role: k8s-worker}
#taints: #污点
# feaster: "true:NoSchedule"
tags: #节点标签
nodegroup-role: worker-test
preBootstrapCommands:
# node节点创建后执行的命令
- "echo 'the is node1.17' >> /usr/local/testcmd.txt "
推荐使用的第二种命令行创建方式
iam权限管理很头大,我也还没玩明白,所以最后还是选择了使用命令行方式创建,集群创建需要一个,创建节点组时也需要一个
iam账号创建文档
注意选择eks集群管理的权限,否则下一步创建集群时会无可用iam角色
第三页:附加组件选择
第4页,总览全部配置,下一步完成创建集群
这样一个还没加入计算节点的eks集群就创建完成了,下面开始配置node节点
第一页:基础配置和node标签污点添加
node基础配置,缩放配置等
网络相关
总览全部配置,完成创建
web操作即可
分为两步
1.先升级master(10分钟左右)
2.再升级nodegroup即可(根据pod数量变化)
4.升级默认插件
我这里自管理集群没有资源,web方式的话 自己点升级就行
相关配置文件
命令行配置user-config信息
aws configure
vim ~/.aws/credentials #静态修改
vim ~/.aws/config #静态修改
注意:eksctl默认使用aws账号创建相关资源,敲每一个命令时,谨慎严行!!
相关命令
##创建集群命令行方式
# eksctl create cluster \
--region ap-northeast-1 \
--name test-eks \
--nodegroup-name eks-workers \
--node-type m6.large \
--nodes 2 \
--nodes-min 1 \
--nodes-max 3 \
--node-volume-size=50 \
--alb-ingress-access \
--ssh-access \
--node-private-networking \
--vpc-cidr 172.0.0.0/16
##yaml配置文件方式创建
# eksctl create cluster -f cluster.yaml
##创建集群跳过创建节点组
# eksctl create cluster --config-file=|--name= --without-nodegroup
##查看你的集群
# eksctl get cluster
删除集群
格式化,创建集群时所有资源一键清空!!!!!!!!
eksctl delete cluster -f cluster.yaml
##命令行方式创建
eksctl create nodegroup \
--cluster <my-cluster> \
--name <al-nodes> \
--node-type <t3.medium> \
--nodes <3> \
--nodes-min <1> \
--nodes-max <4> \
--ssh-access \
--ssh-public-key <my-key>
##yaml文件方式部署节点组(自动部署到集群中)
eksctl create nodegroup --config-file=<path>
##查看所有节点组
eksctl get nodegroup --cluster=<k8s-name>
##从节点中删除节点组
eksctl delete nodegroup --cluster=<k8s-name> --name=<nodegroup-name>
##缩放管理节点组(max~min之间)
eksctl scale nodegroup --cluster=<k8s-name> --nodes=3 <nodegroup-name>
##缩放节点组并改变max\min大小
eksctl scale nodegroup --cluster=test-eks01-1-16 --nodes=4 --name=test-eks01-nodegroup-1-17 [ --nodes-min=2 ] [ --nodes-max=6 ]
实例yaml文件
apiVersion: eksctl.io/v1alpha5
kind: ClusterConfig
metadata:
name: test-eks01-1-16
region: ap-northeast-1
version: "1.17" #指定版本 默认为最新 注意:全局参数 创建nodegroup时也会使用这配置
vpc: #加入vpc
id: "vpc-0c5772731331faf1c"
subnets:
private:
ap-northeast-1d:
id: "subnet-09593b4fc19416371"
ap-northeast-1a:
id: "subnet-0e2ec95462826a769"
ap-northeast-1c:
id: "subnet-06d1ea445c2d75506"
# ap-northeast-1c:
# id: "subnet-07b057c0481f60720"
# ap-northeast-1d:
# id: "subnet-09ff2d8c908309b97"
# ap-northeast-1d:
# id: "subnet-049ee3fe1eed8bf97"
clusterEndpoints: ##公网和内网访问master
publicAccess: true
privateAccess: true
nodeGroups:
- name: test-eks01-nodegroup-1-17-2
privateNetworking: true #node节点只有内网地址 nat网关模式上网
instanceType: t3.medium
minSize: 1
maxSize: 3
desiredCapacity: 1 #默认数量
kubeletExtraConfig: #节点压力驱逐配置
kubeReserved: #kubenernetes组件 预留配置
cpu: "300m"
memory: "300Mi"
ephemeral-storage: "1Gi"
kubeReservedCgroup: "/kube-reserved"
systemReserved: #系统组件预留配置
cpu: "300m"
memory: "300Mi"
ephemeral-storage: "1Gi"
evictionHard: #硬驱逐条件
memory.available: "200Mi"
nodefs.available: "10%"
featureGates:
TaintBasedEvictions: true
RotateKubeletServerCertificate: true #固定打开 或者不生效
volumeSize: 50
ssh: # import default public key (~/.ssh/id_rsa.pub)
allow: true
labels: {role: k8s-worker} #节点标签
#taints: #污点
# feaster: "true:NoSchedule"
tags:
nodegroup-role: worker-test
preBootstrapCommands:
# node节点创建后执行的命令
- "echo 'the is node1.17' >> /usr/local/testcmd.txt "
参考官方文档
eksctl文档
eksctl upgrade cluster --name <my-cluster> --approve
或者点击web页面升级参考web部署方式升级
升级托管节点组
eksctl upgrade nodegroup --name=managed-ng-1 --cluster=<k8s-name> --kubernetes-version=1.17
自管理节点组
人为方式升级
思路: 1.升级master节点 2.修改yaml的version字段 3.部署新的节点组 4.修改就调度组不可调度 5.修改pod的yaml差异和兼容性api-version等 6.驱逐旧调度上pod到新建节点组 7.删除旧节点组
详细部署命令
# eksctl upgrade cluster --name --approve
# cat new-nodegroup.yaml |grep version
version: "1.16" #指定版本 默认为最新
# eksctl create nodegroup --config-file=
不可调度不影响当前pod
# kubectl cordon
取消不可调度
# kubectl uncordon
略…
参考k8s官网更新日志和社区文档 yaml 格式,镜像,api-version
# kubectl drain --ignore-daemonsets
# kubectl drain --ignore-daemonsets
# eksctl delete nodegroup --cluster= --name= --approve
自行选择升级,其实底层为更换image版本,建议停机维护时升级,方便事故回退!!
要更新kube-proxy,请运行:
eksctl utils update-kube-proxy --cluster=<clusterName>
要更新aws-node,请运行:
eksctl utils update-aws-node --cluster=<clusterName>
要更新coredns,请运行:
eksctl utils update-coredns --cluster=<clusterName>
升级后,请务必运行kubectl get pods -n kube-system并检查所有插件 pod 是否处于就绪状态,您应该看到如下内容:
NAME READY STATUS RESTARTS AGE
aws-node-g5ghn 1/1 Running 0 2m
aws-node-zfc9s 1/1 Running 0 2m
coredns-7bcbfc4774-g6gg8 1/1 Running 0 1m
coredns-7bcbfc4774-hftng 1/1 Running 0 1m
kube-proxy-djkp7 1/1 Running 0 3m
kube-proxy-mpdsp 1/1 Running 0 3m