krane 2.4.2 → 2.4.5
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +4 -4
- data/CHANGELOG.md +18 -0
- data/lib/krane/kubernetes_resource/daemon_set.rb +19 -3
- data/lib/krane/kubernetes_resource/pod.rb +7 -1
- data/lib/krane/version.rb +1 -1
- metadata +2 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 0231d6f4ef50874282ebc4456e5a13ba48408ec22a2b9caef05229323561c2f3
|
4
|
+
data.tar.gz: b3007f0d090526b1552638e63aa3a350e6cc8182aab6abc536f1eafe0acb02fb
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 21b40ac3a9ad836e29f293a1ddd293991ab8c784c54869d705496a101500d22893f3033d28632f8175f49b23397fa74f8cd3b98f18bf614447c30568f13f7bfa
|
7
|
+
data.tar.gz: 89d62f90ddccbfcea97abd44dc304f846f639d6a94781efef2f99b361bdd2e604233e6a968a1f8b583ea213b9d6052f6c52ca9fa6526312bb52cc14ba2172e70
|
data/CHANGELOG.md
CHANGED
@@ -1,5 +1,23 @@
|
|
1
1
|
## next
|
2
2
|
|
3
|
+
## 2.4.5
|
4
|
+
|
5
|
+
*Bug fixes*
|
6
|
+
|
7
|
+
- Revert PR that tried to fail fast when there are container initialization issues to give pods time to be recreated and possible succeed [#885](https://github.com/Shopify/krane/pull/885)
|
8
|
+
|
9
|
+
## 2.4.4
|
10
|
+
|
11
|
+
*Enhancements*
|
12
|
+
|
13
|
+
- Improve DaemonSet rollout by ignoring `Evicted` Pods [#883](https://github.com/Shopify/krane/pull/883)
|
14
|
+
|
15
|
+
## 2.4.3
|
16
|
+
|
17
|
+
*Enhancements*
|
18
|
+
|
19
|
+
- Improve DaemonSet rollout [#881](https://github.com/Shopify/krane/pull/881)
|
20
|
+
|
3
21
|
## 2.4.2
|
4
22
|
|
5
23
|
*Bug fixes*
|
@@ -9,7 +9,8 @@ module Krane
|
|
9
9
|
def sync(cache)
|
10
10
|
super
|
11
11
|
@pods = exists? ? find_pods(cache) : []
|
12
|
-
|
12
|
+
|
13
|
+
@nodes = refresh_nodes(cache)
|
13
14
|
end
|
14
15
|
|
15
16
|
def status
|
@@ -58,7 +59,7 @@ module Krane
|
|
58
59
|
def relevant_pods_ready?
|
59
60
|
return true if rollout_data["desiredNumberScheduled"].to_i == rollout_data["numberReady"].to_i # all pods ready
|
60
61
|
relevant_node_names = @nodes.map(&:name)
|
61
|
-
considered_pods = @pods.select { |p| relevant_node_names.include?(p.node_name) }
|
62
|
+
considered_pods = @pods.select { |p| relevant_node_names.include?(p.node_name) && !p.evicted? }
|
62
63
|
@logger.debug("DaemonSet is reporting #{rollout_data['numberReady']} pods ready." \
|
63
64
|
" Considered #{considered_pods.size} pods out of #{@pods.size} for #{@nodes.size} nodes.")
|
64
65
|
considered_pods.present? &&
|
@@ -66,9 +67,24 @@ module Krane
|
|
66
67
|
rollout_data["numberReady"].to_i >= considered_pods.length
|
67
68
|
end
|
68
69
|
|
70
|
+
def refresh_nodes(cache)
|
71
|
+
new_nodes = find_nodes(cache)
|
72
|
+
return new_nodes if @nodes.blank?
|
73
|
+
|
74
|
+
# Remove non-existent nodes
|
75
|
+
@nodes.select do |node|
|
76
|
+
new_nodes.find { |n| n.name == node.name } != nil
|
77
|
+
end
|
78
|
+
end
|
79
|
+
|
69
80
|
def find_nodes(cache)
|
70
81
|
all_nodes = cache.get_all(Node.kind)
|
71
|
-
all_nodes.
|
82
|
+
all_nodes.each_with_object([]) do |node_data, relevant_nodes|
|
83
|
+
next if node_data.dig('spec', 'unschedulable').to_s.downcase == 'true'
|
84
|
+
cond = node_data.dig('status', 'conditions').find { |c| c['type'].downcase == 'ready' }
|
85
|
+
next if (!cond.nil? && cond['status'].downcase != 'true')
|
86
|
+
relevant_nodes << Node.new(definition: node_data)
|
87
|
+
end
|
72
88
|
end
|
73
89
|
|
74
90
|
def rollout_data
|
@@ -105,6 +105,10 @@ module Krane
|
|
105
105
|
@instance_data.dig('spec', 'nodeName')
|
106
106
|
end
|
107
107
|
|
108
|
+
def evicted?
|
109
|
+
phase == "Failed" && reason == "Evicted"
|
110
|
+
end
|
111
|
+
|
108
112
|
private
|
109
113
|
|
110
114
|
def failed_schedule_reason
|
@@ -225,7 +229,9 @@ module Krane
|
|
225
229
|
elsif limbo_reason == "ErrImagePull" && limbo_message.match(/not found/i)
|
226
230
|
"Failed to pull image #{@image}. "\
|
227
231
|
"Did you wait for it to be built and pushed to the registry before deploying?"
|
228
|
-
|
232
|
+
# Only fail fast when message doesn't include `failed to sync secret cache`.
|
233
|
+
# It's possible that a secret is being created and the pod could get recreated and succeed
|
234
|
+
elsif limbo_reason == "CreateContainerConfigError" && !limbo_message.include?("failed to sync secret cache")
|
229
235
|
"Failed to generate container configuration: #{limbo_message}"
|
230
236
|
elsif @status.dig("lastState", "terminated", "reason") == "ContainerCannotRun"
|
231
237
|
# ref: https://github.com/kubernetes/kubernetes/blob/562e721ece8a16e05c7e7d6bdd6334c910733ab2/pkg/kubelet/dockershim/docker_container.go#L353
|
data/lib/krane/version.rb
CHANGED
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: krane
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 2.4.
|
4
|
+
version: 2.4.5
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Katrina Verey
|
@@ -10,7 +10,7 @@ authors:
|
|
10
10
|
autorequire:
|
11
11
|
bindir: exe
|
12
12
|
cert_chain: []
|
13
|
-
date: 2022-
|
13
|
+
date: 2022-04-05 00:00:00.000000000 Z
|
14
14
|
dependencies:
|
15
15
|
- !ruby/object:Gem::Dependency
|
16
16
|
name: activesupport
|