微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

Wordpress+Mysql 部署不从另一个池中获取 IP 地址

如何解决Wordpress+Mysql 部署不从另一个池中获取 IP 地址

我的部署是关于 wordpressMysqL。我已经定义了一个新池和一个新命名空间,我试图让我的 pod 从这个定义的新池中获得一个 IP 地址,但他们从未获得过。

我的命名空间文件 yaml

apiVersion: v1
kind: Namespace
Metadata:
  name: produccion
  annotations:
    cni.projectcalico.org/ipv4pools: ippool

我的泳池代码

calicoctl create -f -<<EOF
apiVersion: projectcalico.org/v3
kind: IPPool
Metadata:
   name: ippool
spec:
   cidr: 192.169.0.0/24
   blockSize: 29
   ipipMode: Always
   natOutgoing: true
EOF

我的MysqL部署是

apiVersion: v1
kind: Service
Metadata:
  name: wordpress-MysqL   
  namespace: produccion
  labels:                 
    app: wordpress
spec:
  ports:
    - port: 3306
      targetPort: 3306
      nodePort: 31066
  selector:
    app: wordpress
    tier: MysqL
  type: NodePort
---
apiVersion:  apps/v1
kind: Deployment
Metadata:
  name: wordpress-MysqL
  namespace: produccion
  annotations:
    cni.projectcalico.org/ipv4pools: ippool
  labels:
    app: wordpress
spec:
  selector:
    matchLabels:
      app: wordpress
      tier: MysqL
  strategy:
    type: Recreate
  template:
    Metadata:
      labels:
        app: wordpress
        tier: MysqL
    spec:
      containers:
      - image: MysqL
        name: MysqL
        env:
        - name: MysqL_ROOT_PASSWORD
          value: PASS
        ports:
        - containerPort: 3306
          name: MysqL
        volumeMounts:
        - name: MysqL-persistent-storage 
          mountPath: "/var/lib/MysqL"
      volumes:
      - name: MysqL-persistent-storage 
        persistentVolumeClaim:
          claimName: MysqL-pv-claim

我的 wordpress 部署

apiVersion: v1
kind: Service
Metadata:
  name: wordpress
  namespace: produccion
  labels:
    app: wordpress
spec:
  ports:
    - port: 80
      nodePort: 30999
  selector:
    app: wordpress
    tier: frontend
  type: NodePort
---
apiVersion: apps/v1 
kind: Deployment
Metadata:
  name: wordpress
  namespace: produccion
  labels:
    app: wordpress
spec:
  selector:
    matchLabels:
      app: wordpress
      tier: frontend
  strategy:
    type: Recreate
  template:
    Metadata:
      labels:
        app: wordpress
        tier: frontend
    spec:
      containers:
      - image: wordpress
        name: wordpress
        env:
        - name: wordpress_DB_NAME
          value: wordpress
        - name: wordpress_DB_HOST
          value: IP_Address:31066
        - name: wordpress_DB_USER
          value: root
        - name: wordpress_DB_PASSWORD
          value: PASS
        ports:
        - containerPort: 80
          name: wordpress
        volumeMounts:
        - name: wordpress-persistent-storage
          mountPath: "/var/www/html"          
      volumes:
      - name: wordpress-persistent-storage
        persistentVolumeClaim:
          claimName: wordpress-persistent-storage

此外,我还有每个服务(MysqLwordpress)的两个 PV yaml 文件

当我执行任何部署的 Kubectl 时,它们保持在 ContainerCreating,而 IP 列保持在 none

produccion             wordpress-MysqL-74578f5d6d-knzzh             0/1     ContainerCreating   0          70m    <none>           dockerc8.tecsinfo-ec.com 

如果我检查这个 pod,我会得到下一个错误

normal   Scheduled               88s                             default-scheduler  Successfully assigned produccion/wordpress-MysqL-74578f5d6d-65jvt to dockerc8.tecsinfo-ec.com
  Warning  FailedCreatePodSandBox  <invalid>                       kubelet            Failed to create pod sandBox: rpc error: code = UnkNown desc = Failed to set up sandBox container "cdb1460246562cac11a57073ab12489dc169cb72aa3371cb2e72489544812a9b" network for pod "wordpress-MysqL-74578f5d6d-65jvt": networkPlugin cni Failed to set up pod "wordpress-MysqL-74578f5d6d-65jvt_produccion" network: invalid character 'i' looking for beginning of value
  Warning  FailedCreatePodSandBox  <invalid>                       kubelet            Failed to create pod sandBox: rpc error: code = UnkNown desc = Failed to set up sandBox container "672a2c35c2bb99ebd5b7d180d4426184613c87f9bc606c15526c9d472b54bd6f" network for pod "wordpress-MysqL-74578f5d6d-65jvt": networkPlugin cni Failed to set up pod "wordpress-MysqL-74578f5d6d-65jvt_produccion" network: invalid character 'i' looking for beginning of value
  Warning  FailedCreatePodSandBox  <invalid>                       kubelet            Failed to create pod sandBox: rpc error: code = UnkNown desc = Failed to set up sandBox container "de4d7669206f568618a79098d564e76899779f94120bddcee080c75f81243a85" network for pod "wordpress-MysqL-74578f5d6d-65jvt": networkPlugin cni Failed to set up pod "wordpress-MysqL-74578f5d6d-65jvt_produccion" network: invalid character 'i' looking for beginning of value

我使用了一些来自互联网的指南,例如:https://www.projectcalico.org/calico-ipam-explained-and-enhanced/ 但即使这在我的实验室中也不起作用。

我刚开始使用 Kubernetes,不知道还能做什么或检查什么。

解决方法

根据此处的 Project Calico 文档,您的错误是由于 YAML 中的值无效造成的:Using Kubernetes annotations

您需要提供 IP 池列表作为注释中的值,而不是单个字符串。以下代码段应该适合您。

cni.projectcalico.org/ipv4pools: "[\"ippool\"]"

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。