User Tools

Site Tools


cloud:kubernetes:installation

Differences

This shows you the differences between two versions of the page.

Link to this comparison view

Next revision
Previous revision
cloud:kubernetes:installation [2017/04/03 09:48]
frank created
cloud:kubernetes:installation [2017/04/04 13:48] (current)
frank
Line 3: Line 3:
 On Centos7, RPMs are from Ceontos7 extras repository On Centos7, RPMs are from Ceontos7 extras repository
  
-RPM verisons+1 master, 2 nodes 
 + 
 +== RPM verisons ​==
   * On master:   * On master:
     * kubernetes-master,​ kubernetes-client -  1.5.2-0.2.gitc55cf2b.el7     * kubernetes-master,​ kubernetes-client -  1.5.2-0.2.gitc55cf2b.el7
Line 11: Line 13:
     * kubernetes-client,​ kubernetes-node - 1.5.2-0.2.gitc55cf2b.el7     * kubernetes-client,​ kubernetes-node - 1.5.2-0.2.gitc55cf2b.el7
  
-Services+ 
 +== Hostnames, IP, subnets, IP ranges == 
 +  * master and node IPs 
 +    * master: ​ node-1(192.168.50.101/​24,​ IP address is on eth1) 
 +    * nodes: node2(192.168.50.102/​24),​ node-3(192.168.50.103/​24),​ IP Address are on eth1 
 +  * kubernetes cluster IP range: 10.254.0.0/​16 
 +  * flannel: iface on eth1, range: 172.30.0.0/​16,​ subnetLen:​24,​ type: vxlan 
 + 
 +== Ports == 
 +  * etcd: 2379 
 +  * kube-apiserver:​ 8080 
 +  * kubelet: 10250 
 +  *  
 + 
 +== Services ​==
   * On master:   * On master:
     * etcd     * etcd
Line 22: Line 38:
     * kube-proxy     * kube-proxy
     * flanneld     * flanneld
 +
 +== configuration files ==
 +  * /​etc/​etcd/​etcd.conf<​code>​
 +ETCD_NAME=default
 +ETCD_DATA_DIR="/​var/​lib/​etcd/​default.etcd"​
 +ETCD_LISTEN_CLIENT_URLS="​http://​localhost:​2379,​http://​node-1:​2379"​
 +ETCD_ADVERTISE_CLIENT_URLS="​http://​localhost:​2379,​http://​node-1:​2379"​
 +</​code>​
 +  * /​etc/​kubernetes/​config - for both master and node<​code>​
 +KUBE_LOGTOSTDERR="​--logtostderr=true"​
 +KUBE_LOG_LEVEL="​--v=0"​
 +KUBE_ALLOW_PRIV="​--allow-privileged=false"​
 +KUBE_MASTER="​--master=http://​node-1:​8080"​
 +</​code>​
 +  * /​etc/​kubernetes/​apiserver<​code>​
 +KUBE_API_ADDRESS="​--insecure-bind-address=0.0.0.0"​
 +KUBE_ETCD_SERVERS="​--etcd-servers=http://​node-1:​2379"​
 +KUBE_SERVICE_ADDRESSES="​--service-cluster-ip-range=10.254.0.0/​16"​
 +KUBE_API_ARGS=""​
 +KUBE_API_PORT="​--port=8080"​
 +KUBELET_PORT="​--kubelet-port=10250"​
 +</​code>​
 +  * /​etc/​controller-manager<​code>​
 +KUBE_CONTROLLER_MANAGER_ARGS=""​
 +</​code>​
 +  * /​etc/​scheduler<​code>​
 +KUBE_SCHEDULER_ARGS=""​
 +</​code>​
 +  * /​etc/​kubernetes/​kubelet<​code>​
 +KUBELET_ADDRESS="​--address=0.0.0.0"​
 +KUBELET_HOSTNAME="​--hostname-override=node-2"​
 +KUBELET_API_SERVER="​--api-servers=http://​node-1:​8080"​
 +KUBELET_ARGS=""​
 +KUBELET_PORT="​--port=10250"​
 +</​code>​
 +  * /​etc/​kubernetes/​proxy<​code>​
 +KUBE_PROXY_ARGS=""​
 +</​code>​
 +  * /​etc/​sysconfig/​flanneld<​code>​
 +FLANNEL_ETCD_ENDPOINTS="​http://​node-1:​2379"​
 +FLANNEL_ETCD_PREFIX="/​kube-centos/​network"​
 +FLANNEL_OPTIONS="​-iface=eth1"​
 +</​code>​
 +  * manual step to configure flannel with etcd<​code>​
 +# systemctl start etcd
 +# etcdctl mkdir /​kube-centos/​network
 +# etcdctl mk /​kube-centos/​network/​config "{ \"​Network\":​ \"​172.30.0.0/​16\",​ \"​SubnetLen\":​ 24, \"​Backend\":​ { \"​Type\":​ \"​vxlan\"​ } }" ​  
 +</​code>​
 +== service processes ==
 +  * master<​code>​
 +/​usr/​bin/​etcd --name=default --data-dir=/​var/​lib/​etcd/​default.etcd --listen-client-urls=http://​localhost:​2379,​http://​node-1:​2379
 +usr/​bin/​kube-apiserver --logtostderr=true --v=0 --etcd-servers=http://​node-1:​2379 --insecure-bind-address=0.0.0.0 --port=8080 --kubelet-port=10250 --allow-privileged=false --service-cluster-ip-range=10.254.0.0/​16
 +/​usr/​bin/​kube-controller-manager --logtostderr=true --v=0 --master=http://​node-1:​8080
 +/​usr/​bin/​kube-scheduler --logtostderr=true --v=0 --master=http://​node-1:​8080
 +/​usr/​bin/​flanneld -etcd-endpoints=http://​node-1:​2379 -etcd-prefix=/​kube-centos/​network -iface=eth1
 +</​code>​
 +  * nodes<​code>​
 +/​usr/​bin/​kubelet --logtostderr=true --v=0 --api-servers=http://​node-1:​8080 --address=0.0.0.0 --port=10250 --hostname-override=node-2 --allow-privileged=false
 +/​usr/​bin/​kube-proxy --logtostderr=true --v=0 --master=http://​node-1:​8080
 +/​usr/​bin/​flanneld -etcd-endpoints=http://​node-1:​2379 -etcd-prefix=/​kube-centos/​network -iface=eth1
 +</​code>​
 +
 +== First pod - Hello Kubernetes! ==
 +<​code>​
 +$ kubectl run node-hello --image=gcr.io/​google-samples/​node-hello:​1.0 --port=8080
 +
 +$ kubectl get deploy
 +NAME         ​DESIRED ​  ​CURRENT ​  ​UP-TO-DATE ​  ​AVAILABLE ​  AGE
 +node-hello ​  ​1 ​        ​1 ​        ​1 ​           1           1h
 +
 +$ kubectl get po
 +NAME                          READY     ​STATUS ​   RESTARTS ​  AGE
 +node-hello-3526609615-fqf4k ​  ​1/​1 ​      ​Running ​  ​0 ​         1h
 +
 +
 +$ kubectl expose deploy/​node-hello --type=NodePort
 +service "​node-hello"​ exposed
 +
 +$ kubectl get svc -l run=node-hello
 +NAME         ​CLUSTER-IP ​    ​EXTERNAL-IP ​  ​PORT(S) ​         AGE
 +hello-node ​  ​10.254.139.8 ​  <​nodes> ​      ​8080:​30881/​TCP ​  11s
 +
 +$ kubectl get po -l run=node-hello -o wide
 +NAME                          READY     ​STATUS ​   RESTARTS ​  ​AGE ​      ​IP ​          NODE
 +node-hello-3526609615-fqf4k ​  ​1/​1 ​      ​Running ​  ​0 ​         1h        172.30.5.2 ​  ​node-3
 +
 +$ curl http://​node-3:​30881
 +Hello Kubernetes!
 +
 +$ curl http://​node-2:​30881
 +Hello Kubernetes!
 +
 +
 +</​code>​
 +
 +== 2nd pod with replicas ==
 +<​code>​
 +$ kubectl run kubernetes-bootcamp --image=jocatalin/​kubernetes-bootcamp:​v1 --port=8080
 +deployment "​kubernetes-bootcamp"​ created
 +
 +$ kubectl get deploy
 +NAME                  DESIRED ​  ​CURRENT ​  ​UP-TO-DATE ​  ​AVAILABLE ​  AGE
 +kubernetes-bootcamp ​  ​1 ​        ​1 ​        ​1 ​           1           16s
 +
 +
 +$ kubectl get po
 +NAME                                   ​READY ​    ​STATUS ​   RESTARTS ​  AGE
 +kubernetes-bootcamp-2019480069-jtswf ​  ​1/​1 ​      ​Running ​  ​0 ​         18s
 +
 +$ kubectl expose deploy/​kubernetes-bootcamp --type=NodePort
 +service "​kubernetes-bootcamp"​ exposed
 +
 +$ kubectl get svc
 +NAME                  CLUSTER-IP ​      ​EXTERNAL-IP ​  ​PORT(S) ​         AGE
 +kubernetes ​           10.254.0.1 ​      <​none> ​       443/​TCP ​         1h
 +kubernetes-bootcamp ​  ​10.254.195.177 ​  <​nodes> ​      ​8080:​32693/​TCP ​  13s
 +
 +$ kubectl get po -o wide
 +NAME                                   ​READY ​    ​STATUS ​   RESTARTS ​  ​AGE ​      ​IP ​           NODE
 +kubernetes-bootcamp-2019480069-jtswf ​  ​1/​1 ​      ​Running ​  ​0 ​         1m        172.30.93.2 ​  ​node-2
 +
 +$ curl http://​node-2:​32693
 +Hello Kubernetes bootcamp! | Running on: kubernetes-bootcamp-2019480069-jtswf | v=1
 +$ curl http://​node-2:​32693
 +Hello Kubernetes bootcamp! | Running on: kubernetes-bootcamp-2019480069-jtswf | v=1
 +$ kubectl logs kubernetes-bootcamp-2019480069-jtswf
 +Kubernetes Bootcamp App Started At: 2017-04-04T19:​45:​42.811Z | Running On:  kubernetes-bootcamp-2019480069-jtswf ​
 +Running On: kubernetes-bootcamp-2019480069-jtswf | Total Requests: 1 | App Uptime: 112.899 seconds | Log Time: 2017-04-04T19:​47:​35.710Z
 +Running On: kubernetes-bootcamp-2019480069-jtswf | Total Requests: 2 | App Uptime: 127.612 seconds | Log Time: 2017-04-04T19:​47:​50.423Z
 +
 +$ kubectl scale deploy/​kubernetes-bootcamp --replicas=4
 +deployment "​kubernetes-bootcamp"​ scaled
 +
 +$ kubectl get po -o wide
 +NAME                                   ​READY ​    ​STATUS ​   RESTARTS ​  ​AGE ​      ​IP ​           NODE
 +kubernetes-bootcamp-2019480069-220qd ​  ​1/​1 ​      ​Running ​  ​0 ​         57m       ​172.30.5.3 ​   node-3
 +kubernetes-bootcamp-2019480069-ftzgl ​  ​1/​1 ​      ​Running ​  ​0 ​         57m       ​172.30.5.2 ​   node-3
 +kubernetes-bootcamp-2019480069-jtswf ​  ​1/​1 ​      ​Running ​  ​0 ​         59m       ​172.30.93.2 ​  ​node-2
 +kubernetes-bootcamp-2019480069-k0gkq ​  ​1/​1 ​      ​Running ​  ​0 ​         57m       ​172.30.93.3 ​  ​node-2
 +
 +$ curl http://​node-2:​32693
 +Hello Kubernetes bootcamp! | Running on: kubernetes-bootcamp-2019480069-ftzgl | v=1
 +$ curl http://​node-3:​32693
 +Hello Kubernetes bootcamp! | Running on: kubernetes-bootcamp-2019480069-220qd | v=1
 +$ curl http://​node-3:​32693
 +Hello Kubernetes bootcamp! | Running on: kubernetes-bootcamp-2019480069-k0gkq | v=1
 +$ curl http://​node-2:​32693
 +Hello Kubernetes bootcamp! | Running on: kubernetes-bootcamp-2019480069-jtswf | v=1
 +</​code>​
cloud/kubernetes/installation.1491238132.txt.gz · Last modified: 2017/04/03 09:48 by frank