1. [root@localhost ~]# uname -a
  2. Linux localhost.localdomain 3.10.0-514.6.1.el7.x86_64 #1 SMP Wed Jan 18 13:06:36 UTC 2017 x86_64 x86_64 x86_64 GNU/Linux
  3. [root@localhost ~]# cat /etc/redhat-release
  4. CentOS Linux release 7.3.1611 (Core)
  1. [网络环境]
  2. Master => hostnamectl --static set-hostname k8s-master
  3. NODE1 => hostnamectl --static set-hostname k8s-node-1
  4. //
  5. echo '10.0.0.107 k8s-master
  6. 10.0.0.107 etcd
  7. 10.0.0.107 registry
  8. 10.0.0.101 k8s-node-1' >> /etc/hosts
  9. // 关闭防火墙
  10. systemctl disable firewalld.service && systemctl stop firewalld.service
节点及功能 主机名 IP
Master、etcd、registry K8s-master 10.0.0.107
Node1 K8s-node-1 10.0.0.106
Node2 K8s-node-2 10.0.0.108

安装

  1. [etcd]
  2. yum install etcd -y
  3. [docker]
  4. yum install docker -y
  5. [kubernets]
  6. yum install kubernetes -y
  7. # kube-apiserver, kube-controller-manager, kube-scheduler
  8. # kubelet, kube-proxy

Master 配置

[etcd]

  1. [vim /etc/etcd/etcd.conf]
  2. ETCD_NAME=master
  3. ETCD_LISTEN_CLIENT_URLS="http://0.0.0.0:2379,http://0.0.0.0:4001"
  4. ETCD_ADVERTISE_CLIENT_URLS="http://etcd:2379,http://etcd:4001"
  5. [启动]
  6. # systemctl enable etcd && systemctl start etcd
  7. [检测]
  8. # etcdctl -C http://etcd:4001 cluster-health
  9. member 8e9e05c52164694d is healthy: got healthy result from http://0.0.0.0:2379
  10. cluster is healthy
  11. # etcdctl -C http://etcd:2379 cluster-health
  12. member 8e9e05c52164694d is healthy: got healthy result from http://0.0.0.0:2379
  13. cluster is healthy
  14. # etcdctl set testdir/testkey0 0
  15. # etcdctl get testdir/testkey0

[docker]

  1. [vim /etc/sysconfig/docker]
  2. # Modify these options if you want to change the way the docker daemon runs
  3. OPTIONS='--selinux-enabled --log-driver=journald --signature-verification=false'
  4. if [ -z "${DOCKER_CERT_PATH}" ]; then
  5. DOCKER_CERT_PATH=/etc/docker
  6. fi
  7. OPTIONS='--insecure-registry registry:5000' # 添加
  8. [启动]
  9. chkconfig docker on && service docker start

image.png

[kubernets => API Server & Controller Manager & Scheduler]

  1. [vim /etc/kubernetes/apiserver]
  2. KUBE_API_ADDRESS="--insecure-bind-address=0.0.0.0"
  3. KUBE_API_PORT="--port=8080"
  4. KUBE_ETCD_SERVERS="--etcd-servers=http://etcd:2379"
  5. # 删除 ServiceAccount
  6. KUBE_ADMISSION_CONTROL="--admission-control=NamespaceLifecycle,NamespaceExists,LimitRanger,SecurityContextDeny,ResourceQuota"
  7. [vim /etc/kubernetes/config]
  8. KUBE_MASTER="--master=http://k8s-master:8080"

image.png

image.png

  1. [启动]
  2. systemctl enable kube-apiserver.service && systemctl start kube-apiserver.service
  3. systemctl enable kube-controller-manager.service && systemctl start kube-controller-manager.service
  4. systemctl enable kube-scheduler.service && systemctl start kube-scheduler.service

NODE

[docker]

  1. [vim /etc/sysconfig/docker]
  2. # Modify these options if you want to change the way the docker daemon runs
  3. OPTIONS='--selinux-enabled --log-driver=journald --signature-verification=false'
  4. if [ -z "${DOCKER_CERT_PATH}" ]; then
  5. DOCKER_CERT_PATH=/etc/docker
  6. fi
  7. OPTIONS='--insecure-registry registry:5000' # 添加
  8. [启动]
  9. chkconfig docker on && service docker start

[kubernets => Kubelet && Kubernets Proxy]

  1. [vim /etc/kubernetes/config]
  2. KUBE_MASTER="--master=http://k8s-master:8080"
  3. [vim /etc/kubernetes/kubelet]
  4. KUBELET_ADDRESS="--address=0.0.0.0"
  5. KUBELET_HOSTNAME="--hostname-override=k8s-node-1"
  6. KUBELET_API_SERVER="--api-servers=http://k8s-master:8080"

image.png

  1. [启动]
  2. systemctl enable kubelet.service && systemctl start kubelet.service
  3. systemctl enable kube-proxy.service && systemctl start kube-proxy.service

查看状态

  1. [root@k8s-master ~]# kubectl -s http://k8s-master:8080 get node
  2. NAME STATUS AGE
  3. k8s-node-1 Ready 3m
  4. k8s-node-2 Ready 16s
  5. [root@k8s-master ~]# kubectl get nodes
  6. NAME STATUS AGE
  7. k8s-node-1 Ready 3m
  8. k8s-node-2 Ready 43s

创建覆盖网络——Flannel

  1. [安装]
  2. yum install flannel
  3. [配置 /etc/sysconfig/flanneld]
  4. FLANNEL_ETCD_ENDPOINTS="http://etcd:2379"
  5. [etcd - 配置]
  6. mk /atomic.io/network/config '{ "Network": "10.0.0.0/24" }
  7. [启动 - master]
  8. systemctl enable flanneld.service && systemctl start flanneld.service
  9. service docker restart
  10. systemctl restart kube-apiserver.service
  11. systemctl restart kube-controller-manager.service
  12. systemctl restart kube-scheduler.service
  13. [启动 - node]
  14. systemctl enable flanneld.service && systemctl start flanneld.service
  15. service docker restart
  16. systemctl restart kubelet.service
  17. systemctl restart kube-proxy.service