千家信息网

Kubernetes 1.8.4中如何安装Kube-proxy和Kube-dns

发表于:2024-11-14 作者:千家信息网编辑
千家信息网最后更新 2024年11月14日,小编给大家分享一下Kubernetes 1.8.4中如何安装Kube-proxy和Kube-dns,希望大家阅读完这篇文章之后都有所收获,下面让我们一起去探讨吧!Kube-proxyKube-prox
千家信息网最后更新 2024年11月14日Kubernetes 1.8.4中如何安装Kube-proxy和Kube-dns

小编给大家分享一下Kubernetes 1.8.4中如何安装Kube-proxy和Kube-dns,希望大家阅读完这篇文章之后都有所收获,下面让我们一起去探讨吧!

Kube-proxy

Kube-proxy 是实现 Service 的关键组件,kube-proxy 会在每台节点上执行,然后监听 API Server 的 Service 与 Endpoint 资源对象的改变,然后来依据变化执行 iptables 来实现网络的转发。这边我们会需要建议一个 DaemonSet 来执行,并且创建一些需要的certificate。Kubernetes 1.8 kube-proxy 开启 ipvs。

  • 在master生成kube-proxy-csr.json文件,并产生 kube-proxy certificate 证书
    生成kube-proxy-csr.json文件

    cd /etc/kubernetes/pki


    cat < kube-proxy-csr.json{    "CN": "system:kube-proxy",    "key": {        "algo": "rsa",        "size": 2048    },    "names": [        {            "C": "SC",            "ST": "ChengDu",            "L": "ChengDu",            "O": "system:kube-proxy",            "OU": "Kubernetes-manual"        }    ]}EOF


    生成证书

    cfssl gencert \  -ca=ca.pem \  -ca-key=ca-key.pem \  -config=ca-config.json \  -profile=kubernetes \  kube-proxy-csr.json | cfssljson -bare kube-proxy


    生成名称为 kube-proxy.conf 的 kubeconfig文件

    # kube-proxy set-clusterkubectl config set-cluster kubernetes \    --certificate-authority=ca.pem \    --embed-certs=true \    --server="https://10.0.0.162:6443" \    --kubeconfig=../kube-proxy.conf# kube-proxy set-credentials kubectl config set-credentials system:kube-proxy \    --client-key=kube-proxy-key.pem \    --client-certificate=kube-proxy.pem \    --embed-certs=true \    --kubeconfig=../kube-proxy.conf# kube-proxy set-contextkubectl config set-context system:kube-proxy@kubernetes \    --cluster=kubernetes \    --user=system:kube-proxy \    --kubeconfig=../kube-proxy.conf# kube-proxy set default contextkubectl config use-context system:kube-proxy@kubernetes \    --kubeconfig=../kube-proxy.conf


    在master将kube-proxy相关文件复制到 Node 节点上

    cd /etc/kubernetes


    for NODE in node163 node164; do    for FILE in pki/kube-proxy.pem pki/kube-proxy-key.pem kube-proxy.conf; do      scp /etc/kubernetes/${FILE} ${NODE}:/etc/kubernetes/${FILE}    done  done


    完成后,在master通过 kubectl 来创建 kube-proxy daemon

    mkdir -p /etc/kubernetes/addons && cd /etc/kubernetes/addons


    生成kube-proxy.yml

    cat < kube-proxy.ymlapiVersion: v1kind: ServiceAccountmetadata:  name: kube-proxy  labels:    k8s-app: kube-proxy    kubernetes.io/cluster-service: "true"    addonmanager.kubernetes.io/mode: Reconcile  namespace: kube-system---apiVersion: extensions/v1beta1kind: DaemonSetmetadata:  name: kube-proxy  labels:    k8s-app: kube-proxy    kubernetes.io/cluster-service: "true"    addonmanager.kubernetes.io/mode: Reconcile  namespace: kube-systemspec:  selector:    matchLabels:      k8s-app: kube-proxy  templateGeneration: 1  updateStrategy:    rollingUpdate:      maxUnavailable: 1    type: RollingUpdate  template:    metadata:      labels:        k8s-app: kube-proxy      annotations:        scheduler.alpha.kubernetes.io/critical-pod: ''    spec:      serviceAccountName: kube-proxy      hostNetwork: true      containers:      - name: kube-proxy        image: registry.cn-hangzhou.aliyuncs.com/google_containers/kube-proxy-amd64:v1.8.4        command:        - kube-proxy        - --v=0        - --logtostderr=true        - --kubeconfig=/run/kube-proxy.conf        - --cluster-cidr=10.244.0.0/16        - --proxy-mode=iptables        imagePullPolicy: IfNotPresent        securityContext:          privileged: true        volumeMounts:        - mountPath: /run/kube-proxy.conf          name: kubeconfig          readOnly: true        - mountPath: /etc/kubernetes/pki          name: k8s-certs          readOnly: true      dnsPolicy: ClusterFirst      restartPolicy: Always      terminationGracePeriodSeconds: 30      volumes:      - hostPath:          path: /etc/kubernetes/kube-proxy.conf          type: FileOrCreate        name: kubeconfig      - hostPath:          path: /etc/kubernetes/pki          type: DirectoryOrCreate        name: k8s-certsEOF


    kubectl apply -f kube-proxy.yml


    查看状态

    kubectl -n kube-system get po -l k8s-app=kube-proxy


Kube-dns

Kube DNS 是 Kubernetes 集群内部 Pod 之间互相沟通的重要 Addon,它允许 Pod 可以通过 Domain Name 方式来连接 Service,其主要由 Kube DNS 与 Sky DNS 组合而成,通过 Kube DNS 监听 Service 与 Endpoint 变化,来提供给 Sky DNS 信息,已更新解析地址。

只需要在master通过 kubectl 来创建 kube-dns deployment 即可

cat < kube-dns.ymlapiVersion: v1kind: ServiceAccountmetadata:  name: kube-dns  labels:    k8s-app: kube-dns    kubernetes.io/cluster-service: "true"    addonmanager.kubernetes.io/mode: Reconcile  namespace: kube-system---apiVersion: v1kind: Servicemetadata:  name: kube-dns  namespace: kube-system  labels:    k8s-app: kube-dns    kubernetes.io/cluster-service: "true"    addonmanager.kubernetes.io/mode: Reconcilespec:  selector:    k8s-app: kube-dns  clusterIP: 10.96.0.10  ports:  - name: dns    port: 53    protocol: UDP  - name: dns-tcp    port: 53    protocol: TCP---apiVersion: extensions/v1beta1kind: Deploymentmetadata:  name: kube-dns  namespace: kube-system  labels:    k8s-app: kube-dns    kubernetes.io/cluster-service: "true"    addonmanager.kubernetes.io/mode: Reconcilespec:  strategy:    rollingUpdate:      maxSurge: 10%      maxUnavailable: 0  selector:    matchLabels:      k8s-app: kube-dns  template:    metadata:      labels:        k8s-app: kube-dns      annotations:        scheduler.alpha.kubernetes.io/critical-pod: ''    spec:      dnsPolicy: Default      serviceAccountName: kube-dns      tolerations:      - key: "CriticalAddonsOnly"        operator: "Exists"      - key: node-role.kubernetes.io/master        effect: NoSchedule      volumes:      - name: kube-dns-config        configMap:          name: kube-dns          optional: true      containers:      - name: kubedns        image: registry.cn-hangzhou.aliyuncs.com/google_containers/k8s-dns-kube-dns-amd64:1.14.7        resources:          limits:            memory: 170Mi          requests:            cpu: 100m            memory: 70Mi        livenessProbe:          httpGet:            path: /healthcheck/kubedns            port: 10054            scheme: HTTP          initialDelaySeconds: 60          timeoutSeconds: 5          successThreshold: 1          failureThreshold: 5        readinessProbe:          httpGet:            path: /readiness            port: 8081            scheme: HTTP          initialDelaySeconds: 3          timeoutSeconds: 5        args:        - "--domain=cluster.local"        - --dns-port=10053        - --v=2        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        volumeMounts:        - name: kube-dns-config          mountPath: /kube-dns-config      - name: dnsmasq        image: registry.cn-hangzhou.aliyuncs.com/google_containers/k8s-dns-dnsmasq-nanny-amd64:1.14.7        livenessProbe:          httpGet:            path: /healthcheck/dnsmasq            port: 10054            scheme: HTTP          initialDelaySeconds: 60          timeoutSeconds: 5          successThreshold: 1          failureThreshold: 5        args:        - "-v=2"        - "-logtostderr"        - "-configDir=/etc/k8s/dns/dnsmasq-nanny"        - "-restartDnsmasq=true"        - "--"        - "-k"        - "--cache-size=1000"        - "--log-facility=-"        - "--server=/cluster.local/127.0.0.1#10053"        - "--server=/in-addr.arpa/127.0.0.1#10053"        - "--server=/ip6.arpa/127.0.0.1#10053"        ports:        - containerPort: 53          name: dns          protocol: UDP        - containerPort: 53          name: dns-tcp          protocol: TCP        resources:          requests:            cpu: 150m            memory: 20Mi        volumeMounts:        - name: kube-dns-config          mountPath: /etc/k8s/dns/dnsmasq-nanny      - name: sidecar        image: registry.cn-hangzhou.aliyuncs.com/google_containers/k8s-dns-sidecar-amd64:1.14.7        livenessProbe:          httpGet:            path: /metrics            port: 10054            scheme: HTTP          initialDelaySeconds: 60          timeoutSeconds: 5          successThreshold: 1          failureThreshold: 5        args:        - "--v=2"        - "--logtostderr"        - "--probe=kubedns,127.0.0.1:10053,kubernetes.default.svc.cluster.local,5,A"        - "--probe=dnsmasq,127.0.0.1:53,kubernetes.default.svc.cluster.local,5,A"        ports:        - containerPort: 10054          name: metrics          protocol: TCP        resources:          requests:            memory: 20Mi            cpu: 10mEOF
kubectl apply -f kube-dns.yml

查看状态

kubectl -n kube-system get po -l k8s-app=kube-dns

看完了这篇文章,相信你对"Kubernetes 1.8.4中如何安装Kube-proxy和Kube-dns"有了一定的了解,如果想了解更多相关知识,欢迎关注行业资讯频道,感谢各位的阅读!

0