muff1nman

muff1nman

Working on Kubernetes at @cloudflare

Member Since 9 years ago

@cloudflare,

Experience Points
31
follower
Lessons Completed
17
follow
Lessons Completed
220
stars
Best Reply Awards
228
repos

126 contributions in the last year

Pinned
⚡ :satellite: :cloud: :notes:Airsonic, a Free and Open Source community driven media server (fork of Subsonic and Libresonic)
⚡ Colleciton of custom rpm packages
⚡ A playlist library forked from https://sourceforge.net/projects/lizzy/
⚡ Example of using OpenShift OAuth for authentication in a Spring Boot application
⚡ Test module to test
Activity
Jan
16
1 week ago
Jan
13
1 week ago
Activity icon
issue

muff1nman issue comment rook/rook

muff1nman
muff1nman

DNM: ceph: support some dm devices in host-based cluster

Description of your changes:

Support dm devices, which are already supported in PVC-based cluster, in host-based cluster. Rook creates raw mode OSDs in host-based cluster and then we should be able to create OSDs on any device types. However, these devices are not supported due to the limiation of LVM mode OSD.

NOTE: I succeeded to create a OSD on top of LV as POC. However, I should update code carefully to avoid any regression.

Which issue is resolved by this Pull Request: Resolves #2047

Checklist:

  • Commit Message Formatting: Commit titles and messages follow guidelines in the developer guide.
  • Skip Tests for Docs: Add the flag for skipping the build if this is only a documentation change. See here for the flag.
  • Skip Unrelated Tests: Add a flag to run tests for a specific storage provider. See test options.
  • Reviewed the developer guide on Submitting a Pull Request
  • Documentation has been updated, if necessary.
  • Unit tests have been added, if necessary.
  • Integration tests have been added, if necessary.
  • Pending release notes updated with breaking and/or notable changes, if necessary.
  • Upgrade from previous release is tested and upgrade user guide is updated, if necessary.
  • Code generation (make codegen) has been run to update object specifications, if necessary.

[skip ci]

muff1nman
muff1nman

For what its worth, I had looked into LVM-on-DM for putting rook on externally-managed dmcrypt block devices.

Dec
31
3 weeks ago
Dec
15
1 month ago
started
started time in 1 month ago
Dec
10
1 month ago
Nov
30
1 month ago
Nov
27
1 month ago
Nov
1
2 months ago
Activity icon
issue

muff1nman issue comment kubernetes/kubernetes

muff1nman
muff1nman

Daemonset Status is not updated when Pod create fails

What happened:

A Daemonset's status field was not updated following its failure to create Pods.

What you expected to happen:

A Daemonset's .status.desiredNumberScheduled should be set to match the number of matched nodes and .status.numberUnavailable should be set to reflect any failures where the daemon pods are not running or available even when a Pod cannot be created (i.e. due to lack of pod quota).

How to reproduce it (as minimally and precisely as possible):

$ kubectl apply -f - <<EOF
apiVersion: v1
kind: ResourceQuota
metadata:
  name: quota
spec:
  hard:
    pods: '0'
---
apiVersion: apps/v1
kind: DaemonSet
metadata:
  labels:
    app: kuard
  name: kuard
spec:
  selector:
    matchLabels:
      app: kuard
  template:
    metadata:
      labels:
        app: kuard
    spec:
      containers:
      - image: gcr.io/kuar-demo/kuard-amd64:1
        imagePullPolicy: IfNotPresent
        name: kuard
        resources: {}
EOF
$ kubectl get ds kuard -o json | jq .status
{
  "currentNumberScheduled": 0,
  "desiredNumberScheduled": 0,
  "numberMisscheduled": 0,
  "numberReady": 0
}

The above should have numberUnavailable set to 1 and desiredNumberScheduled set to 1.

$ kubectl get events
20s         Warning   FailedCreate             daemonset/kuard              Error creating: pods "kuard-hdpxb" is forbidden: exceeded quota: compute-resources, requested: pods=1, used: pods=0, limited: pods=0
1s          Warning   FailedCreate             daemonset/kuard              (combined from similar events): Error creating: pods "kuard-xcpgm" is forbidden: exceeded quota: compute-resources, requested: pods=1, used: pods=0, limited: pods=0

It is only after the pod creation is unblocked does status get updated:

$ kubectl delete quota quota
resourcequota "quota" deleted
$ # Wait some time for retry
$ kubectl get ds kuard -o json | jq .status
{
  "currentNumberScheduled": 1,
  "desiredNumberScheduled": 1,
  "numberAvailable": 1,
  "numberMisscheduled": 0,
  "numberReady": 1,
  "observedGeneration": 1,
  "updatedNumberScheduled": 1
}

Anything else we need to know?:

Just some conjecturing but it seems that updateDaemonSetStatus should be called even in the event of a pod error during dsc.manage in a similar way that the replica set controller calls updateReplicaSetStatus when there is an error from rsc.manageReplicas.

Environment:

  • Kubernetes version (use kubectl version):
$ kubectl version
Client Version: version.Info{Major:"1", Minor:"20", GitVersion:"v1.20.2", GitCommit:"faecb196815e248d3ecfb03c680a4507229c2a56", GitTreeState:"clean", BuildDate:"2021-01-13T13:28:09Z", GoVersion:"go1.15.5", Compiler:"gc", Platform:"linux/amd64"}
Server Version: version.Info{Major:"1", Minor:"19", GitVersion:"v1.19.7", GitCommit:"1dd5338295409edcfff11505e7bb246f0d325d15", GitTreeState:"clean", BuildDate:"2021-01-13T13:15:20Z", GoVersion:"go1.15.5", Compiler:"gc", Platform:"linux/amd64"}
muff1nman
muff1nman