预计使用三个节点来完成k8s的初次体验工作。结点规划如下表所示。
IP节点角色工作职责192.168.217.129master对外暴露API,对内提供工作流的调度和配置192.168.217.130node1承载着k8s运行的实际任务192.168.217.131node2同node1相同(在/etc/hosts文件编辑相关信息即可)
# vim /etc/hosts 127.0.0.1 localhost localhost.localdomain localhost4 localhost4.localdomain4 ::1 localhost localhost.localdomain localhost6 localhost6.localdomain6 master 192.168.217.129 node1 192.168.217.130 node2 192.168.217.131 # master,node1,node2等节点的ip应按照自己的实际情况来填写。将上述配置文件拷贝到集群中的所有节点,包括master节点和node节点。
(使用chrony服务实现) 各个节点的操作如下:
yum -y install chrony vim /etc/chrony.conf ~~~ server master #server 1.centos.pool.ntp.org iburst #server 2.centos.pool.ntp.org iburst #server 3.centos.pool.ntp.org iburst ~~~~ #注释掉原有的server内容,把原有的时钟同步服务设置为master结点上的时钟同步。所有节点都要配仓库
各个结点上都安装相关组件
#查看所有的kublet版本,选择适合自己的版本。 yum list kubelet --showduplicates | sort -r #安装相关版本的组件 yum -y install kubeadm-1.13.0-0 kubelet-1.13.0-0 kubectl-1.13.0-0 kubernetes-cni-0.6.0-0 #所有服务都设置为开机自启动 systemctl enable kubelet上面的步骤有个坑,就是如果不指定kubernetes-cni的版本的话,默认会用更高的版本,然后就会导致yum安装失败,存在有依赖关系
某些镜像是在google的网站上才能下载的,大多数时候我们访问不到,鉴于此,需要提前把镜像下载下来。 下面是一个通用的镜像下载脚本。
cat ./pull.sh for i in `kubeadm config images list`; do imageName=${i#k8s.gcr.io/} docker pull registry.aliyuncs.com/google_containers/$imageName docker tag registry.aliyuncs.com/google_containers/$imageName k8s.gcr.io/$imageName docker rmi registry.aliyuncs.com/google_containers/$imageName done;保存初始化后的那段话,将来新加入结点或者做别的操作的时候,可能会用到相关内容。
取消污点
kubectl taint nodes --all node-role.kubernetes.io/master-配置命令补全功能
echo "source <(kubectl completion bash)" >> ~/.bashrc配置flannel网络功能
wget https://raw.githubusercontent.com/coreos/flannel/master/Documentation/kube-flannel.yml # 下载flannel的yaml文件 kubectl apply -f kube-flannel.yml # 执行这个文件生成flannel的pods安装dashboard
#Create a new ServiceAccount kubectl create serviceaccount k8sadmin -n kube-system #Create a ClusterRoleBinding with Cluster Admin Privileges kubectl create clusterrolebinding k8sadmin --clusterrole=cluster-admin --serviceaccount=kube-system:k8sadmin #Get the token kubectl get secret -n kube-system | grep k8sadmin | cut -d " " -f1 | xargs -n 1 | xargs kubectl get secret -o 'jsonpath={.data.token}' -n kube-system | base64 --decode # 安装dashboard kubectl apply -f https://raw.githubusercontent.com/kubernetes/dashboard/v1.10.1/src/deploy/recommended/kubernetes-dashboard.yaml这个token可以用来后面登陆使用。
执行加入节点的命令,这条命令来自于,执行kubeadm输出之后的内容。
kubeadm join 192.168.217.129:6443 --token vtqzkt.j0u1chomafn1offd --discovery-token-ca-cert-hash sha256:c25549dc8457677752b8d1b0547acfa8be742cbd5734802b6d2e3e9a6e7e1b731.指定版本之后,需要指明CNI的版本
yum -y install kubeadm-1.13.0-0 kubelet-1.13.0-0 kubectl-1.13.0-0 kubernetes-cni-0.6.0-02.出现failed 访问10.96.0.1之后,意味着,可能需要配置默认路由。
尚有两个问题没有解决。
1.目前的集群中使用的是iptables进行负载均衡,实际上可以使用性能更好的ipvs,有待后面研究。2.集群中现在的网络是flannel,后面考虑如何平稳的过渡为calico网络模型。 粥粥同学 认证博客专家 搬砖标兵 勤劳的网管 力大无穷,擅长搬运各种型号的服务器;推理大师,致力于各种网络故障排除;多才多艺,精通多种语言的“Hello World”。