private void updateRemoteInstances(Pod pod, EventType event) {
        try {
            initHealthChecker();
            if (StringUtil.isNotBlank(pod.getStatus().getPodIP())) {
                if (port == -1) {
                    port = manager.find(CoreModule.NAME).provider().getService(ConfigService.class).getGRPCPort();
                }

                RemoteInstance remoteInstance = new RemoteInstance(
                    new Address(pod.getStatus().getPodIP(), this.port, pod.getMetadata().getUid().equals(uid)));
                switch (event) {
                    case ADDED:
                    case MODIFIED:
                        if ("Running".equalsIgnoreCase(pod.getStatus().getPhase())) {
                            remoteInstanceMap.put(remoteInstance.getAddress().toString(), remoteInstance);
                        } else if ("Terminating".equalsIgnoreCase(pod.getStatus().getPhase())) {
                            remoteInstanceMap.remove(remoteInstance.getAddress().toString());
                        }
                        break;
                    case DELETED:
                        this.remoteInstanceMap.remove(remoteInstance.getAddress().toString());
                        break;
                    default:
                        return;
                }
                updateRemoteInstances();
            }
        } catch (Throwable e) {
            healthChecker.unHealth(e);
            log.error("Failed to notify RemoteInstances update.", e);
        }
    }
When a remote instance up/off line, will receive multi event according to the pod status.
To avoid notify the watchers too frequency, here use a `remoteInstanceMap` to cache them.
Only notify watchers once when the instances changed.
oap-server/server-cluster-plugin/cluster-kubernetes-plugin/src/main/java/org/apache/skywalking/oap/server/cluster/plugin/kubernetes/KubernetesCoordinator.java