最近在学习k8s,产生了几个问题:

  1. node 是不是对应一个物理机或者虚拟机,一个用来工作的机器呢?貌似是这样理解。
  2. pod的一个副本是不是一定是运行在唯一一个node上面呢?会不会pod的其中一个容器运行中node1,另一个容器运行在node2?
  3. 除了github,还有没有其他地方可以下载到二进位编译好的可执行程序,github真的太慢了。
  4. 创建一个RC之前要不要先创建好一个pod呢?如果这个RC对应这个pod?我看到网上的教程好像是不需要的,这令我有些迷惑。


1,理解正确,一个node就是一个网路上的节点,代表一台计算主机,它可以是物理机也可以是虚拟机

2,不同的pod副本有可能分配到不同节点之上,因为主节点会根据情况动态的分配节点给不同的pod,你说这种情况是有可能发生的。但是同一pod内的容器是不会分散到不同节点之上的,因为pod是k8s资源中的最小单位,不能把它的内容分散开部署

3,github的替代品可能会有,但是我不知道,业界现在普遍都用github,不清楚你的具体需要多快的下载速度

4,在配置rc的yaml文件中,spec.template.spec是配置pod信息的地方,可以配置具体的容器等内容,运行后,pod副本就会根据这个template的配置而生成


  1. 是的。The nodes in a cluster are the machines (VMs, physical servers, etc) that run your applications and cloud workflows.
  2. pod的一个副本一定是运行在一个node上的,具体运行在哪一个node取决于调度策略,pod是k8s的最小调度单位,同一个pod的containers一定运行在一个node上。
  3. 买个高级点宽度
  4. 建议使用Deployment,保证pod的数据满足定义的replica数目。


1、是的

2、pod的副本不一定会运行一个node上面。也有可能像你后面说的「pod的其中一个容器运行中node1,另一个容器运行在node2?」

3、用阿里的yum镜像源,yum 安装

4、RC是控制器,是控制pod。创建RC后,RC会根据配置文件所写的自动创建pods。即便把这个pod手动删除,RC发现pod没有了,还会自动创建。建议用deployment


  1. 是的
  2. Pod中的containers不可分割
  3. yum install kubeadm
  4. RC可以用来创建和管理Pod,也可以用来管理已有的符合label的Pod。现在一般用ReplicaSet,RC已淘汰

不建议一上来就干,先看下基本概念,学习效率会更高


From:https://www.nakivo.com/blog/docker-vs-kubernetes/

pod会deploy到哪个node取决于deployment.yaml是怎么写的

更具体说是nodeSelector,nodeAffinity的label值,不填的话就是默认交给k8s系统来自由判断


  1. 迄今为止 pod 内的容器都必须处在同一个节点上,不能跨界点
  2. 如果你搭建 k8s 是去 github 上直接下载二进位,那说明你看的教程太老了。一开始大家的确都是直接起二进位的,后来用包管理器,再后来都是 kubeadm。你搜搜 kubeadm 搭建的教程吧,简单多了
  3. rc 是自动管理 pod 的,一般来说有 rc 就不需要手动起停 pod 。rc 和 pod 是用 label 对应的。其实还是你教程太老,很早之前 Google 就不倾向把 rc 给用户用了。给用户用的是 rc 的上层,Deployment/Daemonset/Job 等等对象

k8s 发展比较快,所以很多教程都早过时了。你看教程前关注下版本号,太老的就不要看了,浪费时间。


下载慢可以把链接复制下来用迅雷下,一般都会有很多个点

基本概念建议看官网,概念模清楚了大方向也不会偏差


推荐阅读:
相关文章