stratos-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From Gayan Gunarathne <gay...@wso2.com>
Subject Re: Releasing Stratos 4.1.3
Date Mon, 21 Sep 2015 06:06:45 GMT
Based on the offline chat with Imesh,Akila, Reka , we decided to maintain
the  map of KubernetesService in a ClusterContext against the cluster
instance id.

Then we can pick the Kubernetes services based on the cluster instance id.

Thanks,
Gayan

On Mon, Sep 21, 2015 at 10:42 AM, Gayan Gunarathne <gayang@wso2.com> wrote:

> We are maintaining the accessURL in the cluster. In the multi-region
> deployment it is same cluster.IMO we need to maintain the accessURL in
> Kubernetes Service.
>
> Thanks,
> Gayan
>
> On Mon, Sep 21, 2015 at 1:07 AM, Imesh Gunaratne <imesh@apache.org> wrote:
>
>> I found another problem when running on multiple network partitions;
>> access URLs shown in the topology view are the same for both application
>> instances:
>>
>>
>>
>> ​
>> ​
>>
>>
>>
>> On Mon, Sep 21, 2015 at 1:04 AM, Imesh Gunaratne <imesh@apache.org>
>> wrote:
>>
>>> Labels are now shown as below:
>>>
>>>
>>> ​
>>>
>>> ​
>>>
>>> On Mon, Sep 21, 2015 at 12:57 AM, Gayan Gunarathne <gayang@wso2.com>
>>> wrote:
>>>
>>>> Seems there is a  commit missing when merging the changes.
>>>>
>>>> Setting the setKubernetesClusterId when creating the Kubenetes service
>>>>
>>>> Now I will add that commit.
>>>>
>>>> Thanks,
>>>> Gayan
>>>>
>>>> On Mon, Sep 21, 2015 at 12:35 AM, Akila Ravihansa Perera <
>>>> ravihansa@wso2.com> wrote:
>>>>
>>>>> Great!
>>>>>
>>>>> I think I found the problem with K8s services not getting cleaned up.
>>>>> I see a NPE at removeKubernetesServices(KubernetesIaas.java:1025) when
>>>>> undeploying an application.
>>>>>
>>>>> [2015-09-21 00:31:16,750] ERROR
>>>>> {org.apache.stratos.messaging.message.receiver.cluster.status.ClusterStatusEventMessageDelegator}
>>>>> -  Failed to retrieve cluster status event message
>>>>> java.lang.NullPointerException
>>>>> at
>>>>> org.apache.stratos.cloud.controller.iaases.kubernetes.KubernetesIaas.removeKubernetesServices(KubernetesIaas.java:1025)
>>>>> at
>>>>> org.apache.stratos.cloud.controller.messaging.topology.TopologyBuilder.handleClusterTerminatingEvent(TopologyBuilder.java:1068)
>>>>> at
>>>>> org.apache.stratos.cloud.controller.messaging.receiver.cluster.status.ClusterStatusTopicReceiver$5.onEvent(ClusterStatusTopicReceiver.java:86)
>>>>> at
>>>>> org.apache.stratos.messaging.listener.EventListener.update(EventListener.java:42)
>>>>> at java.util.Observable.notifyObservers(Observable.java:159)
>>>>> at
>>>>> org.apache.stratos.messaging.event.EventObservable.notifyEventListeners(EventObservable.java:51)
>>>>> at
>>>>> org.apache.stratos.messaging.message.processor.cluster.status.ClusterStatusClusterTerminatingMessageProcessor.process(ClusterStatusClusterTerminatingMessageProcessor.java:48)
>>>>> at
>>>>> org.apache.stratos.messaging.message.processor.cluster.status.ClusterStatusClusterTerminatedMessageProcessor.process(ClusterStatusClusterTerminatedMessageProcessor.java:55)
>>>>> at
>>>>> org.apache.stratos.messaging.message.processor.cluster.status.ClusterStatusClusterInactivateMessageProcessor.process(ClusterStatusClusterInactivateMessageProcessor.java:52)
>>>>> at
>>>>> org.apache.stratos.messaging.message.processor.cluster.status.ClusterStatusClusterActivatedMessageProcessor.process(ClusterStatusClusterActivatedMessageProcessor.java:52)
>>>>> at
>>>>> org.apache.stratos.messaging.message.processor.cluster.status.ClusterStatusClusterResetMessageProcessor.process(ClusterStatusClusterResetMessageProcessor.java:52)
>>>>> at
>>>>> org.apache.stratos.messaging.message.processor.MessageProcessorChain.process(MessageProcessorChain.java:61)
>>>>> at
>>>>> org.apache.stratos.messaging.message.receiver.cluster.status.ClusterStatusEventMessageDelegator.run(ClusterStatusEventMessageDelegator.java:71)
>>>>> at
>>>>> java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1145)
>>>>> at
>>>>> java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:615)
>>>>> at java.lang.Thread.run(Thread.java:745)
>>>>>
>>>>>
>>>>>
>>>>>
>>>>> On Mon, Sep 21, 2015 at 12:30 AM, Imesh Gunaratne <imesh@apache.org>
>>>>> wrote:
>>>>>
>>>>>> I have now refined this logic to trim all labels to 62 characters
and
>>>>>> added following as labels:
>>>>>>
>>>>>> Pod: Application-ID, Cluster-Instance-ID, Member-ID
>>>>>> Service: Application-ID, Cluster-ID, Port-Name
>>>>>>
>>>>>> Now I'm seeing a different problem. When an application is
>>>>>> un-deployed, services do not get deleted. We need to fix this.
>>>>>>
>>>>>> Thanks
>>>>>>
>>>>>> On Mon, Sep 21, 2015 at 12:12 AM, Gayan Gunarathne <gayang@wso2.com>
>>>>>> wrote:
>>>>>>
>>>>>>> Hi Akila,
>>>>>>>
>>>>>>> On Sun, Sep 20, 2015 at 11:30 PM, Akila Ravihansa Perera <
>>>>>>> ravihansa@wso2.com> wrote:
>>>>>>>
>>>>>>>> Hi Gayan,
>>>>>>>>
>>>>>>>> +1 for properly identifying attributes to be used for labels
and
>>>>>>>> annotations. As I mentioned earlier I tried to use them as
labels but ran
>>>>>>>> into length limitation issues.
>>>>>>>>
>>>>>>>> memberId and clusterId cannot be used directly since they
are
>>>>>>>> generated as follows;
>>>>>>>>
>>>>>>>> memberId = clusterId + UUID
>>>>>>>> clusterId = applicationId + "." + alias + "." + cartridgeType
+
>>>>>>>> ".domain"
>>>>>>>>
>>>>>>>> As you can see those can go be beyond 63 characters since
we don't
>>>>>>>> have a limitation for applicationId length. I'm -1 on imposing
a character
>>>>>>>> limitation to applicationId only to get away with Kubernetes
restriction.
>>>>>>>> What if some other provider comes out with a different limitation?
It
>>>>>>>> should be restricted but only for good reasons concerning
to Stratos.
>>>>>>>>
>>>>>>>
>>>>>>> Right. Let's say we are not going to restrict the application
id
>>>>>>> length. So in that case we won't be able to use the application
id as a pod
>>>>>>> label.
>>>>>>> IMO we used application id to identify the application. As it
is a
>>>>>>> identifier I think it is OK to have a restriction.I think using
a
>>>>>>> description for the application id is not practical.Also in most
of the use
>>>>>>> cases identifiers comes up with some length restrictions.If we
don't have a
>>>>>>> restriction on application id , users can enter description sort
of a
>>>>>>> application id.
>>>>>>>
>>>>>>>
>>>>>>>>
>>>>>>>> I had an offline chat with Imesh and we were discussing about
>>>>>>>> implementing a sequence number based approach for generating
clusterId and
>>>>>>>> memberId without using UUIDs. Any thoughts?
>>>>>>>>
>>>>>>>
>>>>>>>  I am also +1 for this thinking. So how we are going to generate
the
>>>>>>> cluster id? I think we need to generate the meaningful ids.
>>>>>>>
>>>>>>>
>>>>>>>>
>>>>>>>> Thanks.
>>>>>>>>
>>>>>>>>
>>>>>>>>
>>>>>>>> Thanks,
>>>>>>> Gayan
>>>>>>>
>>>>>>>>
>>>>>>>>
>>>>>>>> On Sun, Sep 20, 2015 at 10:55 PM, Gayan Gunarathne <gayang@wso2.com
>>>>>>>> > wrote:
>>>>>>>>
>>>>>>>>> As per Kubernetes definition I think we are using labels
and
>>>>>>>>> annotation in a wrong way.As annotations are arbitrary
non-identifying
>>>>>>>>> metadata , they might not shown them in their UI/CLI
>>>>>>>>>
>>>>>>>>> I think first we need to recognize what are the identifiers
for
>>>>>>>>> the pod.In think we may need to use member id , application
id
>>>>>>>>>
>>>>>>>>> Also what is the ration behind of using the md5Hex of
the member
>>>>>>>>> id as a identifier. IMO we can directly use the member
id. As member id is
>>>>>>>>> UUID it won't be more than 63 characters.
>>>>>>>>>
>>>>>>>>> Thanks,
>>>>>>>>> Gayan
>>>>>>>>>
>>>>>>>>> On Sun, Sep 20, 2015 at 10:13 PM, Imesh Gunaratne <
>>>>>>>>> imesh@apache.org> wrote:
>>>>>>>>>
>>>>>>>>>> Hi Akila,
>>>>>>>>>>
>>>>>>>>>> Right, I get your point on the length limitation,
but this is how
>>>>>>>>>> Kubernetes has described Labels and Annotations:
>>>>>>>>>>
>>>>>>>>>> *We'll eventually index and reverse-index labels
for efficient
>>>>>>>>>> queries and watches, use them to sort and group in
UIs and CLIs, etc. We
>>>>>>>>>> don't want to pollute labels with non-identifying,
especially large and/or
>>>>>>>>>> structured, data. Non-identifying information should
be recorded using
>>>>>>>>>> annotations.*
>>>>>>>>>>
>>>>>>>>>> The idea is to use labels for all identifiers.
>>>>>>>>>>
>>>>>>>>>> http://kubernetes.io/v1.0/docs/user-guide/labels.html
>>>>>>>>>>
>>>>>>>>>> On Sun, Sep 20, 2015 at 10:05 PM, Akila Ravihansa
Perera <
>>>>>>>>>> ravihansa@wso2.com> wrote:
>>>>>>>>>>
>>>>>>>>>>> Hi Imesh,
>>>>>>>>>>>
>>>>>>>>>>> Yes, I tried adding them as labels but ran into
a problem since
>>>>>>>>>>> label length cannot be greater than 63 characters.
I'm not sure why we
>>>>>>>>>>> don't see annotations in the UI for pods created.
But I can see the
>>>>>>>>>>> annotations added for services. Might have to
raise this in K8s mailing
>>>>>>>>>>> list.
>>>>>>>>>>>
>>>>>>>>>>> Thanks.
>>>>>>>>>>>
>>>>>>>>>>> On Sun, Sep 20, 2015 at 10:00 PM, Imesh Gunaratne
<
>>>>>>>>>>> imesh@apache.org> wrote:
>>>>>>>>>>>
>>>>>>>>>>>> Hi Akila,
>>>>>>>>>>>>
>>>>>>>>>>>> We do not query pod labels, its handled by
the Kubernetes
>>>>>>>>>>>> service selector, at the moment this is called
"name". I have now fixed
>>>>>>>>>>>> this issue locally, will push in few minutes.
>>>>>>>>>>>>
>>>>>>>>>>>> In addition I think it would be better to
use labels instead of
>>>>>>>>>>>> annotations because they are not visible
in the UI:
>>>>>>>>>>>>
>>>>>>>>>>>>
>>>>>>>>>>>>
>>>>>>>>>>>> Thanks
>>>>>>>>>>>>
>>>>>>>>>>>> On Sun, Sep 20, 2015 at 9:52 PM, Akila Ravihansa
Perera <
>>>>>>>>>>>> ravihansa@wso2.com> wrote:
>>>>>>>>>>>>
>>>>>>>>>>>>> Hi Imesh,
>>>>>>>>>>>>>
>>>>>>>>>>>>> Where do we query those pod labels?
>>>>>>>>>>>>>
>>>>>>>>>>>>> I'm in the process of moving label names
to constants. I can
>>>>>>>>>>>>> apply the same in all the places. I think
better to change that label to
>>>>>>>>>>>>> md5Hex-memberId to avoid any confusion
when troubleshooting issues. One
>>>>>>>>>>>>> might mistakenly take that as the actual
memberId when it is not the case.
>>>>>>>>>>>>>
>>>>>>>>>>>>> Thanks.
>>>>>>>>>>>>>
>>>>>>>>>>>>> On Sun, Sep 20, 2015 at 9:40 PM, Imesh
Gunaratne <
>>>>>>>>>>>>> imesh@apache.org> wrote:
>>>>>>>>>>>>>
>>>>>>>>>>>>>> I'm seeing a problem, we have removed
the "name" label in the
>>>>>>>>>>>>>> pod and added a new label called
"md5Hex-memberId". Due to this load
>>>>>>>>>>>>>> balancing would not work:
>>>>>>>>>>>>>>
>>>>>>>>>>>>>> Map<String, String> podLabels
= new HashMap<>();
>>>>>>>>>>>>>> podLabels.put("md5Hex-memberId",
DigestUtils.md5Hex(memberContext.getMemberId()));
>>>>>>>>>>>>>>
>>>>>>>>>>>>>> Map<String, String> podAnnotations
= new HashMap<>();
>>>>>>>>>>>>>> podAnnotations.put("memberId", memberContext.getMemberId());
>>>>>>>>>>>>>> podAnnotations.put("cartridgeType",
memberContext.getCartridgeType());
>>>>>>>>>>>>>> podAnnotations.put("applicationId",
memberContext.getApplicationId());
>>>>>>>>>>>>>> podAnnotations.put("clusterId", memberContext.getClusterId());
>>>>>>>>>>>>>> podAnnotations.put("clusterInstanceId",
memberContext.getClusterInstanceId());
>>>>>>>>>>>>>>
>>>>>>>>>>>>>> kubernetesApi.createPod(podId, podName,
podLabels, podAnnotations, dockerImage, cpu, memory, ports,
>>>>>>>>>>>>>>         environmentVariables);
>>>>>>>>>>>>>>
>>>>>>>>>>>>>>
>>>>>>>>>>>>>> On Sun, Sep 20, 2015 at 2:51 PM,
Akila Ravihansa Perera <
>>>>>>>>>>>>>> ravihansa@wso2.com> wrote:
>>>>>>>>>>>>>>
>>>>>>>>>>>>>>> Hi all,
>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>> I've pushed release artifacts
to staging repo at [1]. Please
>>>>>>>>>>>>>>> take few mins to verify the release.
Also I've pushed cartridge-base, php
>>>>>>>>>>>>>>> and tomcat Docker images with
4.1.3 artifacts to DockerHub.
>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>> [1]
>>>>>>>>>>>>>>> https://repository.apache.org/content/repositories/orgapachestratos-1057/
>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>> Thanks.
>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>> --
>>>>>>>>>>>>>>> Akila Ravihansa Perera
>>>>>>>>>>>>>>> WSO2 Inc.;  http://wso2.com/
>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>> Blog: http://ravihansa3000.blogspot.com
>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>
>>>>>>>>>>>>>>
>>>>>>>>>>>>>>
>>>>>>>>>>>>>> --
>>>>>>>>>>>>>> Imesh Gunaratne
>>>>>>>>>>>>>>
>>>>>>>>>>>>>> Senior Technical Lead, WSO2
>>>>>>>>>>>>>> Committer & PMC Member, Apache
Stratos
>>>>>>>>>>>>>>
>>>>>>>>>>>>>
>>>>>>>>>>>>>
>>>>>>>>>>>>>
>>>>>>>>>>>>> --
>>>>>>>>>>>>> Akila Ravihansa Perera
>>>>>>>>>>>>> WSO2 Inc.;  http://wso2.com/
>>>>>>>>>>>>>
>>>>>>>>>>>>> Blog: http://ravihansa3000.blogspot.com
>>>>>>>>>>>>>
>>>>>>>>>>>>
>>>>>>>>>>>>
>>>>>>>>>>>>
>>>>>>>>>>>> --
>>>>>>>>>>>> Imesh Gunaratne
>>>>>>>>>>>>
>>>>>>>>>>>> Senior Technical Lead, WSO2
>>>>>>>>>>>> Committer & PMC Member, Apache Stratos
>>>>>>>>>>>>
>>>>>>>>>>>
>>>>>>>>>>>
>>>>>>>>>>>
>>>>>>>>>>> --
>>>>>>>>>>> Akila Ravihansa Perera
>>>>>>>>>>> WSO2 Inc.;  http://wso2.com/
>>>>>>>>>>>
>>>>>>>>>>> Blog: http://ravihansa3000.blogspot.com
>>>>>>>>>>>
>>>>>>>>>>
>>>>>>>>>>
>>>>>>>>>>
>>>>>>>>>> --
>>>>>>>>>> Imesh Gunaratne
>>>>>>>>>>
>>>>>>>>>> Senior Technical Lead, WSO2
>>>>>>>>>> Committer & PMC Member, Apache Stratos
>>>>>>>>>>
>>>>>>>>>
>>>>>>>>>
>>>>>>>>>
>>>>>>>>> --
>>>>>>>>>
>>>>>>>>> Gayan Gunarathne
>>>>>>>>> Technical Lead, WSO2 Inc. (http://wso2.com)
>>>>>>>>> Committer & PMC Member, Apache Stratos
>>>>>>>>> email : gayang@wso2.com  | mobile : +94 775030545
>>>>>>>>> <%2B94%20766819985>
>>>>>>>>>
>>>>>>>>>
>>>>>>>>>
>>>>>>>>
>>>>>>>>
>>>>>>>>
>>>>>>>> --
>>>>>>>> Akila Ravihansa Perera
>>>>>>>> WSO2 Inc.;  http://wso2.com/
>>>>>>>>
>>>>>>>> Blog: http://ravihansa3000.blogspot.com
>>>>>>>>
>>>>>>>
>>>>>>>
>>>>>>>
>>>>>>> --
>>>>>>>
>>>>>>> Gayan Gunarathne
>>>>>>> Technical Lead, WSO2 Inc. (http://wso2.com)
>>>>>>> Committer & PMC Member, Apache Stratos
>>>>>>> email : gayang@wso2.com  | mobile : +94 775030545
>>>>>>> <%2B94%20766819985>
>>>>>>>
>>>>>>>
>>>>>>>
>>>>>>
>>>>>>
>>>>>>
>>>>>> --
>>>>>> Imesh Gunaratne
>>>>>>
>>>>>> Senior Technical Lead, WSO2
>>>>>> Committer & PMC Member, Apache Stratos
>>>>>>
>>>>>
>>>>>
>>>>>
>>>>> --
>>>>> Akila Ravihansa Perera
>>>>> WSO2 Inc.;  http://wso2.com/
>>>>>
>>>>> Blog: http://ravihansa3000.blogspot.com
>>>>>
>>>>
>>>>
>>>>
>>>> --
>>>>
>>>> Gayan Gunarathne
>>>> Technical Lead, WSO2 Inc. (http://wso2.com)
>>>> Committer & PMC Member, Apache Stratos
>>>> email : gayang@wso2.com  | mobile : +94 775030545 <%2B94%20766819985>
>>>>
>>>>
>>>>
>>>
>>>
>>>
>>> --
>>> Imesh Gunaratne
>>>
>>> Senior Technical Lead, WSO2
>>> Committer & PMC Member, Apache Stratos
>>>
>>
>>
>>
>> --
>> Imesh Gunaratne
>>
>> Senior Technical Lead, WSO2
>> Committer & PMC Member, Apache Stratos
>>
>
>
>
> --
>
> Gayan Gunarathne
> Technical Lead, WSO2 Inc. (http://wso2.com)
> Committer & PMC Member, Apache Stratos
> email : gayang@wso2.com  | mobile : +94 775030545 <%2B94%20766819985>
>
>
>



-- 

Gayan Gunarathne
Technical Lead, WSO2 Inc. (http://wso2.com)
Committer & PMC Member, Apache Stratos
email : gayang@wso2.com  | mobile : +94 775030545 <%2B94%20766819985>

Mime
View raw message