As guillaume blaquiere suggested, Cloud Run automatically scales up and down based on traffic, by eliminating the need for manual scaling and auto scaling conflicts.
You can use Cloud Scheduler to schedule a script to be executed on Cloud Run, for example, and have it scale up or down the node pool according to your start and end business hours.
Cloud Scheduler - Set up two cloud scheduler jobs. One to run during the end of business hours to scale down the nodes and disable auto scaling, another one to run at the start of business hours to scaleup and re-enable autoscaling.
Cloud Functions - Create two Cloud Functions corresponding to each job.
Creating pub/sub topics : That can be used in Cloud Function. Select the cloud Pub/Sub as a trigger, once the Cloud Function is triggered we can verify the node count of the GKE cluster is reduced.
Another way : Use kubernetes Cluster AutoScaler with enabling Node Auto-provisioning- It is dynamically created and deleted node pools based on resource requirement. This method provides a solution to scale up and scale down by reducing cost.
Beginning with Kubernetes version 1.7, you can specify a minimum size of zero for your node pool. This allows your node pool to scale down completely if the instances within aren't required to run your workloads.
And also refer to Rittik Gupta’s Medium blog for more details.