我想知道如何在我的 Ubuntu 20 DPS 上设置 kubernetes 集群,我的意思是,我已经安装了 docker 和 kubeadm,我知道如何进行部署、服务和少量入口,我已经使用了已经配置好的 kubernetes 集群(aks)
我需要设置我的 dps 来公开一些 web 应用程序(网站、api、cdn 等),我需要采取哪些步骤来配置 kubernetes?如何在特定子 dns 上公开某个网站(例如 3 级域名:trd.mysite.com)
我需要安装一些插件,如 nginx-controller、metallb 和 flannel 吗?我不懂这些网络方面的东西,我也对课程/教程感兴趣,请帮帮我,谢谢!
编辑:这些是我的 yaml,现在我只想在主域(xxxx.com)上公开一个 web 应用程序,然后我将添加一个内部 REST api 和另一个将使用 rest api 并在 3 级域(yyy.xxxxx.com)上公开的 web 应用程序 http://www.mediafire.com/file/c7qwouqri441wek/Kube.zip/文件
答案1
好的,请看。为了能够成功运行服务器,您将需要:
1. 码头工人
2.如果您更喜欢使用安装kubeadm- 您需要以下 Kubernetes 软件包。我们在本回答中仅讨论 kubeadm 方式。有关其他工具,请参阅内部文档本身。
否则你可以使用例如迷你库,库贝斯普雷,种类。我喜欢 minikube 和 kind。
- kind 是一种使用 Docker 容器“节点”运行本地 Kubernetes 集群的工具。kind 主要用于测试 Kubernetes 本身,但也可用于本地开发或 CI。
- MiniKube 通常是人们在开始使用 Kubernetes 时首先想到的技术(Kubernetes 官方文档提供了使用 miniKube 部署第一个集群的教程)。它是一种非常简单的解决方案,可以安装在笔记本电脑上,专为学习和测试而设计。启动后,它将部署一个单节点集群(最小尺寸)。
您可以在这里阅读有关所有工具的信息:
3. 中央网络接口- 确保集群内部的网络连接正常。
有十几个 CNI 插件,你应该选择一些。
最受欢迎的是 Flannel 和 Calico。有时(取决于您的需要),您可以安装运河简而言之 - 您正在同时安装 Calico网络策略+ Flannel 作为网络的常规 CNI。
这是重要提示!要正确安装 CNI - 您应该在创建集群之前提前选择它。这是因为您必须使用适当的--pod-network-cidr=
标志初始化集群。
kubeadm init --pod-network-cidr=10.244.0.0/16
法兰绒kubeadm init --pod-network-cidr=192.168.0.0/16
对于 Calico
管理对集群中的服务的外部访问的 API 对象,通常是 HTTP。
Ingress 可以提供负载平衡、SSL 终止和基于名称的虚拟托管。
为了使 Ingress 资源正常工作,集群必须具有入口控制器跑步。
最受欢迎的:Nginx 入口控制器、Kubernetes 入口控制器(OOB,也基于 nginx。但这些是不同的)、Traefik
创建集群的步骤:
- 您可以使用以下优秀文章单节点 Kubernetes 设置. 从它开始 - 它会正确地向您显示所有步骤。
- 你可以使用我的答案:Kubernetes API 服务器未在单个 kubeadm 集群上启动。此答案为您提供了如何使用 kubeadm 启动集群的详细分步说明。一条注释。
- 官方文档:使用 kubeadm 创建集群
您应该对主服务器进行 Untaint 处理,以便可以在其上运行 pod。否则,您将无法在主服务器上运行 pod。
kubectl taint nodes --all node-role.kubernetes.io/master-
答案2
在阅读所有这些内容之前,请先研究一下使用 ansbile 为您创建集群的 kubespray,但是如果您想了解 kubernetes 的内部工作原理,请遵循答案的其余部分。
设置 kubernetes 集群的第一步是了解组件及其工作原理,
仅仅安装 kubeadm 不会启动集群,您应该在部署 yaml 文件之前安装所需的每个组件。
这里有一个 github 页面链接,它使用 kubeadm 来启动整个 kubernetes 集群,该集群有 3 个主节点和任意数量的工作节点。
注意:它使用的是旧版本,但它是学习 kubernetes 组件的一个很好的参考。确保检查有关重要集群组件的 yaml 创建的脚本,并阅读集群组件的具体功能。
https://github.com/cookeem/kubeadm-ha/blob/master/v1.11/README.md
如果您希望在域上公开集群上的 Web 应用程序,则需要安装入口控制器管理器,它允许您创建入口资源。
以下是来自 kubernetes 文档的入口 yaml 示例
https://kubernetes.io/docs/concepts/services-networking/ingress/
如果您想使用有效证书执行 https,则可以使用 kubernetes secrets 或在集群上配置证书管理器以自动获取和更新 let encrypt
这两个选项都有很好的记录,您需要做的就是进行谷歌搜索以找到如何让您的入口资源使用这些证书
确保您的域指向一个集群节点(工作节点或主节点)的公共 IP 地址
metallb 与本地集群一起使用,提供云提供商内置的负载均衡器服务类型
flannel 是一个网络插件,为你的集群提供网络功能。
如果你想让你的 pod 能够相互通信,你应该有一个网络插件 cni,比如 flannel、calico 或任何其他受支持的插件,
将 flannel 视为你的集群的网络交换机