You are viewing a plain text version of this content. The canonical link for it is here.
Posted to user@mesos.apache.org by Marc Roos <M....@f1-outsourcing.eu> on 2019/06/02 16:27:54 UTC

RE: How should I pass the cni_args / ip, injecting lables #5592 not working

Hi Jie, Thanks for the help, I managed to create a mesos delegate 
plugin[0] that injects labels into cni args. And seems to work fine.

In some cases I would like to have multiple container networks attached 
to the task. How can I specify multiple networks using this syntax?

"ipAddress": { "networkName": "test-delegate", "labels": {"CNI_ARGS": 
"IP=192.168.122.176"} },

Or is there an option to parse labels with this syntax as well?

"networks": [ { "mode": "container", "name": "test-delegate" } ]

Is it correct that cni chains are not supported in mesos 1.7? I tried to 
ask this here [1] but never got an answer.

Thanks again.


[0]
https://github.com/f1-outsourcing/plugins/tree/hostrouteif/plugins/meta/mesos
[1]
https://www.mail-archive.com/user@mesos.apache.org/msg10295.html




-----Original Message-----
From: Jie Yu 
To: user
Subject: Re: How should I pass the cni_args / ip, injecting lables #5592 
not working

Mesos's port mapper CNI plugin uses delegate model. You can take a look

https://github.com/apache/mesos/tree/master/src/slave/containerizer/mesos/isolators/network/cni/plugins/port_mapper


You can check out the go sample CNI implementation if you prefer golang 
https://github.com/containernetworking/plugins/tree/master/plugins/sample


- Jie

On Fri, May 3, 2019 at 3:18 PM Marc Roos <M....@f1-outsourcing.eu> wrote:


	 
	Hmm, yes was already thinking of changing the source, but a wrapper 
is 
	indeed better. Anyone have already something like this lying 
around? So 
	I do not need to start from scratch :)
	
	
	
	
	-----Original Message-----
	From: Jie Yu 
	To: user
	Subject: Re: How should I pass the cni_args / ip, injecting lables 
#5592 
	not working
	
	ah. I think one workaround I can think of is to write a wrapper CNI 

	plugin that understand args."org.apache.mesos", and set "cni.ips" 
	properly for the macvtap plugin.
	
	
	This is a common pattern in CNI called delegation before CNI 
chaining 
	was proposed.
	
	- Jie
	
	On Fri, May 3, 2019 at 11:14 AM Marc Roos 
<M....@f1-outsourcing.eu> 
	wrote:
	
	
	
	
	         >      Yet the cni plugin is afaik not even looking at the 
 
	        args.'org.apache.mesos'.network_info configuration,
	         >      for the cni_args it looks e.g. at args.cni.ips (or 
an 
	environment 
	        variable)
	         >
	         >
	         >That depends on the CNI plugin you're using. CNI is a 
spec 
	between CO 
	        (container orchestration system
	         > like K8s, mesos, etc.) and NP (network providers like 
calico, 
	cisco, 
	        juniper, etc.).
	         >
	         >`args` field is the place where CO can inject CO specific 

	information. 
	        Some CNI plugin might use those CO
	         > specific information to perform some special operations. 

	Although I 
	        don't like it, this is just how the
	         > spec has evolved. The use of CNI_ARGS has been 
deprecated 
	
	
<https://github.com/containernetworking/cni/blob/master/CONVENTIONS.md#cni_args>
	         > in favor of using `args` field.
	         >
	         >
	         >      Or is it possible to reference in the cni network 
json 
	config 
	        files a key of args.'org.apache.mesos'.network_info?
	         >
	         >
	         >I don't really follow this. Can you state your use case?
	
	        Basically I want to assign a static ip via mesos/marathon. 
The only 
	way 
	        I can get this to work now is via
	         the cni network configuration something like this. But I 
do not 
	want to 
	        start creating a cni network
	         config file for every app.
	
	
	        {
	          "name": "test-macvtap",
	          "type": "macvtap",
	          "master": "eth1",
	          "hostrouteif": "macvtap1",
	          "ipam": {
	            "type": "host-local",
	            "subnet": "192.168.122.0/24",
	            "rangeStart": "192.168.122.171",
	            "rangeEnd": "192.168.122.179",
	            "routes": [ { "dst": "192.168.122.22/32", "gw": 
"0.0.0.0" },
	                        { "dst": "192.168.10.10/32", "gw": 
"0.0.0.0" },
	                        { "dst": "192.168.10.22/32", "gw": 
"0.0.0.0" }]
	          },
	          "dns": { "nameservers": ["192.168.10.10"] },
	          "args": {
	            "cni": { "ips": ["192.168.122.177"] }
	        }