This project is helping you to creating a HA kubernetes cluster step by step.
Install Overview:
version | service management | |
---|---|---|
docker | 18.06.1-ce | systemd |
kubelet | v1.13.0 | systemd |
kube-proxy | v1.13.0 | systemd |
etcd | 3.2.24 | kubelet/docker |
kube-apiserver | v1.13.0 | kubelet/docker |
kube-controller-manager | v1.13.0 | kubelet/docker |
kube-scheduler | v1.13.0 | kubelet/docker |
Arch: Docs: Creating a Custom Cluster from Scratch docker install official document installing calico for kubernetes
Setup:
-
Download the tarball from the release page kubernetes release page.
$tar -zxvf kubernetes.tar.gz $cd kubernetes/cluster/ && bash get-kube.sh $cd kubernetes/cluster/kubernetes/server && tar -zxvf kubernetes-server-linux-amd64.tar.gz $ls kubernetes/server/bin/
Copy the kubelet、kube-proxy to the binaries dir.
-
change the cluster info in prepare.sh and ansible hosts and my-kubernetes-cluster.yaml here is my cluster config. you may change thess vars later. ansible hosts:
all: children: kubernetes: children: master: hosts: master1.kubernetes.test: ansible_host: 172.16.0.101 master2.kubernetes.test: ansible_host: 172.16.0.102 master3.kubernetes.test: ansible_host: 172.16.0.103 vars: ansible_user: root node: hosts: node1.kubernetes.test: ansible_host: 172.16.0.104 node2.kubernetes.test: ansible_host: 172.16.0.105 node3.kubernetes.test: ansible_host: 172.16.0.106 vars: ansible_user: root
prepare.sh
CLUSTER_NAME=my-kubernetes-cluster CLUSTER_API_HOSTNAME=apisever.kubernetes.test CLUSTER_CIDR=10.0.0.0/16 CLUSTER_DATA_PATH=/data/kubernetes CLUSTER_MASTER_LIST=("master1.kubernetes.test" "master2.kubernetes.test" "master3.kubernetes.test") DOCKER_DATA_ROOT_DIR=/data/docker
-
Generate tls keys、kubeconfig files、ansible vars.
$bash prepare.sh
...
- use ansible-playbook to bootstarp the cluster.
$ansible-playbook my-kubernetes-cluster.yaml
- the cluster has been setup ready for work.
Check everything is work.
etcd cluster overview:
$etcdctl member list
8947ad53cf2dcb09: name=master2 peerURLs=http://172.16.0.102:2380 clientURLs=http://172.16.0.102:2379 isLeader=false
902b43a26fe9e976: name=master3 peerURLs=http://172.16.0.103:2380 clientURLs=http://172.16.0.103:2379 isLeader=false
c130f4a591f954a9: name=master1 peerURLs=http://172.16.0.101:2380 clientURLs=http://172.16.0.101:2379 isLeader=true
kube-apiserver overview:
NAMESPACE NAME READY STATUS RESTARTS AGE
kube-system kube-apiserver-master1.kubernetes.test 1/1 Running 0 1m
kube-system kube-apiserver-master2.kubernetes.test 1/1 Running 0 1m
kube-system kube-apiserver-master3.kubernetes.test 1/1 Running 0 1m
kube-controller-manager overview:
NAMESPACE NAME READY STATUS RESTARTS AGE
kube-system kube-controller-manager-master1.kubernetes.test 1/1 Running 0 1m
kube-system kube-controller-manager-master2.kubernetes.test 1/1 Running 0 1m
kube-system kube-controller-manager-master3.kubernetes.test 1/1 Running 0 1m
kube-scheduler overview:
kube-system kube-scheduler-master1.kubernetes.test 1/1 Running 17 3d
kube-system kube-scheduler-master2.kubernetes.test 1/1 Running 16 5d
kube-system kube-scheduler-master3.kubernetes.test 1/1 Running 12 6d