anchor.diff:        --caller-reference $ID \
         | jq .DelegationSet.NameServers
   
  -== Create kubernetes cluster
  +== Create Kubernetes cluster
   
   The Kops CLI can be used to create a highly available cluster, with multiple master nodes spread across multiple Availability Zones. Workers can be spread across multiple zones as well. Some of the tasks that happen behind the scene during cluster creation are:
   
  
positive.code: 
  == S3 bucket to store Kubernetes config
  
  Kops needs a “state store” to store configuration information of the cluster.  For example, how many nodes, instance type of each node, and Kubernetes version. The state is stored during the initial cluster creation. Any subsequent changes to the cluster are also persisted to this store as well. As of now, Amazon S3 is the only supported storage mechanism. Create a S3 bucket and pass that to the kops CLI during cluster creation.
  
      aws s3api create-bucket --bucket kubernetes-aws-config
      # enable versioning and export
      aws s3api put-bucket-versioning \
        --bucket kubernetes-aws-config \
        --versioning-configuration \
        Status=Enabled
      export KOPS_STATE_STORE=s3://kubernetes-aws-config
  
  == Create hosted zone on Route53
  
  DNS is used by Kubernetes to allow the various Kubernetes components to find and communicate with each other.
  
  As an alternative to using DNS, Kops 1.6.2 introduced the ability to create a gossip-based cluster, making a top-level domain or a subdomain no longer required to create the cluster. The only requirement to trigger this is to have the cluster name end with `.k8s.local`. This is a fairly recent feature, so we recommend you continue to use DNS for production clusters. If you wish to use a gossip-based cluster, then you can skip this section.
  
  The domain allows the worker nodes to discover the master and the master to discover all the etcd servers. This is also needed for kubectl to be able to talk directly with the master.
  
  This domain may be registered with AWS, in which case a Route 53 hosted zone is created for you. Alternatively, this domain may be at a different registrar. In this case, create a Route 53 hosted zone. Specify the name server (NS) records from the created zone as NS records with the domain registrar.
  
  If you own a Route53 domain name, download https://github.com/stedolan/jq/wiki/Installation[jq]
  and run this command:
  
      ID=$(uuidgen) && aws route53 create-hosted-zone \
        --name kubernetes-aws.io \
        --caller-reference $ID \
        | jq .DelegationSet.NameServers
  
  See other means of creating DNS: https://github.com/kubernetes/kops/blob/master/docs/aws.md#configure-dns
  
  If you don't own a DNS domain name, you can create a custom domain using Route53's private hosted zone.
  You need to provide VPC info to run this command. See below how to <<Create VPC (Optional)>>
  
      ID=$(uuidgen) && aws route53 create-hosted-zone ]\
        --name k8s-aws.internal \
  
negative.code:       --network-cidr 10.1.0.0/16 \
        --ssh-public-key $mypubkey
  
  TIP: You may need to add cluster API endpoints into your hosts file (/etc/hosts) if you use Route53
  private hosted zone along with VPC option.
  
  == Delete cluster
  
  Any cluster can be deleted as shown:
  
      kops delete cluster \
        <cluster-name> \
        --state s3://kubernetes-aws-io \
        --yes
  
  `<cluster-name>` is the name of the cluster. For example, our `cluster.k8s.local` cluster can be deleted as:
  
      kops delete cluster \
        cluster.k8s.local \
        --state s3://kubernetes-aws-io \
        --yes
  
  
  If you created a private VPC, then an additional cleanup of resources is required as shown below:
  
      # Find Route53 hosted zone ID from the console or via CLI and delete hosted zone
      aws route53 delete-hosted-zone --id Z1234567890ABC
      # Delete VPC if you created earlier
  