- ubuntu12.04环境下使用kvm ioctl接口实现最简单的虚拟机
- Ubuntu 通过无线网络安装Ubuntu Server启动系统后连接无线网络的方法
- 在Ubuntu上搭建网桥的方法
- ubuntu 虚拟机上网方式及相关配置详解
CFSDN坚持开源创造价值,我们致力于搭建一个资源共享平台,让每一个IT人在这里找到属于你的精彩世界.
这篇CFSDN的博客文章Kubernetes(k8s)基础介绍由作者收集整理,如果你对这篇文章有兴趣,记得点赞哟.
之前我一直想学习kubernetes,因为它听起来很有意思(如果你是希腊人,你会觉得这个名字很有问题),但我从来没有机会,因为我没有任何东西需要运行在集群中。而最近,我的工作中开始逐步涉及kubernetes相关的事情,所以这次我抓住机会,开始查资料,但后来我发现目前所有的资料(包括官方教程)都过于冗长,结构也不合理,这让我一开始有点沮丧.
经过几天的研究,我开始逐步理解kubernetes的核心理念,并且把他部署到了生产环境中。因为我的简历现在说自己是个“kubernetes专家”,一个想法立刻诞生了:为什么不把我对这个系统的宽泛理解以及我已经耗费了几个小时的研究所收集的知识让更多人看到?虽然我无法说服自己不应该再写另一篇漫无目的的文章,但是我很快就明白了: 这就是那篇文章.
我在现有文章中遇到的主要问题是,在深入研究具体细节之前,我找不到的任何内容总结了这些组件是什么以及它们如何组合起来的高级概述。 而这种高屋建瓴的呈现方式是我学习最好的方式。我是以这种方式来写的,希望它也适合你。如果你知道任何描述了kubernetes如何工作,而且让人容易理解的专家级的文章/教程,请不要告诉我,因为你在我需要你的时候你在哪里,现在我写了我的文章而你却没有及早把它拿出来.
另外请记住,我实际上只学习了kubernetes一个星期左右,所以学得不会非常深入,有些可能是不准确的,希望没有什么错误,这里的信息应该足够让你达到运行简单集群的程度.
话虽如此,最后我发现kubernetes中的概念还是非常简单的,虽然我确信有很多东西我还不知道。但是,我知道的事情就足以建立一个集群并让我们的应用在其上运行,而且我很确定它们足以让大多数人知道如何开始.
基本概念 。
我们需要做的第一件事是详细介绍kubernetes的各个部分:
所有这些都可以使用命令行的kubectl创建,或者更安全地通过yaml文件创建,该文件将包含您要部署的内容的定义和详细信息(然后执行kubectl apply -f <yaml file>).
概括地讲,您把容器放入pods中,这些pods将由deployment创建和部署,其网络将由service处理,并添加ingress以便外部世界可以访问您的服务器.
让我们逐个介绍这些部分,看看它们的yaml配置是什么样的.
the pod 。
让我们看一下将在容器中运行redis镜像的pod的yaml配置。 请记住,pod并不是持久性的,所以你几乎不会直接使用它。 相反,您将使用deployment间接部署pod,我们将在下面介绍.
以下配置示例仅供您进行修改。 你只需要看看它,然后继续阅读,不要停下来惊叹它的美丽.
正如您所看到的,它非常简单,您添加了一堆kubernetes特定的东西,每个都只是复制粘贴,然后您声明此配置是为pod,给它一个名称,指定在其中运行的容器和他们监听的端口,请删除整个文件吧,你已经准备好了! 。
kubernetes官方文档中提供了更多关于pod的信息.
the deployment 。
以下是您实际运行上述pod的方式,即使用deployment。 请记住,您根本不需要关注上面的pod配置,我们将在deployment里重新定义它.
您会注意到这主要是上面的pod配置,但有一些额外的配置,如副本(replica)等。这些定义了deployment的名称以及我们要部署的副本数量。 更改副本数量,将会部署更多template部分中指定的pod.
kubernetes官方文档中提供了更多关于deployments的信息.
the service 。
现在我们已经部署了一个pod,我们需要将其端口暴露给集群的其余部分。 部署中的containerport指令暴露了docker端口,但实际上并不转发主机上的端口,因此多个pod(不是同一pod中的容器)可以使用相同的端口而不会发生冲突.
要将上面的端口实际暴露给集群上运行的其他pod,我们需要为它创建一个service。 这将创建转发端口所需的规则,并为我们提供dns条目,我们可以使用该条目来解析该pod的ip.
这会将redis端口暴露给集群中的其他pod,可以通过my-service:6379连接它.
要部署你的应用中更多部分,只需将另一个deployment和关联的service添加到群集即可。 您可以使用与上面的redis完全相同的方式部署主应用程序服务.
the ingress 。
最后,我们可以使用ingress将我们的服务暴露给互联网。 这里是使用traefik的一个例子,虽然您可能实际上并不想将redis暴露给外面的世界,但同样的方法适用于您自己的应用程序.
这一节配置是告诉traefik你希望所有名为redis.yourdomain.com的主机上的流量都转发到我的服务端口6379。据我所知,这只是针对traefik的配置。 在应用配置后,pod将通过redis.yourdomain.com上的traefik暴露到互联网.
我希望这篇文章对初学者有用。这篇文章很简短,因为kubernetes的基础很短,但我们设法涵盖了如何以最小的麻烦来运行服务.
现在你应该懂kubernetes是什么了! 。
总结 。
以上就是这篇文章的全部内容了,希望本文的内容对大家的学习或者工作具有一定的参考学习价值,谢谢大家对我的支持。如果你想了解更多相关内容请查看下面相关链接 。
原文链接:https://www.stavros.io/posts/kubernetes-101/ 。
最后此篇关于Kubernetes(k8s)基础介绍的文章就讲到这里了,如果你想了解更多关于Kubernetes(k8s)基础介绍的内容请搜索CFSDN的文章或继续浏览相关文章,希望大家以后支持我的博客! 。
很难说出这里问的是什么。这个问题是含糊的、模糊的、不完整的、过于宽泛的或修辞性的,无法以目前的形式得到合理的回答。如需帮助澄清此问题以便重新打开它,visit the help center 。 已关
我们可以说 O(K + (N-K)logK)相当于O(K + N logK)对于 1 < = K <= N ? 最佳答案 简短的回答是它们不等价,这取决于k 的值。如果k等于N,那么第一个复杂度是O(
我有以下解决方案,但我从其他评论者那里听说它是 O(N * K * K),而不是 O(N * K)其中 N 是 K 列表的(最大)长度,K 是列表的数量。例如,给定列表 [1, 2, 3] 和 [4,
我试图理解这些语法结构之间的语义差异。 if ((i% k) == (l % k) == 0) 和 if ((i % k) == 0 && (l % k) == 0) 最佳答案 您的特定表达式((i
我有时会使用一维数组: A = np.array([1, 2, 3, 4]) 或 2D 阵列(使用 scipy.io.wavfile 读取单声道或立体声信号): A = np.array([[1, 2
在文档聚类过程中,作为数据预处理步骤,我首先应用奇异向量分解得到U、S和Vt 然后通过选择适当数量的特征值,我截断了 Vt,这让我从阅读的内容中得到了很好的文档-文档相关性 here .现在我正在对矩
我问的是关于 Top K 算法的问题。我认为 O(n + k log n) 应该更快,因为……例如,如果您尝试插入 k = 300 和 n = 100000000,我们可以看到 O(n + k log
这个问题与另一个问题R:sample()密切相关。 。我想在 R 中找到一种方法来列出 k 个数字的所有排列,总和为 k,其中每个数字都是从 0:k 中选择的。如果k=7,我可以从0,1,...,7中
我目前正在评估基于隐式反馈的推荐系统。我对排名任务的评估指标有点困惑。具体来说,我希望通过精确度和召回率来进行评估。 Precision@k has the advantage of not requ
我在 Python 中工作,需要找到一种算法来生成所有可能的 n 维 k,k,...,k 数组,每个数组都沿轴有一行 1。因此,该函数接受两个数字 - n 和 k,并且应该返回一个数组列表,其中包含沿
我们有 N 对。每对包含两个数字。我们必须找到最大数 K,这样如果我们从给定的 N 对中取 J (1 2,如果我们选择三对 (1,2),我们只有两个不同的数字,即 1 和 2。 从一个开始检查每个可能
鉴于以下问题,我不能完全确定我当前的解决方案: 问题: 给定一个包含 n 元素的最大堆,它存储在数组 A 中,是否可以打印所有最大的 K 元素在 O(K*log(K)) 中? 我的回答: 是的,是的,
我明白了: val vector: RDD[(String, Array[String])] = [("a", {v1,v2,..}),("b", {u1,u2,..})] 想转换成: RDD[(St
我有 X 个正数,索引为 x_i。每个 x_i 需要进入 K 组之一(其中 K 是预先确定的)。令 S_j 为 K_j 中所有 x_i 的总和。我需要分配所有 x_i 以使所有 S_j 的方差最小化。
关闭。这个问题是not reproducible or was caused by typos .它目前不接受答案。 这个问题是由于错别字或无法再重现的问题引起的。虽然类似的问题可能是on-topi
我正在研究寻找原始数的算法,看到下面的语句,我不明白为什么。 while (k*k <= n) 优于 while (k <= Math.sqrt(n)) 是因为函数调用吗?该调用函数使用更多资源。 更
我想找到一种尽可能快的方法来将两个小 bool 矩阵相乘,其中小意味着 8x8、9x9 ... 16x16。这个例程会被大量使用,所以需要非常高效,所以请不要建议直截了当的解决方案应该足够快。 对于
有没有一种惯用的方法来获取 Set和 Function ,并获得 Map实时取景? (即 Map 由 Set 和 Function 组合支持,例如,如果将元素添加到 Set ,则相应的条目也存在于 M
这个问题在这里已经有了答案: Can a local variable's memory be accessed outside its scope? (20 个答案) returning addr
给定一个矩阵:- k = [1 2 3 ; 4 5 6 ; 7 8 NaN]; 如果我想用 0 替换一个数字,比如 2,我可以使用这个:k(k==2) =
我是一名优秀的程序员,十分优秀!