Im trying to setup a cluster autoscaler. after following docs and trying from this thread to do one , i wasn't able to create one.
Created a Cluster using kops cli
kops create cluster --name=pavan.k8s.local --zones=us-east-1a --cloud=aws --master-size=t2.medium --node-size=t2.medium
Replaced the created node with a new node of these configurations
apiVersion: kops.k8s.io/v1alpha2
kind: InstanceGroup
metadata:
labels:
kops.k8s.io/cluster: pavan.k8s.local
name: nodes-us-east-1a
spec:
image: 099720109477/ubuntu/images/hvm-ssd/ubuntu-focal-20.04-amd64-server-20221206
instanceMetadata:
httpPutResponseHopLimit: 1
httpTokens: required
machineType: t3.medium
rootVolumeSize: 8
rootVolumeType: gp2
maxPrice: '0.20'
maxSize: 4
minSize: 1
role: Node
subnets:
- us-east-1a
Edited the node group
$ kops edit ig nodes
spec:
cloudLabels:
app.kubernetes.io/cluster/pavan.k8s.local: owned
k8s.io/cluster-autoscaler/enabled: ""
k8s.io/cluster-autoscaler/node-template/label: ""
kubernetes.io/cluster/<CLUSTER_NAME>: owned gave an error initially saying "kubernetes.io/cluster" prefix is reserved for use by Kubernetes . so i added app.kubernetes.io/cluster/pavan.k8s.local: owned instead
I later edited the cluster
$ kops edit cluster
spec:
additionalPolicies:
node: |
[
{
"Effect": "Allow",
"Action": [
"autoscaling:DescribeAutoScalingGroups",
"autoscaling:DescribeAutoScalingInstances",
"autoscaling:SetDesiredCapacity",
"autoscaling:DescribeLaunchConfigurations",
"autoscaling:DescribeTags",
"autoscaling:TerminateInstanceInAutoScalingGroup"
],
"Resource": ["*"]
}
]
Deployed an nginx app
apiVersion: apps/v1
kind: Deployment
metadata:
name: test-app
labels:
app: test-app
spec:
replicas: 1
selector:
matchLabels:
app: test-app
template:
metadata:
labels:
app: test-app
spec:
containers:
- name: test-app
image: nginx:1.14.2
ports:
- containerPort: 80
resources:
requests:
cpu: 200m
memory: 1Gi
limits:
cpu: 2000m
memory: 4Gi
Scaled the deployment
$ kubectl scale deploy test-app --replicas=4
$ kubectl get pods
NAME READY STATUS RESTARTS AGE
test-app-cf78774cf-7f59b 0/1 Pending 0 5m
test-app-cf78774cf-ctrpx 1/1 Running 0 6m
test-app-cf78774cf-jf76d 1/1 Running 0 6m
test-app-cf78774cf-p8gwn 1/1 Running 0 5m
Message:
0/2 nodes are available: 1 Insufficient memory, 1 node(s) had untolerated taint {node-role.kubernetes.io/control-plane: }. preemption: 0/2 nodes are available: 1 No preemption victims found for incoming pod, 1 Preemption is not helpful for scheduling.
Can someone Please enlighten me on how to do this in detail?
Thank you.