- Java锁的逻辑(结合对象头和ObjectMonitor)
- 还在用饼状图?来瞧瞧这些炫酷的百分比可视化新图形(附代码实现)⛵
- 自动注册实体类到EntityFrameworkCore上下文,并适配ABP及ABPVNext
- 基于Sklearn机器学习代码实战
服务器版本 | docker软件版本 | Kubernetes(k8s)集群版本 | CPU架构 |
---|---|---|---|
CentOS Linux release 7.4.1708 (Core) | Docker version 20.10.12 | v1.21.9 | x86_64 |
Kubernetes集群架构:k8scloude1作为master节点,k8scloude2,k8scloude3作为worker节点 。
服务器 | 操作系统版本 | CPU架构 | 进程 | 功能描述 |
---|---|---|---|---|
k8scloude1/192.168.110.130 | CentOS Linux release 7.4.1708 (Core) | x86_64 | docker,kube-apiserver,etcd,kube-scheduler,kube-controller-manager,kubelet,kube-proxy,coredns,calico | k8s master节点 |
k8scloude2/192.168.110.129 | CentOS Linux release 7.4.1708 (Core) | x86_64 | docker,kubelet,kube-proxy,calico | k8s worker节点 |
k8scloude3/192.168.110.128 | CentOS Linux release 7.4.1708 (Core) | x86_64 | docker,kubelet,kube-proxy,calico | k8s worker节点 |
使用ReplicaSet的 前提 是已经有一套可以正常运行的Kubernetes集群,关于Kubernetes(k8s)集群的安装部署,可以查看博客《Centos7 安装部署Kubernetes(k8s)集群》 https://www.cnblogs.com/renshengdezheli/p/16686769.html.
ReplicaSet 的目的是维护一组在任何时候都处于运行状态的 Pod 副本的稳定集合 。 因此,它通常用来保证给定数量的、完全相同的 Pod 的可用性.
ReplicaSet与ReplicationController控制器类似,都是用来维持pod副本数,关于ReplicationController的详细内容,请查看博客《 Kubernetes(k8s)控制器(三):ReplicationController 》.
ReplicaSet一般作为deployment控制器的底层控制器。关于deployment控制器的详细内容,请查看博客《 Kubernetes(k8s)控制器(一):deployment 》.
ReplicaSet 是通过一组字段来定义的,包括一个用来识别可获得的 Pod 的集合的选择算符、一个用来标明应该维护的副本个数的数值、一个用来指定应该创建新 Pod 以满足副本个数条件时要使用的 Pod 模板等等。 每个 ReplicaSet 都通过根据需要创建和删除 Pod 以使得副本个数达到期望值, 进而实现其存在价值 。当 ReplicaSet 需要创建新的 Pod 时,会使用所提供的 Pod 模板.
ReplicaSet 通过 Pod 上的 metadata.ownerReferences 字段连接到附属 Pod,该字段给出当前对象的属主资源。 ReplicaSet 所获得的 Pod 都在其 ownerReferences 字段中包含了属主 ReplicaSet 的标识信息。正是通过这一连接,ReplicaSet 知道它所维护的 Pod 集合的状态, 并据此计划其操作行为.
ReplicaSet 使用其选择算符来辨识要获得的 Pod 集合。如果某个 Pod 没有 OwnerReference 或者其 OwnerReference 不是一个控制器, 且其匹配到某 ReplicaSet 的选择算符,则该 Pod 立即被此 ReplicaSet 获得.
ReplicaSet 确保任何时间都有指定数量的 Pod 副本在运行 。 然而, Deployment 是一个更高级的概念,它管理 ReplicaSet,并向 Pod 提供声明式的更新以及许多其他有用的功能 。 因此, 建议使用 Deployment 而不是直接使用 ReplicaSet , 除非你需要自定义更新业务流程或根本不需要更新。这意味着,你可能永远不需要操作 ReplicaSet 对象:而是使用 Deployment,并在 spec 部分定义你的应用.
配置replicaset,replicas: 3 指定pod副本数为3个 。
[root@k8scloude1 daemonset]# vim ReplicaSet.yaml
[root@k8scloude1 daemonset]# cat ReplicaSet.yaml
apiVersion: apps/v1
kind: ReplicaSet
metadata:
name: rs
labels:
app: guestbook
spec:
replicas: 3
selector:
matchLabels:
tier: frontend
template:
metadata:
labels:
app: guestbook
tier: frontend
spec:
terminationGracePeriodSeconds: 0
containers:
- name: nginx
imagePullPolicy: IfNotPresent
image: nginx
创建replicaset 。
[root@k8scloude1 daemonset]# kubectl apply -f ReplicaSet.yaml
replicaset.apps/rs created
[root@k8scloude1 daemonset]# kubectl get rs
NAME DESIRED CURRENT READY AGE
rs 3 3 3 25s
现在有3个pod 。
[root@k8scloude1 daemonset]# kubectl get pod -o wide
NAME READY STATUS RESTARTS AGE IP NODE NOMINATED NODE READINESS GATES
rs-d58dk 1/1 Running 0 34s 10.244.112.173 k8scloude2 <none> <none>
rs-fn2tw 1/1 Running 0 34s 10.244.251.231 k8scloude3 <none> <none>
rs-v676w 1/1 Running 0 34s 10.244.112.175 k8scloude2 <none> <none>
通过kubectl scale rs 扩展replicaset副本数,--replicas=5 设置pod副本数为5 。
[root@k8scloude1 daemonset]# kubectl scale rs rs --replicas=5
replicaset.apps/rs scaled
现在就有5个pod了 。
[root@k8scloude1 daemonset]# kubectl get pod -o wide
NAME READY STATUS RESTARTS AGE IP NODE NOMINATED NODE READINESS GATES
rs-554fh 0/1 ContainerCreating 0 2s <none> k8scloude2 <none> <none>
rs-d58dk 1/1 Running 0 93s 10.244.112.173 k8scloude2 <none> <none>
rs-fn2tw 1/1 Running 0 93s 10.244.251.231 k8scloude3 <none> <none>
rs-ltmpv 0/1 ContainerCreating 0 2s <none> k8scloude3 <none> <none>
rs-v676w 1/1 Running 0 93s 10.244.112.175 k8scloude2 <none> <none>
[root@k8scloude1 daemonset]# kubectl get pod -o wide
NAME READY STATUS RESTARTS AGE IP NODE NOMINATED NODE READINESS GATES
rs-554fh 1/1 Running 0 3s 10.244.112.174 k8scloude2 <none> <none>
rs-d58dk 1/1 Running 0 94s 10.244.112.173 k8scloude2 <none> <none>
rs-fn2tw 1/1 Running 0 94s 10.244.251.231 k8scloude3 <none> <none>
rs-ltmpv 1/1 Running 0 3s 10.244.251.232 k8scloude3 <none> <none>
rs-v676w 1/1 Running 0 94s 10.244.112.175 k8scloude2 <none> <none>
删除replicaset 。
[root@k8scloude1 daemonset]# kubectl delete -f ReplicaSet.yaml
replicaset.apps "rs" deleted
[root@k8scloude1 daemonset]# kubectl get rs
No resources found in daemonset namespace.
[root@k8scloude1 daemonset]# kubectl get pod -o wide
No resources found in daemonset namespace.
最后此篇关于Kubernetes(k8s)控制器(四):ReplicaSet的文章就讲到这里了,如果你想了解更多关于Kubernetes(k8s)控制器(四):ReplicaSet的内容请搜索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) =
我是一名优秀的程序员,十分优秀!