k8s启动过程
k8s组件启动顺序
- 第一步启动etcd,因为etcd是整个集群的核心,相当于mysql。
- 第二步启动flannel(calico),flannel需要配置etcd的地址,才可以启动。
-etcd-endpoints=${FLANNEL_ETCD}
- 第三步,启动api-server。apiserver是所有资源对象访问接口,比如启动pod删除pod等。
- 第四步,kubelet启动,kubelet启动依赖apiserver,如果apiserver没有启动,kubelet就会报6443连接错误。
- 其他的scheduler、proxy、controller-manager类似,出问题看报错日志即可。
k8s的启动过程分析
- k8s的启动由kubelet开始,kubelet是k8s集群中只能跑在docker外面的服务。
- 1、master节点:
先启动master上的kubelet,master上的kubelet启动etcd,kube-controller, kube-scheduler, kube-apiserver这些系统服务pods( 静态 Pod(Static Pod)由特定节点上的 kubelet 守护进程直接管理的 pod),这样k8s的master就启动成功了(可以看配置文件/etc/kubernetes) - 2、woker节点:
k8s的worker nodes上的kubelet会根据记录的master地址(直接ip地址,不需要网络转发),和kube-apiserver联系,kube-apiserver会让每台机器上的kube-proxy、coredns等系统组件,最后启动etcd里面记录的跟踪组件(pod容器方式),最后k8s整个集群启动成功(可以看配置文件/etc/kubernetes)