kubernetes1.5.2--部署DNS服务

本文基于kubernetes 1.5.2版本编写

在kubernetes1.2之前,采用skydns+kube2dns+etcd的方式来部署dns。而从1.3开始,则部署方式有了一点儿变化,将skydns和kube2dns封装到了一个容器镜像中,放弃了etcd,而将dns解析直接放入到了内存之中,同时引入了dnsmasq,进一步利用其缓存。

使用DaemonSet方式部署,在每台宿主机上均有一个DNS服务。

使用http方式访问api server

cat skydns-rc.yaml
apiVersion: extensions/v1beta1
kind: DaemonSet
metadata:
  name: kube-dns
  namespace: kube-system
  labels:
    k8s-app: kube-dns
    kubernetes.io/cluster-service: "true"
spec:
  template:
    metadata:
      labels:
        k8s-app: kube-dns
      annotations:
        scheduler.alpha.kubernetes.io/critical-pod: ''
        scheduler.alpha.kubernetes.io/tolerations: '[{"key":"CriticalAddonsOnly", "operator":"Exists"}]'
    spec:
      containers:
      - name: kubedns
        image: docker.io/googlecontainer/kubedns-amd64:1.9
        imagePullPolicy: IfNotPresent
        resources:
          limits:
            memory: 170Mi
          requests:
            cpu: 100m
            memory: 70Mi
        livenessProbe:
          httpGet:
            path: /healthz-kubedns
            port: 8080
            scheme: HTTP
          initialDelaySeconds: 60
          timeoutSeconds: 5
          successThreshold: 1
          failureThreshold: 5
        readinessProbe:
          httpGet:
            path: /readiness
            port: 8081
            scheme: HTTP
          initialDelaySeconds: 3
          timeoutSeconds: 5
        args:
        - --domain=lykops.net.
        #域名
        - --dns-port=10053
        - --config-map=kube-dns
        - --kube-master-url=http://192.168.20.128:8080
        - --v=0
        env:
        - name: PROMETHEUS_PORT
          value: "10055"
        ports:
        - containerPort: 10053
          name: dns-local
          protocol: UDP
        - containerPort: 10053
          name: dns-tcp-local
          protocol: TCP
        - containerPort: 10055
          name: metrics
          protocol: TCP
      - name: dnsmasq
        image: docker.io/googlecontainer/kube-dnsmasq-amd64:1.4.1
        imagePullPolicy: IfNotPresent
        livenessProbe:
          httpGet:
            path: /healthz-dnsmasq
            port: 8080
            scheme: HTTP
          initialDelaySeconds: 60
          timeoutSeconds: 5
          successThreshold: 1
          failureThreshold: 5
        args:
        - --cache-size=1000
        - --no-resolv
        - --server=127.0.0.1#10053
        ports:
        - containerPort: 53
          name: dns
          protocol: UDP
        - containerPort: 53
          name: dns-tcp
          protocol: TCP
        resources:
          requests:
            cpu: 150m
            memory: 10Mi
      - name: dnsmasq-metrics
        image:  docker.io/googlecontainer/dnsmasq-metrics-amd64:1.0.1
        imagePullPolicy: IfNotPresent
        livenessProbe:
          httpGet:
            path: /metrics
            port: 10054
            scheme: HTTP
          initialDelaySeconds: 60
          timeoutSeconds: 5
          successThreshold: 1
          failureThreshold: 5
        args:
        - --v=2
        - --logtostderr
        ports:
        - containerPort: 10054
          name: metrics
          protocol: TCP
        resources:
          requests:
            memory: 10Mi
      - name: healthz
        image: docker.io/googlecontainer/exechealthz-amd64:1.2
        imagePullPolicy: IfNotPresent
        resources:
          limits:
            memory: 50Mi
          requests:
            cpu: 10m
            memory: 50Mi
        args:
        - --cmd=nslookup kubernetes.default.svc.lykops.net 127.0.0.1 >/dev/null
        - --url=/healthz-dnsmasq
        - --cmd=nslookup kubernetes.default.svc.lykops.net 127.0.0.1:10053 >/dev/null
        - --url=/healthz-kubedns
        - --port=8080
        - --quiet
        ports:
        - containerPort: 8080
          protocol: TCP
      dnsPolicy: Default

kubectl create -f skydns-rc.yaml 

使用https方式访问apiserver接口

cat skydns-rc.yaml
......
        args:
        - --domain=lykops.net.
        - --dns-port=10053
        - --config-map=kube-dns
        - --kube-master-url=https://192.168.20.128:6443
        #这里修改为https
        - --kubecfg-file=/etc/kubernetes/kubelet-config
        #添加认证信息配置文件
        - --v=0
        #挂载认证需要的信息配置文件和证书
        volumeMounts:
        - name: config
          mountPath: /etc/kubernetes/kubelet-config
          readOnly: True
        - name: certs
          mountPath: /etc/ssl/kube
          readOnly: True
        env:
        - name: PROMETHEUS_PORT
          value: "10055"
      .......
      #挂载宿主机的信息配置文件和证书
      volumes:
      - name: certs
        hostPath:
          path: /etc/ssl/kube
      - name: config
        hostPath:
          path: /etc/kubernetes/kubelet-config
      dnsPolicy: Default

kubectl create -f skydns-rc.yaml

配置service

cat skydns-svc.yaml
apiVersion: v1
kind: Service
metadata:
  name: kube-dns
  namespace: kube-system
  labels:
    k8s-app: kube-dns
    kubernetes.io/cluster-service: "true"
    kubernetes.io/name: "KubeDNS"
spec:
  selector:
    k8s-app: kube-dns
  clusterIP: 172.17.114.114
  #固定IP地址
  ports:
  - name: dns
    port: 53
    protocol: UDP
  - name: dns-tcp
    port: 53
protocol: TCP

kubectl create -f skydns-svc.yaml

配置kubelet--实现服务发现

等待服务部署完成,在集群宿主机上执行telnet 172.17.114.114 53,能通表示部署完成

在客户端上执行修改/etc/kubernetes/kubelet

KUBELET_ARGS="--cluster-domain=lykops.net --cluster_dns=172.17.114.114"

重启服务

service kubelet restart

CUDA Runtime API是一组用于访问和控制CUDA设备的函数和数据结构的库。CUDA是一种并行计算平台和编程模型,它可以提高计算密集型应用程序的性能。CUDA Runtime API提供了访问设备内存、执行并行计算、管理设备状态和连接多个GPU的功能。 版本1.5.2是CUDA Runtime API的一个特定版本,它包含了一些更新和改进。这些更新可能包括性能优化、新的功能特性和错误修复。用户可以根据他们的需求和硬件环境选择使用特定的版本。 当使用CUDA Runtime API进行并行计算时,可以使用多线程的方式同时处理大量数据。这种并行计算方式可以利用GPU在处理大规模数据集上的优势,加快计算速度。CUDA Runtime API提供了一系列的函数,如cudaMalloc()和cudaMemcpy(),用于在主机和设备之间分配和传输内存数据。它还提供了函数如cudaDeviceSynchronize(),用于同步设备上的并行计算任务。 CUDA Runtime API-1.5.2-parallel 的具体含义可能是指在这个版本中加强了并行计算能力。这可能包括了更好的线程管理、更高效的内存传输、更强大的GPU任务调度等方面的优化。这些改进可以帮助开发人员更好地利用CUDA设备并行计算的能力,提升应用程序的性能。 总之,CUDA Runtime API是一组用于访问和控制CUDA设备的函数和数据结构的库,版本1.5.2可能是指具有一些更新和改进的特定版本。通过使用CUDA Runtime API,开发人员可以利用GPU的并行计算能力,加快计算密集型应用程序的运行速度。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值