最近在学习K8s,听说《Kubernetes in action》很适合初学者入门,便买了这本作为教材。在里面遇到一个坑,就是在2.3.1部署Node.js这里,原书使用的是一个旧的命令,执行的效果如下:

$ kubectl run kubia --image=luksa/kubia --port=8080 --generator=run/v1
Flag --generator has been deprecated, has no effect and will be removed in the future.
pod/kubia created

这里说的是–generator这个功能已经被放弃了,这里帮你创建的是一个kubia的pod,而不是书里期望的创建ReplicationController。
由于这里创建ReplicationController失败,会导致后面2.3.4的scale-up失败。

怎么解决这个问题呢?

一种解决的思路是直接绕过这部分,直接创建一个Deployment。但还有另一种方法,可以直接创建一个ReplicationController。

首要条件就是要确保你的Server端的K8s版本小于或等于1.17。默认在google cloud创建的是1.18,你需要把旧的集群删掉,创建一个1.17版本的k8s
在这里插入图片描述
之后,创建一个如下YAML文件

apiVersion: v1
kind: ReplicationController
metadata:
  name: kubia
spec:
  replicas: 1
  selector:
    app: kubia
  template:
    metadata:
      labels:
        app: kubia
    spec:
      containers:
      - name: kubia
        image: luksa/kubia
        ports:
        - containerPort: 8080

保存叫做kubia-rc.yaml
然后执行

kubectl apply -f kubia-rc.yaml

然后就成功拉,可以使用

kubectl get rc

查看是否创建成功

Logo

K8S/Kubernetes社区为您提供最前沿的新闻资讯和知识内容

更多推荐