jiebi/CodeConvo huggingface dataset:
Change:
<!-- Please use this template while reporting a bug and provide as much info as possible. Not doing so may result in your bug not being addressed in a timely manner. Thanks!--kube-proxy cannot use ipvs mode on Linux 4.19 due to a check for the module, which was changed to (). uses to check for : It should instead accept on Linux 4.19 or above. What happened: kube-proxy fell back from ipvs mode to iptables mode. What you expected to happen: kube-proxy using ipvs. How to reproduce it (as minimally and precisely as possible): Launch a cluster on an image using Linux 4.19 or above with kube-proxy using ipvs mode (see ). Environment: Kubernetes version (use ): All Kernel (e.g. ): 4.19 <!-- DO NOT EDIT BELOW THIS LINE --/kind bug
/sig network
/area ipvs /assign /cc
Okay, so should check {nfconntrackipv4 | nf_conntrack} and expect load at least one module?
I think so
Please just go ahead :)

Discussion:
Currently, local-up scripts, GCE scripts and kubeadm support switching IPVS proxy mode via exporting environment variables or specifying flags. ### Prerequisite <del> Ensure IPVS required kernel modules </del> <ins> Ensure IPVS required kernel modules (**Notes**: use `nf_conntrack` instead of `nf_conntrack_ipv4` for Linux kernel 4.19 and later) </ins> ```shell ip_vs ip_vs_rr

"ip_vs_wrr", "ip_vs_sh", "nf_conntrack_ipv4", <ins> "nf_conntrack", </ins> } // In IPVS proxy mode, the following flags need to be set

wantModules.Insert(ipvsModules...) loadModules.Insert(mods...) modules := wantModules.Difference(loadModules).UnsortedList() <del> if len(modules) != 0 { return false, fmt.Errorf("IPVS proxier will not be used because the following required kernel modules are not loaded: %v", modules) </del> <ins> var missingMods []string ConntrackiMissingCounter := 0 for _, mod := range modules { if strings.Contains(mod, "nf_conntrack") { ConntrackiMissingCounter++ } else { missingMods = append(missingMods, mod) } } if ConntrackiMissingCounter == 2 { missingMods = append(missingMods, "nf_conntrack_ipv4(or nf_conntrack for Linux kernel 4.19 and later)") } if len(missingMods) != 0 { return false, fmt.Errorf("IPVS proxier will not be used because the following required kernel modules are not loaded: %v", missingMods) </ins> } // Check ipset version
Change:
xref: When running the GCE PD CSI Driver against all dynamic provisioning tests from this PR: We encounter the following test failures that need to be resolved: /kind bug /sig storage /cc
So it seems that the flag is getting passed all the way through to the driver and it is behaving as we would expect it to in terms of mounting. All the correct commands are being run: When exec-ing into the gce-pd-driver container we can observe that the mounted point is indeed read only. However, when viewed from the host node's perspective the mount is still read write. And therefore since the subpath folder is created by the host, the folder is still being created successfully which fails the test. This behavior suggests that is either not properly propagating the read only option on remount, or not properly remounting at all. I can't figure out how to "view mount events" if that's even possible, some help would be appreciated if anyone is aware of how to do that. That would help me narrrow down which of those two options is happening. I have also attempted (from inside the gce pd driver container) to unmount the point (successful) and bind mount it back with the readonly option directly (not using remount trick, still unsuccessful). Suggesting that maybe it is the that is not being mount propagated and not a problem with in particular. /cc
/assign
/milestone v1.13 /priority important-soon

Discussion:
testReadFile(input.f, input.filePathInSubpath, input.pod, 0) }) <del> It("should fail for new directories when readOnly specified in the volumeSource [Slow]", func() { if input.roVol == nil { framework.Skipf("Volume type %v doesn't support readOnly source", input.volType) } // Format the volume while it's writable formatVolume(input.f, input.formatPod) // Set volume source to read only input.pod.Spec.Volumes[0].VolumeSource = *input.roVol // Pod should fail testPodFailSubpathError(input.f, input.pod, "") }) </del> // TODO: add a test case for the same disk with two partitions }

roleRef: kind: Role name: external-attacher-cfg <ins> apiGroup: rbac.authorization.k8s.io </ins>

roleRef: kind: Role name: external-provisioner-cfg <ins> apiGroup: rbac.authorization.k8s.io </ins>
Change:
<!-- Please use this template while reporting a bug and provide as much info as possible. Not doing so may result in your bug not being addressed in a timely manner. Thanks!--What happened: When trying to deploy Kubernetes using kubeadm v1.12.1, kubeadm failed to generate certificates, causing it to fail at a later step. After passing to get all the logs I could I found that it was expecting all the certificates to have been pre-made, even though I only the certificate and key for the certificate authority. So I dug into the code, and in I found this: It turns out all the PKI I've been generating for things like etcd has been ECDSA. So I found the issue I was having, but I still couldn't figure out why kubeadm wasn't failing right away. I took a look at the caller of that function: It looks like that original error is swallowed. What you expected to happen: Immediate failure when keys are in the wrong format. How to reproduce it (as minimally and precisely as possible): Use an ECDSA cert/key pair and run . Anything else we need to know?: Environment: Kubernetes version (use ): v1.12.1 Cloud provider or hardware configuration: OpenStack OS (e.g. from /etc/os-release): Ubuntu 18.04 Kernel (e.g. ): 4.15.0-34-generic -Ubuntu SMP Mon Aug 27 15:21:48 UTC 2018 x8664 x8664 x86_64 GNU/Linux Install tools: kubeadm Others: <!-- DO NOT EDIT BELOW THIS LINE --/kind bug
Please create a issue on
/area kubeadm /sig cluster-lifecycle
Sure.

Discussion:
case *rsa.PrivateKey: key = k default: <del> return nil, errors.Wrapf(err, "the private key file %s isn't in RSA format", privateKeyPath) </del> <ins> return nil, errors.Errorf("the private key file %s isn't in RSA format", privateKeyPath) </ins> } return key, nil

// Allow RSA format only k, ok := privKey.(*rsa.PrivateKey) if !ok { <del> return nil, nil, errors.Wrapf(err, "the private key file %s isn't in RSA format", privateKeyPath) </del> <ins> return nil, nil, errors.Errorf("the private key file %s isn't in RSA format", privateKeyPath) </ins> } p := pubKeys[0].(*rsa.PublicKey)
Change:
go 1.11.2 is out 11/2 and this bug tracks upgrade to the latest version. Is it something we should absolutely needed in the 1.13 timeframe? are there any that should absolutely take? how long does the associated image updates and push take? If we chose to upgrade in 1.13, we should do it before code slush targeted for Friday 11/6. /assign can you please clarify the above ques and and help evaluate timing of the upgrade. /cc /sig release /sig testing /priority important-soon /kind cleanup
/cc I’ve already got a branch cooking for this, but waiting for rules_go support first. I think said in Slack that this will happen this week.
Ahh so is the earliest expected timeframe when we can upgrade falls into Code slush period for 1.13 (post 11/9?) Depending on when it lands we might want to see if its safe to wait for 1.13.1. are you aware of any critical fixes that make this compelling for 1.13 timeframe?
The risk for patch golang point releases is typically low (the minor releases, like 1.10 -1.11, are higher risk). I don't see anything that's critical or of known impact, but at the same time, I see compiler fixes and go/types package fixes. They are more subtle and could present issues later. I'd suggest that if we can tolerate getting it in, even if we're in slush, we should.
Ack that :) Plz ping this bug as soon as we are ready to build and push the upgraded images. we'll will make a final call depending on the timeframe and CI signal going in. thanks!

Discussion:
# This file creates a standard build environment for building cross # platform go binary for the architecture kubernetes cares about. <del> FROM golang:1.11.1 </del> <ins> FROM golang:1.11.2 </ins> ENV GOARM 7 ENV KUBE_DYNAMIC_CROSSPLATFORMS 

<del> v1.11.1-2 </del> <ins> v1.11.2-1 </ins>

go_rules_dependencies() go_register_toolchains( <del> go_version = "1.11.1", </del> <ins> go_version = "1.11.2", </ins> ) docker_repositories()

REGISTRY ?= gcr.io/kubernetes-e2e-test-images GOARM=7 QEMUVERSION=v2.9.1 <del> GOLANG_VERSION=1.11.1 </del> <ins> GOLANG_VERSION=1.11.2 </ins> export ifndef WHAT
Change:
<!-- Please use this template while reporting a bug and provide as much info as possible. Not doing so may result in your bug not being addressed in a timely manner. Thanks!--What happened: User has role binding to in the namespace. What you expected to happen: To roll back successfully. How to reproduce it (as minimally and precisely as possible): A 1.10 cluster (haven't tested 1.11 but I suspect it's the same) and a 1.12 Anything else we need to know?: It seems that the built in and clusterroles don't cover , which is needed in =1.12 for to interact with revision history? Environment: Kubernetes version (use ):Install tools: Self-written ansible roles <!-- DO NOT EDIT BELOW THIS LINE --/kind bug /sig auth /sig cli /sig apps
opened and picks to 1.10, 1.11, 1.12

Discussion:
rbacv1helpers.NewRule(Read...).Groups(legacyGroup).Resources("namespaces").RuleOrDie(), rbacv1helpers.NewRule(Read...).Groups(appsGroup).Resources( <ins> "controllerrevisions", </ins> "statefulsets", "statefulsets/scale", "daemonsets", "deployments", "deployments/scale",

- apiGroups: - apps resources: <ins> - controllerrevisions </ins> - daemonsets - deployments - deployments/scale
Change:
<!-- Please only use this template for submitting enhancement requests --What would you like to be : In pkg/scheduler/core/generic_scheduler# , add some debug info: each scheduler extender's score and its name for each pod, e.g. And we need add a function(e.g. ) in interface to get extender's name or similar identity. For , it might be enough to return its url . Why is this needed: If there are two or more scheduler extenders configured for scheduler(and we have now), it will be very useful to debug why kubelet nodes get so high/low score. <!-- DO NOT EDIT BELOW THIS LINE --/kind feature
/assign
Reiterating the mentions to trigger a notification: <detailsIn response to : /assign Instructions for interacting with me using PR comments are available . If you have questions or suggestions related to my behavior, please file an issue against the repository. </details
Why don't you send a PR instead?
Thanks. PR is sent. PTAL.

Discussion:
// decisions made by Kubernetes. This is typically needed for resources not directly // managed by Kubernetes. type SchedulerExtender interface { <ins> // Name returns a unique name that identifies the extender. Name() string </ins> // Filter based on extender-implemented predicate functions. The filtered list is // expected to be a subset of the supplied list. failedNodesMap optionally contains // the list of failed nodes and failure reasons.

}, nil } <ins> // Name returns extenderURL to identifies the extender. func (h *HTTPExtender) Name() string { return h.extenderURL } </ins> // IsIgnorable returns true indicates scheduling should not fail when this extender // is unavailable func (h *HTTPExtender) IsIgnorable() bool {

cachedNodeNameToInfo map[string]*schedulercache.NodeInfo } <ins> func (f *FakeExtender) Name() string { return "FakeExtender" } </ins> func (f *FakeExtender) IsIgnorable() bool { return f.ignorable }

} if glog.V(10) { for _, hostPriority := range results[index] { <del> glog.Infof("%v -> %v: %v, Score: (%d)", pod.Name, hostPriority.Host, config.Name, hostPriority.Score) </del> <ins> glog.Infof("%v -> %v: %v, Score: (%d)", util.GetPodFullName(pod), hostPriority.Host, config.Name, hostPriority.Score) </ins> } } }(i, priorityConfig)

mu.Lock() for i := range *prioritizedList { host, score := (*prioritizedList)[i].Host, (*prioritizedList)[i].Score <ins> if glog.V(10) { glog.Infof("%v -> %v: %v, Score: (%d)", util.GetPodFullName(pod), host, ext.Name(), score) } </ins> combinedScores[host] += score * weight } mu.Unlock()

ignorable         bool } <ins> func (f *fakeExtender) Name() string { return "fakeExtender" } </ins> func (f *fakeExtender) IsIgnorable() bool { return f.ignorable }
Change:
What happened: The logic in the checkerNames test for is faulty. Failing the test when the 'wanted' value equals the actual result is the opposite behavior of what we want. What you expected to happen: I expect the test to fail when the desired output is not the same as the actual output. <!-- DO NOT EDIT BELOW THIS LINE --/kind bug
/sig api-machinery /assign

Discussion:
checks = []HealthzChecker{PingHealthz} } <del> glog.V(5).Info("Installing healthz checkers:", strings.Join(checkerNames(checks...), ", ")) </del> <ins> glog.V(5).Info("Installing healthz checkers:", formatQuoted(checkerNames(checks...)...)) </ins> mux.Handle(path, handleRootHealthz(checks...)) for _, check := range checks {

// checkerNames returns the names of the checks in the same order as passed in. func checkerNames(checks ...HealthzChecker) []string { <del> if len(checks) > 0 { // accumulate the names of checks for printing them out. checkerNames := make([]string, 0, len(checks)) for _, check := range checks { // quote the Name so we can disambiguate checkerNames = append(checkerNames, fmt.Sprintf("%q", check.Name())) } return checkerNames </del> <ins> // accumulate the names of checks for printing them out. checkerNames := make([]string, 0, len(checks)) for _, check := range checks { checkerNames = append(checkerNames, check.Name()) </ins> } <del> return nil </del> <ins> return checkerNames } // formatQuoted returns a formatted string of the health check names, // preserving the order passed in. func formatQuoted(names ...string) string { quoted := make([]string, 0, len(names)) for _, name := range names { quoted = append(quoted, fmt.Sprintf("%q", name)) } return strings.Join(quoted, ",") </ins> }

for _, tc := range testCases { result := checkerNames(tc.have...) t.Run(tc.desc, func(t *testing.T) { <del> if reflect.DeepEqual(tc.want, result) { </del> <ins> if !reflect.DeepEqual(tc.want, result) { </ins> t.Errorf("want %#v, got %#v", tc.want, result) } }) } <ins> } func TestFormatQuoted(t *testing.T) { n1 := "n1" n2 := "n2" testCases := []struct { desc     string names    []string expected string }{ {"empty", []string{}, ""}, {"single name", []string{n1}, ""n1""}, {"two names", []string{n1, n2}, ""n1","n2""}, {"two names, reverse order", []string{n2, n1}, ""n2","n1""}, } for _, tc := range testCases { result := formatQuoted(tc.names...) t.Run(tc.desc, func(t *testing.T) { if result != tc.expected { t.Errorf("expected %#v, got %#v", tc.expected, result) } }) } </ins> }
Change:
<!-- Please use this template while reporting a bug and provide as much info as possible. Not doing so may result in your bug not being addressed in a timely manner. Thanks!--What happened: When I did e2e conformance test with log level 5, it completely passed! When I did e2e conformance test with log level 8, it just failed. The only thing I did is just leveling up from log level 5 to 8. But, I've got this error message. What you expected to happen: test would be completely passed and just get more verbose log Environment: local cluster <!-- DO NOT EDIT BELOW THIS LINE --/kind bug
/sig testing
Nice report. I confirmed this issue happens on my local environment also like:

Discussion:
// headersForConfig extracts any http client logic necessary for the provided // config. <del> func headersForConfig(c *restclient.Config) (http.Header, error) { </del> <ins> func headersForConfig(c *restclient.Config, url *url.URL) (http.Header, error) { </ins> extract := &extractRT{} rt, err := restclient.HTTPWrappersForConfig(c, extract) if err != nil { return nil, err } <del> if _, err := rt.RoundTrip(&http.Request{}); err != nil { </del> <ins> if _, err := rt.RoundTrip(&http.Request{URL: url}); err != nil { </ins> return nil, err } return extract.Header, nil

url.Host += ":80" } } <del> headers, err := headersForConfig(config) </del> <ins> headers, err := headersForConfig(config, url) </ins> if err != nil { return nil, fmt.Errorf("failed to load http headers: %v", err) }
Change:
When running some GCE PD CSI Driver E2E tests this warning gets printed out repeatedly. Looks like it's in a tight retry loop. 1) What needs to be fixed so that this error doesn't happen? 2) If it does error out, can it retry a couple times then give up. Right now it just continuously prints these warning statements drowning out any other log signals. /cc not sure who has the most context on this <!-- DO NOT EDIT BELOW THIS LINE --/kind bug
/sig storage
I wrote that code. The error message comes from this API here: And gets printed here: The code gets triggered by pod events. At least to me it wasn't clear when log retrieval is supposed to succeed and when it is expected to fail, so the operation simply gets retried until it succeeds. If this "the server does not allow this method on the requested resource" error is normal and can be ignored, then it can be to the regex in and then it'll get suppressed.
/assign
These particular logs might be from the daemonset pod that is trying to run on the master node
Michelle Au <: It looks like test logs are incomplete (). If true, then this permission issue permanently prevents capturing log output. Does anyone have an idea how to get logs in this setup?
I'm not sure about that, the logs show: as the driver running on the node. Edit: This is not ture, this could still be the master node, the daemonset names all its pods like this
I think it would be much better if we could figure out the source of the error and remedy it instead of turning off logs for server errors altogether
The log spam is making it really difficult to run the tests locally:
Saad Ali <: As you can reproduce it, do you have an explanation for why this permission error occurs? All I can do is suppress the error, but I think we all agree that this shouldn't be done without understanding the issue first.
I haven't confirmed but I think it's from the daemonset pod that is trying to unsuccessfully run on the master node. I think we could try to skip pods that are not actually running
FWIW it only happens when the test is failing.
Saad Ali <: So perhaps it really has to do something with trying to get logs for pods that couldn't start? Does help?

Discussion:
} for _, pod := range pods.Items { <del> for _, c := range pod.Spec.Containers { </del> <ins> for i, c := range pod.Spec.Containers { </ins> name := pod.ObjectMeta.Name + "/" + c.Name <del> if logging[name] { </del> <ins> if logging[name] || // sanity check, array should have entry for each container len(pod.Status.ContainerStatuses) <= i || // Don't attempt to get logs for a container unless it is running or has terminated. // Trying to get a log would just end up with an error that we would have to suppress. (pod.Status.ContainerStatuses[i].State.Running == nil && pod.Status.ContainerStatuses[i].State.Terminated == nil) { </ins> continue } readCloser, err := LogsForPod(ctx, cs, ns, pod.ObjectMeta.Name,
Change:
Description: , part of the is exporting a field which allows to modify its value externally. This also means that this field is not thread-safe. Solution: Expose a method that returns this value in a thread-safe way and do not export the field. /kind bug /sig scheduling

Discussion:
if len(g.predicates) == 0 { filtered = nodes } else { <del> allNodes := int32(g.cache.NodeTree().NumNodes) </del> <ins> allNodes := int32(g.cache.NodeTree().NumNodes()) </ins> numNodesToFind := g.numFeasibleNodesToFind(allNodes) // Create filtered list with enough space to avoid growing it

if !found { t.Errorf("Failed to find node %v in schedulerinternalcache.", node.Name) } <del> if cache.nodeTree.NumNodes != 1 || cache.nodeTree.Next() != node.Name { </del> <ins> if cache.nodeTree.NumNodes() != 1 || cache.nodeTree.Next() != node.Name { </ins> t.Errorf("cache.nodeTree is not updated correctly after adding node: %v", node.Name) }

t.Errorf("Failed to update node in schedulercache:n got: %+v nexpected: %+v", got, expected) } // Check nodeTree after update <del> if cache.nodeTree.NumNodes != 1 || cache.nodeTree.Next() != node.Name { </del> <ins> if cache.nodeTree.NumNodes() != 1 || cache.nodeTree.Next() != node.Name { </ins> t.Errorf("unexpected cache.nodeTree after updating node: %v", node.Name) }

} // Check nodeTree after remove. The node should be removed from the nodeTree even if there are // still pods on it. <del> if cache.nodeTree.NumNodes != 0 || cache.nodeTree.Next() != "" { </del> <ins> if cache.nodeTree.NumNodes() != 0 || cache.nodeTree.Next() != "" { </ins> t.Errorf("unexpected cache.nodeTree after removing node: %v", node.Name) } }

tree      map[string]*nodeArray // a map from zone (region-zone) to an array of nodes in the zone. zones     []string              // a list of all the zones in the tree (keys) zoneIndex int <del> NumNodes  int </del> <ins> numNodes  int </ins> mu        sync.RWMutex }

nt.tree[zone] = &nodeArray{nodes: []string{n.Name}, lastIndex: 0} } klog.V(5).Infof("Added node %v in group %v to NodeTree", n.Name, zone) <del> nt.NumNodes++ </del> <ins> nt.numNodes++ </ins> } // RemoveNode removes a node from the NodeTree.

nt.removeZone(zone) } klog.V(5).Infof("Removed node %v in group %v from NodeTree", n.Name, zone) <del> nt.NumNodes-- </del> <ins> nt.numNodes-- </ins> return nil } }

} } } <ins> // NumNodes returns the number of nodes. func (nt *NodeTree) NumNodes() int { nt.mu.RLock() defer nt.mu.RUnlock() return nt.numNodes } </ins>

for _, na := range expectedTree { expectedNumNodes += len(na.nodes) } <del> if nt.NumNodes != expectedNumNodes { t.Errorf("unexpected NodeTree.numNodes. Expected: %v, Got: %v", expectedNumNodes, nt.NumNodes) </del> <ins> if numNodes := nt.NumNodes(); numNodes != expectedNumNodes { t.Errorf("unexpected NodeTree.numNodes. Expected: %v, Got: %v", expectedNumNodes, numNodes) </ins> } if !reflect.DeepEqual(nt.tree, expectedTree) { t.Errorf("The node tree is not the same as expected. Expected: %v, Got: %v", expectedTree, nt.tree)
Change:
<!-- Please only use this template for submitting reports about failing tests in Kubernetes CI jobs --Which jobs are failing: Which test(s) are failing: [] Container Runtime blackbox test on terminated container should report termination message from log output if TerminationMessagePolicy FallbackToLogsOnError is set [NodeConformance] Since when has it been failing: Failing under PR Testgrid link: Reason for failure: Unable to match the inconsistent termination message with an expected value. Anything else we need to know: <!-- DO NOT EDIT BELOW THIS LINE --/kind failing-test
/sig testing /area conformance
Just for quick update. From the latest of PR , following points are observed from - PASSING under local cluster (hack/local-up-) tmp-node-e2e--coreos-beta-1883-1-0-v20180911 tmp-node-e2e--cos-stable-60-9592-84-0 tmp-node-e2e--cos-stable-63--71-0 FAILING under tmp-node-e2e--ubuntu-gke-1604-xenial-v20170420-1
Seeking attention from for troubleshooting issue. test is running successful on various platforms but not able to retrieve test's execution logs in kubelet's log. Tried investigating issue (ref ) from various execution platform where test is successful but couldn't find sufficient log entries. Seeking SIG help to troubleshoot test failure observed in PR
there are two problems here: 1) so far the broken tests never get run because a bug in the test code (this explains why pull-kubernetes-node-e2e never fails on our PRs), which should be fixed by . 2) With , I can reproduce your problem, and verify that the ubuntu image used in our test is broken. We will update the ubuntu image.
Thanks for looking into this long-awaited issue.

Discussion:
} // We want to add the pod to the model iff the bind succeeds, but we don't want to race <del> // with any deletions, which happen asyncronously. </del> <ins> // with any deletions, which happen asynchronously. </ins> s.config.Modeler.LockedAction(func() { bindingStart := time.Now() err := s.config.Binder.Bind(b)