10:00:40 #startmeeting containers 10:00:41 Meeting started Tue Jul 17 10:00:40 2018 UTC and is due to finish in 60 minutes. The chair is strigazi. Information about MeetBot at http://wiki.debian.org/MeetBot. 10:00:42 Useful Commands: #action #agreed #help #info #idea #link #topic #startvote. 10:00:44 The meeting name has been set to 'containers' 10:00:48 #topic Roll Call 10:00:54 o/ 10:01:10 o/ 10:02:49 It is the two of us then, let's do it quickly 10:02:56 ok 10:02:58 o/ 10:03:08 hey sfilatov 10:03:09 I'm here to discuss deletion :) 10:03:25 #topic Blueprints/Bugs/Ideas 10:03:40 Test v1.11.0 images 10:03:47 #link https://hub.docker.com/r/openstackmagnum/kubernetes-kubelet/tags/ 10:03:59 conformance tests are passing for me 10:04:11 nice nice 10:04:26 Note: you must use cgroupfs as cgroup_driver 10:04:45 so are we going to bump k8s version for rocky to 1.11.0? 10:04:50 with systemd the node is ready, but it cannot schedule pods 10:04:53 o/ 10:05:09 flwang1: I think yes, it is better 10:05:10 strigazi: then we need to document it somewhere 10:05:24 of course 10:05:24 strigazi: cool, i can do that 10:05:37 but we need to test it first :) 10:05:42 not only me :) 10:05:56 strigazi: sure, when i say i can do that, i mean i will test it 10:06:10 and if it works for me, i will propose a patch and add doc 10:06:36 btw I'm still evaluating the gcr.io hyperkube containers vs a fedora based one 10:07:11 any benefit using hyperkube? 10:07:56 we don't build kubernetes at all we just package the hyperkube container 10:07:59 but 10:08:25 hyperkube is based on debian, incompatibilities may occur 10:08:57 I'll push two patches for the two ways to build 10:09:04 hmm... 10:09:30 ok 10:09:37 to build the rpms is trivial like: git clone kube && bazel build ./build/rpms 10:10:52 like this: http://paste.openstack.org/show/726097/ 10:11:57 nice 10:12:27 bazel is a black box for me, but seems to work pretty well and pretty fast 10:12:51 we can take this offile 10:12:56 we can take this offline 10:12:58 next: 10:13:18 this is a trivial change after all: https://review.openstack.org/#/c/582506/ 10:13:23 Resolve stack outputs only on COMPLETE 10:13:42 but I expect to help a lot when magnum poll heat 10:14:04 in devstack you can not see it, but in big stack will make a difference 10:14:48 are you looking? should I move one? 10:15:09 + from me 10:15:26 that looks good for me 10:15:48 next is the keypair issue and scaling 10:15:50 though i may need to take a look at the resolve_outputs param 10:16:18 flwang1: there is a show_params api 10:16:27 cool 10:16:44 flwang1: resolve_outputs says to heat to not bother with the outputs of the stack 10:17:02 and outputs means more api calls in heat i guess? 10:17:14 to other services 10:17:15 flwang1: even during stack creation heat will though all server to get the ips 10:17:28 flwang1: it means more load on the engine 10:17:39 right, matching what i thought 10:17:44 all good 10:17:53 flwang1: and it means slow api response 10:18:09 flwang1: normally I have 250ms response time 10:18:45 flwang1: with a 50 node cluster in progress, any api call goes to 15 seconds 10:19:17 omg 10:19:26 flwang1: all magnum nodes hit all heat api eventually with the same request and the apis block 10:19:41 but 10:20:07 if you create the stack with the heat api and magnum is not hammering, all good 10:20:29 without output resolve the stack get call is a simple lookup 10:20:44 strigazi: thanks for the clarification 10:21:31 I created a 500 node cluster 2 weeks ago and immediatly I stop magnum from hitting heat, everything was smooth 10:21:53 next, keypair 10:22:15 keypair is an OS resource that it cannot be shared in a project 10:22:44 and a cluster owns let's say a key 10:23:02 admin can't do stack update or other members 10:23:07 with this patch: 10:23:24 #link https://review.openstack.org/#/c/582880/ 10:23:40 users can do a stack update freely 10:23:46 with these params in heat: 10:23:51 deferred_auth_method = trusts 10:23:52 reauthentication_auth_method = trusts 10:24:06 all good so far but 10:24:28 if the user is deleted its trust is deleted so the stack can not be touched again 10:25:18 afaik only solution: pass the key in user_data and not as a keypair in nova 10:25:22 thoughts? 10:25:53 How does it allow other users to make changes? it is not immediately obvious to me 10:25:59 looking at the patch 10:26:21 brtknr the keypair is created on cluster creation 10:26:54 so instead of using the original user's public key, we just generate a common one for everybody? 10:27:10 brtknr: and authtication is done using the trust, so userB will authenticate behind the scenes with the trust of userA 10:27:32 flwang1 the thing is that there is no such thing as common jey 10:27:34 flwang1 the thing is that there is no such thing as common key 10:27:51 the key is only visible by the creator 10:28:06 how does userA enable trust for userB? I suppose this has to be set somewhere? 10:28:06 can't we just generate one and 'share' it to all users in the tenant? 10:28:27 flwang1 impossible in nova 10:28:32 strigazi: ok 10:28:32 flwang1: can we share nova keys 10:28:35 y 10:28:45 brtknr: heat does this 10:28:49 sfilatov: no we can't 10:29:55 sfilatov: https://docs.openstack.org/horizon/pike/user/configure-access-and-security-for-instances.html 10:30:01 A key pair belongs to an individual user, not to a project. To share a key pair across multiple users, each user needs to import that key pair. 10:30:23 that is not correctly expressed 10:30:49 it means all users must import the same public_key 10:31:04 strigazi: yep, so we can't do it natively 10:31:31 we can simulate the shared key with heat using the trust 10:31:48 but as I said if the user is deleted the trust is gone 10:32:32 hmm 10:32:48 would be nice to set group priviledge 10:33:03 e.g any user in admin group can modify the cluster 10:33:03 I don't think it is possible 10:33:54 but this is certainly the next best thing 10:34:02 brtknr: and it is not only desirable for admins 10:34:15 brtknr: in private clouds you have shared resources 10:34:33 in public too, but not as much as in private 10:34:58 and as I mentioned passing the key in user data will work in all cases. 10:35:16 does this sound bad to you ^^ 10:36:37 how does it limit who is allowed to make changes to the cluster or not? 10:36:53 or is it not limited at all? 10:36:55 it does not 10:37:16 sounds a little worrying lol 10:38:19 how about a heat parameter that is a list of users that are allowed to make change 10:38:33 or we assume that anyone in the project is allowed to make changes 10:39:10 you know about this right? https://github.com/strigazi.keys 10:39:36 let's take this offline, I need to explain the problem more I guess 10:39:46 it is a limitation of nova 10:39:54 not magnum or heat 10:40:18 Let's talk about k8s loadbalancer deletions then 10:40:32 I have one more thing for upgrades, sorry 10:40:36 sure 10:41:12 For the past weeks, I'm trying to drain nodes before rebuilding them 10:41:49 The issue is that this api call must be executed before every node rebuild 10:42:01 so it must be in the heat workflow 10:42:22 otherwise heat is not managing the status 10:42:32 of the infrastructure anymore 10:43:16 I'm trying this pattern so far: http://paste.openstack.org/show/726098/ 10:43:45 with no success so far 10:44:14 I'm thinking of putting the workflow in the master or in magnum 10:45:07 And btw is draining the node the only roght way to do this? Are there issues behind upgrading in-place? 10:45:17 downtime? 10:45:26 in-place there is no such problem 10:46:04 yes, but the workflow you consider is about draining and rebuilding the nodes 10:46:08 but it means, the OS must support upgrades in place and if you have upgraded a few times 10:46:15 can you remind me the limition of in-place upgrade? 10:46:17 thinks will go wrong 10:46:39 s/thinks/things/ 10:47:10 1. GKE and cluster-api are not doing in-place 10:47:33 2. upgrading a OS in-place is not an atomic operation 10:48:28 rebuild works even in ironic 10:49:09 the suggested way from lifecycle sig is replace 10:49:25 only master nodes in-place 10:50:14 sry, I'm back 10:50:38 flwang1: sfilatov_ thoughts? 10:50:54 I don't see the history since I reconnected 10:51:20 < flwang1> can you remind me the limition of in-place upgrade? 10:51:20 strigazi: could copy and paste it pls 10:51:23 strigazi: fair enough 10:51:27 1. GKE and cluster-api are not doing in-place 10:51:31 2. upgrading a OS in-place is not an atomic operation 10:51:36 rebuild works even in ironic 10:51:40 the suggested way from lifecycle sig is replace 10:51:44 only master nodes in-place 10:52:33 with multimaster you can even replace masters one by one with no downtime 10:52:39 strigazi: what you mean by upgrading OS 10:53:09 kernel verionN to kernel versionN+1 10:53:24 ok, got it 10:53:40 have you ever upgraded docker? it is so nice 10:53:57 but mostly the kernel 10:54:06 strigazi: that's true 10:54:17 strigazi: are you considering rebuilding masters as well? 10:54:34 yes, with a param 10:54:35 strigazi: looks like we have more or less the same issues with this 10:55:26 strigazi: I agree then. I llooked through API in the upgrade patch 10:55:39 strigazi: and it seems we need nodegroups implemented 10:55:52 let's move this to gerrit then 10:55:57 ok 10:55:59 sfilatov_: about delete? 10:56:02 yes 10:56:04 what is the issue? 10:56:15 I mean, I know the issue 10:56:23 what is the solution(s) 10:56:29 I have almost prepared a patch with software deployments for deletions 10:56:50 with an on-delete SD? 10:56:54 yes 10:56:56 push 10:57:06 I'd like to discuss 2 issues 10:57:12 shoot :) 10:57:23 We still need to wait for LB in neutron 10:57:41 since cloud provider does not support waiting for LB delettion 10:57:51 we can't wait using kubectl 10:58:11 hmm, that is not nice 10:58:29 flwang1: maybe kong has some input for this? 10:58:30 how do you wait for LB in neutron? 10:58:41 you ask the api I imagine 10:58:43 you get the LB with the name 10:58:46 yes 10:58:59 since you know LB name = 'a' + k8s svc id 10:59:09 but it's not really nice 10:59:13 and polling neutron api to see if it's still there? 10:59:20 yep 10:59:24 hmm... 10:59:44 we can fix this via cloud provider 10:59:53 1. must be solved in the cloud-provider 11:00:01 2. polling as a work around 11:00:10 got it 11:00:12 lgty? 11:00:15 flwang1: ^^ 11:00:24 i'm ok with that 11:00:24 the other issue 11:00:35 what if the user stopped vms 11:00:42 basically - shutdown 11:00:48 I have faces the issue 11:00:59 why? I dont get it 11:01:01 and there is nothing I can do about it 11:01:11 vms are shutdown 11:01:18 and k8s api is not available 11:01:37 so when delete is triggered we can delete the resources 11:01:44 can't * 11:02:32 hmm... i'm wondering if magnum should take care such a corner case 11:02:34 there is no solution for this 11:02:43 only what flwang1 said 11:03:00 if we do it for the corner case though 11:03:14 for this case, user need open a support ticket to ops 11:03:20 and get it removed :D 11:03:32 or he can remove it manually 11:03:38 to avoid magnum ops too boring 11:03:51 there's a way 11:03:57 to solve all the issues 11:04:10 i even don't think magnum should just bravely delete a cluster and everything on the cluster 11:04:20 if we add cluster_id to lb metadata 11:04:40 sfilatov_: Lingxian kong is working on that 11:04:41 and then? 11:04:45 and delete lb based on their metadata 11:05:02 in this case we don't need to access k8s API 11:05:05 that's the current solution 11:05:28 is there anything stopping us from doing this now? 11:05:40 we need to patch cloud provider 11:06:40 flwang1: Lingxian's patch is not in? 11:06:58 https://github.com/kubernetes/cloud-provider-openstack/pull/223 11:07:31 they're just putting the cluster name in lb description 11:07:41 so we're ok to go with current way i think 11:08:02 so there's no need for my patch? 11:08:10 i guess so? 11:08:15 with software deployment 11:08:16 if you're happy with this way 11:08:18 we still need a patch 11:08:25 in magnum 11:08:51 i can propose a new patch set on this https://review.openstack.org/#/c/497144/ 11:09:04 to check the cluster name 11:09:11 then we should be ok 11:09:22 uuid is better I guess 11:10:00 strigazi: i think so, there is probably limition, i will check with CPO team 11:10:07 folks anything else? we are 10mins late and I'm 10 mins late for another meeting 11:10:16 flwang1: it accepts a string 11:10:21 good for me 11:10:24 flwang1: it can be anything 11:10:42 i mean CPO maybe hard to get the UUID of magnum's cluster 11:11:26 flwang1: it looks like a generic parameter to me, let's see 11:11:27 unless we pass it to somewhere so that CPO can easily get it, just my guess 11:11:36 need to check with the author 11:11:42 cool 11:11:56 sfilatov_: anything else? 11:12:42 strigazi: i think you're good to go ;) 11:12:47 let's wrap this then 11:12:54 thanks flwang1 sfilatov_ and brtknr 11:12:55 #endmeeting