- Docker安装
yum install -y yum-utilsyum-config-manager --add-repo https://docs.docker.com/v1.13/engine/installation/linux/repo_files/centos/docker.repoyum makecache fastyum list docker-engine.x86_64 --showduplicates |sort -rrpm -qa | grep docker*yum install -y docker-engine-1.12.6systemctl start dockersystemctl enable docker
Kubernetes 1.6还没有针对docker 1.13和最新的docker 17.03上做测试和验证,所以这里安装Kubernetes官方推荐的Docker 1.12版本
- 添加kubernetes源
cat >> /etc/yum.repos.d/kubernetes.repo <
> /etc/sysctl.d/k8s.conf < - 安装k8s服务yum install -y kubelet kubeadm kubectl kubernetes-cnisystemctl enable kubelet.servicesystemctl restart kubelet.service
- 所有节点添加hostscat >> /etc/hosts <<EOF10.10.24.237 k8s-master10.10.24.236 k8s-node-110.10.24.232 k8s-node-2EOF
- 主节点初始化集群kubeadm init --kubernetes-version=v1.7.5 --pod-network-cidr=10.244.0.0/16 --apiserver-advertise-address=10.10.24.237网络问题无法从google下载容器镜像:[apiclient] Created API client, waiting for the control plane to become ready卡住需要执行kubeadm reset清理,重新执行init成功后k8s的核心组件均正常启动,以container的形式启动:ps -ef|grep kube为了使用kubectl访问apiserver,在~/.bash_profile中追加下面的环境变量:export KUBECONFIG=/etc/kubernetes/admin.confsource ~/.bash_profile此时kubectl命令在master node上就可以用了,查看一下当前机器中的Node:kubectl get nodes
- 向集群中添加节点将node1和node2加入集群,分别在node1和node2上执行:kubeadm join --token e7986d.e440de5882342711 10.10.24.237:6443使master node参与工作负载kubectl taint nodes --all node-role.kubernetes.io/master-使用kubeadm初始化的集群,出于安全考虑Pod不会被调度到Master Node上,也就是说Master Node不参与工作负载
- 所有节点安装flannel pod网络kubectl create -f https://raw.githubusercontent.com/coreos/flannel/master/Documentation/kube-flannel-rbac.ymlkubectl apply -f https://raw.githubusercontent.com/coreos/flannel/master/Documentation/kube-flannel.ymlserviceaccount "flannel" createdconfigmap "kube-flannel-cfg" createddaemonset "kube-flannel-ds" createdps -ef|grep kube|grep flannel使用kubectl get pod --all-namespaces -o wide确保所有的Pod都处于Running
- 安装Dashboard插件wget https://raw.githubusercontent.com/kubernetes/dashboard/master/src/deploy/kubernetes-dashboard.yamlkubectl create -f kubernetes-dashboard.yamlkubectl create -f kube-dashboard-rbac.yml
kind: ClusterRoleBindingapiVersion: rbac.authorization.k8s.io/v1beta1metadata:name: dashboard-adminroleRef:apiGroup: rbac.authorization.k8s.iokind: ClusterRolename: cluster-adminsubjects:- kind: ServiceAccountname: defaultnamespace: kube-system
kubectl create -f dashboard-rbac.yml
- 在集群中运行Heapster wget https://github.com/kubernetes/heapster/archive/v1.3.0.tar.gztar -zxvf v1.3.0.tar.gzcd heapster-1.3.0/deploy/kube-config/influxdbkubectl create -f ./deployment "monitoring-grafana" createdservice "monitoring-grafana" createddeployment "heapster" createdservice "heapster" createddeployment "monitoring-influxdb" createdservice "monitoring-influxdb" created