Upgrade to Pro — share decks privately, control downloads, hide ads and more …

Creating a Kubernetes Cluster on AWS Using Kubernetes Operations

September 23, 2017

Creating a Kubernetes Cluster on AWS Using Kubernetes Operations

Small talk about getting a Kubernetes cluster up & running on AWS. In this talk, I describe about few gotchas that you might run into when setting up a k8s cluster


September 23, 2017

More Decks by Sathya

Other Decks in Technology


  1. Kubernetes Operations {KOPS}

    View Slide

  2. About Me


    Ops @ Adobe.io

    Handled Dev/Ops/DBA/Data Migration/etc etc

    View Slide

  3. Task

    Deploy Kubernetes on AWS


    View Slide

  4. Maybe not..

    View Slide

  5. Toolchain choices


    Kubernetes Operations (“production grade”)

    Kube-up.sh (removed as of 1.6)


    Kube Spray

    CoreOS Techtonic

    View Slide

  6. Kubernetes Operations (“kops”)

    Kubernetes Operations

    Current recommended/supported for AWS

    “Production grade”

    Can create single/HA Master node

    Kubectl for the cluster

    View Slide

  7. What can kops do?

    Create clusters

    Create new VPC

    Use an existing VPC

    Update clusters

    Increase node counts

    Increase instance size

    Rolling* updates

    Change root volume size

    Change instance group to Spot instances

    Upgrade clusters

    Import/upgrade from kube-up to kops

    Upgrade across versions

    View Slide

  8. What else can kops do?

    Output config



    Actually launch the instances

    Dry run by default

    Create Bastion host

    Tear down the cluster

    Many more. Read the docs!

    View Slide

  9. Pre-requisites

    awscli installed
    ○ pip install awscli

    kubectl installed

    brew install kubectl


    AWS Account*

    You maybe charged some amount

    kops installed

    brew install kops


    View Slide

  10. Way kops works

    Creates an IAM group

    Attach below group policies
    ○ AmazonEC2FullAccess
    ○ AmazonRoute53FullAccess
    ○ AmazonS3FullAccess
    ○ IAMFullAccess
    ○ AmazonVPCFullAccess

    Creates a user to this group

    Creates S3 bucket to store state

    View Slide

  11. Way kops works

    Set the name of the cluster to NAME

    Set the master & node size/count
    ● kops create cluster



    View Slide

  12. Points to note

    You do not* need control over domain

    *caveat: kops needs to be v1.6.2 & above

    Cluster name must end in

    Kops creates security groups for SSH open to all

    Always review what kops does with
    kops edit cluster $NAME

    Kops creates masters & nodes in public subnet

    View Slide

  13. Points to note

    Kops creates m3.medium for master and 2x t2.medium for nodes by default.

    Size accordingly.

    Kops creates a new VPC, IGW, subnet but you can make it reuse existing VPC &
    ○ export VPC_ID=vpc-12345678
    ○ export NETWORK_CIDR=
    ○ kops create cluster ${NAME} --vpc=${VPC_ID}

    View Slide

  14. Instance Groups

    Groups of similar machines

    Master IG, Node IG

    Edit IG, changes reflect on all instances
    ○ kops get instancegroups
    ○ kops edit ig
    ○ kops update cluster ${NAME}

    Changes apply to new instances only!

    Do a rolling update to update existing instances

    View Slide

  15. Hammertime!


    View Slide

  16. Docs & References

    Kops Documentation - https://github.com/kubernetes/kops/tree/master/docs

    Deploying Highly Available Kubernetes cluster with Kops -

    AWS Blog - https://aws.amazon.com/blogs/compute/kubernetes-clusters-aws-kops/

    Backstory of Kubernetes - https://changelog.com/podcast/250

    View Slide

  17. Q&A? Reach me

    Twitter - sathyabhat

    DevUp Slack

    Join in https://slackipy.herokuapp.com/

    #devops channel

    View Slide