首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >kubernetes在最后创建一个带有域的服务。

kubernetes在最后创建一个带有域的服务。
EN

Stack Overflow用户
提问于 2018-04-24 11:54:45
回答 2查看 6.5K关注 0票数 1

我使用kops在AWS中创建了一个八卦集群,这意味着我的集群名以k8s.local (要删除的clusters.test.k8s.local )结尾,直到我尝试创建一个部署,在这个部署的末尾需要一个域(api-manager.iot.test.co.nz)。

我知道,它没有被授权创建不存在于本正则表达式的需求中的吊舱:

代码语言:javascript
复制
'[a-z]([-a-z0-9]*[a-z0-9])?'

有什么办法我能做到吗?

我尝试在template->spec下添加主机名,但它有相同的限制( regex)。

这是我的部署YAML文件:

代码语言:javascript
复制
apiVersion: apps/v1beta1
kind: Deployment
metadata:
  labels:
  name: api-manager
spec:
  replicas: 1
  template:
    metadata:
      labels:
        app: api-manager
    spec:
      volumes:
       - name: api-manager-efs
         persistentVolumeClaim:
          claimName: pvc-apim
      containers:
      - image: api-manager:2.1.0
        name: api-manager.iot.test.co.nz
        ports:
        - name: porta 
          containerPort: 9763
        - name: portb
          containerPort: 9443         
        env:
        - name: SLEEP
          value: "30"

        volumeMounts:
        - name: api-manager-efs
          mountPath: /home/wso2carbon/wso2am-2.1.0/repository 
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2018-07-08 11:06:06

经过许多挣扎,这是我的解决方案:

https://kubernetes.io/blog/2017/04/configuring-private-dns-zones-upstream-nameservers-kubernetes/

1.)使用这个域配置创建一个dnsmasq,您必须附加一个集群IP,该集群IP必须在您使用的k8s集群的范围内。

这些是我为此创建的yaml文件:

代码语言:javascript
复制
apiVersion: v1
kind: ConfigMap
metadata:
  name: dnsmasq
  labels:
    app: dnsmasq
data:
  dnsmasq.conf: |+
    user=root
    #dnsmasq config, for a complete example, see:
    #  http://oss.segetech.com/intra/srv/dnsmasq.conf
    #log all dns queries
    log-queries
    #dont use hosts nameservers
    no-resolv
    #use google as default nameservers
    server=8.8.4.4
    server=8.8.8.8
    #serve all .company queries using a specific nameserver
    server=/company/10.0.0.1
    #explicitly define host-ip mappings
    address=/api-manager.iot.test.vector.co.nz/100.64.53.55

apiVersion: v1
kind: Service
metadata:
  labels:
    app: dnsmasq
  name: dnsstub
spec:
  type: "{{.Values.Service.serviceType}}"
  clusterIP: 100.68.140.187
  ports:
   - port: {{ .Values.Service.serviceports.port }}
     protocol: UDP
  selector:
    app: dnsmasq


---
apiVersion: apps/v1beta1
kind: Deployment
metadata:
  name: dnsmasq
spec:
  replicas: {{ .Values.Deployment.replicaCount }}
  template:
    metadata:
      labels:
        app: dnsmasq
    spec:
      containers:
      - name: dnsmasq
        image:  dnsmasq:1.0.2
        ports:
           - containerPort: {{ .Values.Deployment.ports.containerport }}
             protocol: UDP
        volumeMounts:
        - name: etc
          mountPath: /etc/dnsmasq.conf
          subPath: dnsmasq.conf
      imagePullSecrets:
        - name: mprestg-credentials
      volumes:
      - name: etc
        configMap:
          name: dnsmasq
      dnsPolicy: Default

2.)使用stubDomain创建一个kube配置映射:

代码语言:javascript
复制
apiVersion: v1
kind: ConfigMap
metadata:
  name: kube-dns
  namespace: kube-system
data:
  stubDomains: |
    {"iot.test.vector.co.nz": ["100.68.140.187"]}

3.)将我们在dns配置中定义的静态IP添加到out服务:

代码语言:javascript
复制
apiVersion: v1
kind: Service
metadata:
  name: api-manager
  labels:
    app: api-manager
    tier: apim
spec:
  ports:
  - port: 9763
    name: porta
    targetPort: 9763

  selector:
    app: api-manager
  type: LoadBalancer
  clusterIP: 100.64.53.55
票数 1
EN

Stack Overflow用户

发布于 2018-04-24 14:24:01

不,你不能通过设计来创建那种labels

从设计文档

rfc1035/rfc1123 label (DNS_LABEL):字母数字( as和0-9)字符串,最大长度为63个字符,除第一个或最后一个字符外,任何地方都允许“-”字符,适合用作域名中的主机名或段。

下面是当前的实现

代码语言:javascript
复制
const dns1035LabelFmt string = "[a-z]([-a-z0-9]*[a-z0-9])?"
const dns1035LabelErrMsg string = "a DNS-1035 label must consist of lower case alphanumeric characters or '-', start with an alphabetic character, and end with an alphanumeric character"
const DNS1035LabelMaxLength int = 63

var dns1035LabelRegexp = regexp.MustCompile("^" + dns1035LabelFmt + "$")

// IsDNS1035Label tests for a string that conforms to the definition of a label in
// DNS (RFC 1035).
func IsDNS1035Label(value string) []string {
    var errs []string
    if len(value) > DNS1035LabelMaxLength {
        errs = append(errs, MaxLenError(DNS1035LabelMaxLength))
    }
    if !dns1035LabelRegexp.MatchString(value) {
        errs = append(errs, RegexError(dns1035LabelErrMsg, dns1035LabelFmt,     "my-name", "abc-123"))
    }
    return errs
}
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/50001036

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档