Edge CR status ValidationLoopBackOff

After deploying or updating Edge, if the Edge CR status shows as “ValidationLoopBackOff” as shown below:

Output of kubectl get edge c8yedge -n c8yedge:

NAME        DOMAIN NAME     VERSION     STATUS
c8yedge     myown.iot.com   1018.0.1    ValidationLoopBackOff

Describe the Edge CR (c8yedge): kubectl describe edge c8yedge -n c8yedge.

In the events section, you will find the reasons for the validation failure. For example:

Name: c8yedge
Namespace: c8yedge
API Version: edge.cumulocity.com/v1
Kind: CumulocityIoTEdge

Status:
  Deploying Generation:  x
  State: ValidationLoopBackOff

Events:
 Type      Reason                   Age     From               Message
 ----      ------                   ----    ----               -------
 Normal    Validating               8m37s   cumulocityiotedge  validating
 Normal    ValidationLoopBackoff    8m37s   cumulocityiotedge  invalid [spec.licenseKey] value [empty]

Edge CR status InstallLoopBackOff or UpdateLoopBackOff

After deploying or updating Edge, if the Edge CR status is InstallationLoopBackOff or UpdateLoopBackOff, as part of the output of kubectl get edge c8yedge -n c8yedge:

NAME         DOMAIN NAME     VERSION     STATUS     
c8yedge      myown.iot.com   1018.0.1    InstallLoopBackOff

Describe the Edge CR (cumulocity-iot-edge) with the command kubectl describe edge c8yedge -n c8yedge.

In the events section, you will find the reasons for the install or update failure. For example:

Name: c8yedge
Namespace: c8yedge
API Version: edge.cumulocity.com/v1
Kind: CumulocityIoTEdge

Status:
  Deploying Generation: x
  State: InstallLoopBackOff

Events:
 Type    Reason               Age    From               Message
 ------  ------               ----   ----               -------
 Normal  Validating           8m37s  cumulocityiotedge  validating
 Normal  ValidationPassed     8m37s  cumulocityiotedge  validation passed
 Normal  Installing           8m34s  cumulocityiotedge  installing
……
……
 Normal  InstallLoopBackOff   1m00s  cumulocityiotedge  waiting for mongo server to be ready

Check the logs of the Edge operator, MongoDB and core pods to get more insights.

The Edge operator logs:

kubectl logs -n c8yedge deployment.apps/c8yedge-operator-controller-manager -c manager

MongoDB logs:

kubectl logs -n c8yedge --all-containers --prefix statefulset.apps/edge-db-rs0

Core logs:

kubectl logs -n c8yedge --all-containers --prefix statefulset.apps/c8ycore-sts

Pending external cumulocity-core service IP

The external IP is not assigned to the cumulocity-core service.

Output of kubectl get service cumulocity-core -n c8yedge:

NAME              TYPE           CLUSTER-IP          EXTERNAL-IP   PORT(S)                                      AGE 
cumulocity-core   LoadBalancer   X.X.X.X **REDACTED  <pending>     443:31342/TCP,1883:32751/TCP,8883:32270/TCP  12m           

For more information, see Assigning an external IP.

Edge not showing up as a device in the cloud tenant

Edge is unable to register itself as a device in your cloud tenant.

Describe the Edge CR kubectl describe edge c8yedge -n c8yedge

In the events section, you will find an event with a reason. For example:

Name: c8yedge
Namespace: c8yedge
API Version: edge.cumulocity.com/v1
Kind: CumulocityIoTEdge

Status:
  Deployed Generation:  x
  State: Ready

Events:
 Type      Reason                       Age    From               Message
 ----      ------                       ----   ----               -------
 Normal    Validating                   8m37s  cumulocityiotedge  validating
 Normal    ValidationPassed             8m37s  cumulocityiotedge  validation passed
 Normal    Installing                   8m34s  cumulocityiotedge  installing
……
……
 Normal    Ready                        1m00s  cumulocityiotedge  installed successfully
 Warning   FailedToRegisterCloudDevice  0m30s  cumulocityiotedge  Device failed to connect to <cloud tenant domain>, you might not have uploaded the device certificate to Cumulocity

Possible reasons:

If you must contact Software AG Global Support, include the output of the diagnostics dump. For more information about accessing diagnostic logs, see Accessing logs.