Kubernetes加入新节点,经验总结

简介: Kubernetes节点加入,经验总结 kubeadm安装Kubernetes,实践记录。 参考:https://my.oschina.net/u/2306127/blog/1628082 Kubernetes主控节点建立后(方法参见上面的链接),就可以随时添加更多的工作节点进去构建更大的集群(minikube设计为单机开发使用,不能添加工作节点),容器实例可以在所有符合条件的node上调度运行,这是Kubernetes最为强大的功能。

Kubernetes节点加入,经验总结

Kubernetes主控节点建立后(方法参见上面的链接),就可以随时添加 更多的工作节点进去构建更大的集群(minikube设计为单机开发使用,不能添加工作节点),容器实例可以在所有符合条件的node上调度运行,这是Kubernetes最为强大的功能。

  • 因为容器工作负载可以在任何节点上运行,所以存储和计算资源都应该设计为通过网络接口访问,资源、服务和计算任务都是浮动的。
  • kubeadm join 命令可以添加工作节点。最简单的方式是通过Token,主控节点上使用kubeadm token命令可以管理集群所产生的Token。

1、节点命名规则

K8S本身就是采用一套名称规则来标记和筛选容器的系统。节点的命名有一个统一规划,后面管理起来会更方便。局域网中直接会根据机器名列出节点,因此不要使用同名,最好加上数字编号,前面用英文字母顺序,便于排序。

2、节点加入命令

kubeadm init 结束时会自动产生节点加入的命令,最好记下来。

如果忘了,可以使用kubeadm token create --print-join-command 方法重新生成链接Token并打印输出加入命令。网上搜了好久,终于发现这个方法,不过要1.9以后的版本才支持的,如果不支持这个参数,整个集群的Kubeadm版本都需要升级到新版本。

3、确保Kubelet已启动

每一个node的kubelet都必须进去设置cgroup-drive和swap关闭的启动选项,跟主控节点一样(参见上民面安装Kubernetes的方法),然后需要重新启动,通过systemctl daemon-reload/systemctl restart kubelet来进行。

如果node上显示添加成功,但Master上显示不出来,在node机上使用systemctl status kubelet查看下服务的状态,检查里面的各项状态,单独处理。

4、确保网络flannel镜像可用

quay.io的flannel网络镜像下载很慢,最好单独下载。如下:

docker pull quay.io/coreos/flannel:v0.10.1-amd64

如果用其它网络驱动,也是一样,需要确保可用。

5、网络flannel依赖DNS镜像

目前flannel网络0.10.1的DNS需要依赖kube-dns1.14.8版本,不是Kubernetes1.10.2版本安装时的1.14.10,需要单独把容器镜像下载下来。否则,速度太慢,还以为死机了。如下:

docker pull k8s.gcr.io/k8s-dns-kube-dns-amd64:1.14.8

6、Docker代理与Registry指向

Docker的代理也是需要每个node独立设的,因为各个节点都是各自向Docker Registry请求下载镜像,因此一定不要在K8S中使用本地编译的Docker镜像,要推送到服务器上,因为其他节点还是需要从Registry服务器去下载的,建立本地集群的统一Registry 服务就很重要了,可以使用Harbor 来搭建。

7、docker版本必须一致

docker版本必须一致,否则总是NotReady,然后报CNI错误,Network NotReady等。

强制安装为18.03.1后变为Ready。如下方法:

sudo apt install docker-ce=18.03.1~ce-0~ubuntu

可以使用 apt-cache madison docker-ce 查看可用的docker版本。

目前最新的18.05有一些问题,而Nvidia-Docker2只支持到18.03.1,自己编译的18.05的lib-container-runtime运行时出现CNI错误。

8、安装Nvidia-Docker2和k8s GPU插件

如果需要做机器学习,工作节点上也需要安装所有的Nvidia驱动、cuCuda、cuTensor、Nvidia-Docker2和Nvidia的K8S插件,不管是不是安装有Nvidia的显卡。

安装方法参考:

安装Kubernetes上的GPU支持软件:

9、显卡最好一样

GPU节点的显卡型号最好都一样,否则调度时可能会出问题,轻者出现异常,重者直接导致节点挂掉。现在Kubernetes无法对GPU内部资源进行识别和调度,基本管理单元是GPU块数,而且是独占。一旦请求GPU的容器获得资源,无论是否在使用,其它的容器将不能同时请求该GPU,除非原来的容器退出。

10、诊断节点状态

如果节点在kubectl get node可以看见但状态一直NotReady,可以使用kubectl describe node my-node的方式,查看详细的node运行情况。

本文转移开源中国-Kubernetes加入新节点,经验总结 

相关实践学习
深入解析Docker容器化技术
Docker是一个开源的应用容器引擎,让开发者可以打包他们的应用以及依赖包到一个可移植的容器中,然后发布到任何流行的Linux机器上,也可以实现虚拟化,容器是完全使用沙箱机制,相互之间不会有任何接口。Docker是世界领先的软件容器平台。开发人员利用Docker可以消除协作编码时“在我的机器上可正常工作”的问题。运维人员利用Docker可以在隔离容器中并行运行和管理应用,获得更好的计算密度。企业利用Docker可以构建敏捷的软件交付管道,以更快的速度、更高的安全性和可靠的信誉为Linux和Windows Server应用发布新功能。 在本套课程中,我们将全面的讲解Docker技术栈,从环境安装到容器、镜像操作以及生产环境如何部署开发的微服务应用。本课程由黑马程序员提供。     相关的阿里云产品:容器服务 ACK 容器服务 Kubernetes 版(简称 ACK)提供高性能可伸缩的容器应用管理能力,支持企业级容器化应用的全生命周期管理。整合阿里云虚拟化、存储、网络和安全能力,打造云端最佳容器化应用运行环境。 了解产品详情: https://www.aliyun.com/product/kubernetes
相关文章
|
Kubernetes API 调度
k8s中节点无法启动Pod
【10月更文挑战第3天】
540 6
|
10月前
|
Kubernetes API 网络安全
当node节点kubectl 命令无法连接到 Kubernetes API 服务器
当Node节点上的 `kubectl`无法连接到Kubernetes API服务器时,可以通过以上步骤逐步排查和解决问题。首先确保网络连接正常,验证 `kubeconfig`文件配置正确,检查API服务器和Node节点的状态,最后排除防火墙或网络策略的干扰,并通过重启服务恢复正常连接。通过这些措施,可以有效解决与Kubernetes API服务器通信的常见问题,从而保障集群的正常运行。
820 17
|
10月前
|
Kubernetes Shell Windows
【Azure K8S | AKS】在AKS的节点中抓取目标POD的网络包方法分享
在AKS中遇到复杂网络问题时,可通过以下步骤进入特定POD抓取网络包进行分析:1. 使用`kubectl get pods`确认Pod所在Node;2. 通过`kubectl node-shell`登录Node;3. 使用`crictl ps`找到Pod的Container ID;4. 获取PID并使用`nsenter`进入Pod的网络空间;5. 在`/var/tmp`目录下使用`tcpdump`抓包。完成后按Ctrl+C停止抓包。
386 12
|
存储 Kubernetes Docker
Kubernetes节点资源耗尽状态的处理
Kubernetes节点资源耗尽状态的处理
|
存储 Kubernetes 调度
在K8S中,⼀个pod的不同container能够分开被调动到不同的节点上吗?
在K8S中,⼀个pod的不同container能够分开被调动到不同的节点上吗?
|
资源调度 Kubernetes 调度
玩转Kubernetes集群:掌握节点和Pod自动扩缩容,让你的系统更智能、更高效!
【8月更文挑战第22天】Kubernetes的核心功能之一是自动扩缩容,确保系统稳定与高可用。节点自动扩缩容由调度器和控制器管理器协作完成,依据资源紧张程度动态调整。主要采用HPA、VPA及Cluster Autoscaler实现。Pod自动扩缩容通常通过HPA控制器按需调整副本数量。例如,设置HPA控制器监视特定部署的CPU使用率,在80%阈值上下自动增减副本数。合理利用这些工具可显著提升系统性能。
417 2
|
Kubernetes 调度 Perl
在K8S中,Pod多副本配置了硬亲和性,会调度到同⼀个节点上吗?
在K8S中,Pod多副本配置了硬亲和性,会调度到同⼀个节点上吗?
|
Kubernetes 负载均衡 调度
在K8S中,K8S外部节点访问Pod有哪些方式?
在K8S中,K8S外部节点访问Pod有哪些方式?
|
边缘计算 人工智能 Kubernetes
边缘计算问题之理解 Kubernetes 节点资源的四层分配结构如何解决
边缘计算问题之理解 Kubernetes 节点资源的四层分配结构如何解决
161 1
|
Kubernetes 固态存储 调度
在K8S中,如何在指定节点上部署Pod呢?
在K8S中,如何在指定节点上部署Pod呢?

热门文章

最新文章

推荐镜像

更多