2017-10-29 09:45:21 +00:00
|
|
|
package services
|
|
|
|
|
|
|
|
import (
|
|
|
|
"fmt"
|
2017-10-31 13:55:35 +00:00
|
|
|
"net"
|
2017-10-29 09:45:21 +00:00
|
|
|
)
|
|
|
|
|
|
|
|
const (
|
2017-10-31 13:55:35 +00:00
|
|
|
ETCDRole = "etcd"
|
|
|
|
ControlRole = "controlplane"
|
|
|
|
WorkerRole = "worker"
|
|
|
|
|
2017-10-29 09:45:21 +00:00
|
|
|
KubeAPIContainerName = "kube-api"
|
|
|
|
KubeletContainerName = "kubelet"
|
|
|
|
KubeproxyContainerName = "kube-proxy"
|
|
|
|
KubeControllerContainerName = "kube-controller"
|
|
|
|
SchedulerContainerName = "scheduler"
|
|
|
|
EtcdContainerName = "etcd"
|
|
|
|
)
|
|
|
|
|
2017-10-31 13:55:35 +00:00
|
|
|
func GetKubernetesServiceIp(serviceClusterRange string) (net.IP, error) {
|
|
|
|
ip, ipnet, err := net.ParseCIDR(serviceClusterRange)
|
2017-10-29 09:45:21 +00:00
|
|
|
if err != nil {
|
2017-10-31 13:55:35 +00:00
|
|
|
return nil, fmt.Errorf("Failed to get kubernetes service IP: %v", err)
|
2017-10-29 09:45:21 +00:00
|
|
|
}
|
2017-10-31 13:55:35 +00:00
|
|
|
ip = ip.Mask(ipnet.Mask)
|
|
|
|
for j := len(ip) - 1; j >= 0; j-- {
|
|
|
|
ip[j]++
|
|
|
|
if ip[j] > 0 {
|
|
|
|
break
|
2017-10-29 09:45:21 +00:00
|
|
|
}
|
|
|
|
}
|
2017-10-31 13:55:35 +00:00
|
|
|
return ip, nil
|
2017-10-29 09:45:21 +00:00
|
|
|
}
|