原文出处:https://blog.csdn.net/weixin_34018202/article/details/86828299


简单示例


$ cat deploy.sh

export NAMENODE_HOST=${NAMENODE_HOST:-`hostname -I|awk '{print $1}'`}

export KUBE_CLUSTER_DNS_IP=${KUBE_CLUSTER_DNS_IP:-'10.96.0.10'}

export K8S_CLUSTER_DOMAIN=${K8S_CLUSTER_DOMAIN:-'cluster.k8s.local'}

export DOCKER_REGISTRY=${DOCKER_REGISTRY:-'10.190.144.32:5000'}

envsubst < /data/kube_dns.yaml 

cat /data/kube_dns.yaml

$ cat /data/kube_dns.yaml

#!/bin/bash

echo ${NAMENODE_HOST}

echo ${KUBE_CLUSTER_DNS_IP}

echo ${K8S_CLUSTER_DOMAIN}

echo ${DOCKER_REGISTRY}

执行结果

]# bash  deploy.sh 

#!/bin/bash

echo 192.168.19.139

echo 10.96.0.10

echo cluster.k8s.local

echo 10.190.144.32:5000

#!/bin/bash

echo ${NAMENODE_HOST}

echo ${KUBE_CLUSTER_DNS_IP}

echo ${K8S_CLUSTER_DOMAIN}

echo ${DOCKER_REGISTRY}

 

实战演练:


$ cat deploy.sh

export NAMENODE_HOST=${NAMENODE_HOST:-`hostname -I|awk '{print $1}'`}

export KUBE_CLUSTER_DNS_IP=${KUBE_CLUSTER_DNS_IP:-'10.96.0.10'}

export K8S_CLUSTER_DOMAIN=${K8S_CLUSTER_DOMAIN:-'cluster.k8s.local'}

export DOCKER_REGISTRY=${DOCKER_REGISTRY:-'10.190.144.32:5000'}

#envsubst < /data/kube_dns.yaml | kubectl create -f -

envsubst < /data/kube_dns.yaml 

cat /data/kube_dns.yaml

部分脚本内容


$ cat /data/kube_dns.yaml

kind: Service

metadata:

spec:

  selector:

    k8s-app: kube-dns

  clusterIP: $KUBE_CLUSTER_DNS_IP

   spec:

      containers:

      - name: kubedns

        image: ${DOCKER_REGISTRY}/k8s-dns-kube-dns-amd64:1.14.7

       readinessProbe:

          httpGet:

            path: /readiness

            port: 8081

            scheme: HTTP

          initialDelaySeconds: 3

          timeoutSeconds: 5

        args:

        - --domain=${K8S_CLUSTER_DOMAIN}.

       env:

       - name: AIDU_KUBERNETES_LOG_ENDPOINT

          value: ${NAMENODE_HOST}:8070

以上俩个脚本,deploy.sh脚本中定义了一些变量,需要替换kube_dns.yaml文件中写好的变量,然后执行。


执行结果

]# bash -xv deploy.sh 

export NAMENODE_HOST=${NAMENODE_HOST:-`hostname -I|awk '{print $1}'`}

hostname -I|awk '{print $1}'

++ awk '{print $1}'

++ hostname -I

+ export NAMENODE_HOST=192.168.19.139

+ NAMENODE_HOST=192.168.19.139

export KUBE_CLUSTER_DNS_IP=${KUBE_CLUSTER_DNS_IP:-'10.96.0.10'}

+ export KUBE_CLUSTER_DNS_IP=10.96.0.10

+ KUBE_CLUSTER_DNS_IP=10.96.0.10

export K8S_CLUSTER_DOMAIN=${K8S_CLUSTER_DOMAIN:-'cluster.k8s.local'}

+ export K8S_CLUSTER_DOMAIN=cluster.k8s.local

+ K8S_CLUSTER_DOMAIN=cluster.k8s.local

export DOCKER_REGISTRY=${DOCKER_REGISTRY:-'10.190.144.32:5000'}

+ export DOCKER_REGISTRY=10.190.144.32:5000

+ DOCKER_REGISTRY=10.190.144.32:5000

#envsubst < /data/kube_dns.yaml | kubectl create -f -

envsubst < /data/kube_dns.yaml 

+ envsubst

apiVersion: v1

kind: Service

metadata:

spec:

  selector:

    k8s-app: kube-dns

  clusterIP: 10.96.0.10

   spec:

      containers:

      - name: kubedns

        image: 10.190.144.32:5000/k8s-dns-kube-dns-amd64:1.14.7

       readinessProbe:

          httpGet:

            path: /readiness

            port: 8081

            scheme: HTTP

          initialDelaySeconds: 3

          timeoutSeconds: 5

        args:

        - --domain=cluster.k8s.local.

       env:

       - name: AIDU_KUBERNETES_LOG_ENDPOINT

          value: 192.168.19.139:8070

cat /data/kube_dns.yaml

+ cat /data/kube_dns.yaml

apiVersion: v1

kind: Service

metadata:

spec:

  selector:

    k8s-app: kube-dns

  clusterIP: $KUBE_CLUSTER_DNS_IP

   spec:

      containers:

      - name: kubedns

        image: ${DOCKER_REGISTRY}/k8s-dns-kube-dns-amd64:1.14.7

       readinessProbe:

          httpGet:

            path: /readiness

            port: 8081

            scheme: HTTP

          initialDelaySeconds: 3

          timeoutSeconds: 5

        args:

        - --domain=${K8S_CLUSTER_DOMAIN}.

       env:

       - name: AIDU_KUBERNETES_LOG_ENDPOINT

          value: ${NAMENODE_HOST}:8070