美文网首页
给 kubernetes 集群配置外部 etcd 集群(kube

给 kubernetes 集群配置外部 etcd 集群(kube

作者: 耳机在哪里 | 来源:发表于2018-12-12 15:30 被阅读0次

    官方文档: https://kubernetes.io/docs/setup/independent/high-availability/#first-steps-for-both-methods

    一、环境准备

    ip hostname role
    10.127.24.180 k8s-node1 k8s-node
    10.127.24.179 k8s-master1 k8s-master
    10.39.5.226 k8s-node2 k8s-node
    10.39.14.204 etcd-node1 etcd-node1
    10.39.14.205 etcd-node2 etcd-node2
    10.39.14.206 etcd-node3 etcd-node3

    开始前保证:

    • 所有节点都可以 ping 通
    • 都有 sudo 权限
    • 所有节点安装了 kubeadm kubelet。kubectl可选。
    • etcd 集群已搭建
    • 所有节点都有 etcd

    二、master 启动集群

    1、将 etcd 的认证文件 copy 来

    copy 认证文件方法:
    1、 先把之前的集群信息都清除干净
    2、 跳板机把 etcd 的认证文件 copy 下来
    3、 把认证文件放到指定位置

    [跳板机]$ scp -r ~/host1 root@<master_ip>:~
    [跳板机]$ ssh root@<master_ip>
    kubeadm reset
    rm -rf /etc/kubernetes/pki/
    mkdir -p  /etc/kubernetes/pki/etcd/
    chown -R root:root ~/host1/pki/
    mv ~/host1/pki/etcd/ca.crt /etc/kubernetes/pki/etcd/
    mv ~/host1/pki/apiserver-etcd-client.crt /etc/kubernetes/pki/
    mv ~/host1/pki/apiserver-etcd-client.key /etc/kubernetes/pki/
    rm -rf ~/host1/
    

    2、创建一个 kubeadm-config.yaml:

    参数参考 https://godoc.org/k8s.io/kubernetes/cmd/kubeadm/app/apis/kubeadm/v1beta1

    cat <<EOF > /etc/kubernetes/kubeadm-config.yaml
    apiVersion: kubeadm.k8s.io/v1beta1
    kind: ClusterConfiguration
    kubernetesVersion: v1.13.0
    apiServer:
      certSANs:
      - 10.127.24.179
      - 127.0.0.1
    networking:
      podSubnet: 10.244.0.0/16
    etcd:
        external:
            endpoints:
            - https://10.39.14.204:2379
            - https://10.39.14.205:2379
            - https://10.39.14.206:2379
            caFile: /etc/kubernetes/pki/etcd/ca.crt
            certFile: /etc/kubernetes/pki/apiserver-etcd-client.crt
            keyFile: /etc/kubernetes/pki/apiserver-etcd-client.key
    EOF
    

    3、启动集群

    kubeadm init --config /etc/kubernetes/kubeadm-config.yaml
    

    记录:
    kubeadm join xxxxx --token xxxxx --discovery-token-ca-cert-hash sha256:xxxx

    4、配置 flannel 网络

    kubectl apply -f kube-flannel.yml
    

    输出:
    clusterrole.rbac.authorization.k8s.io/flannel created
    clusterrolebinding.rbac.authorization.k8s.io/flannel created
    serviceaccount/flannel created
    configmap/kube-flannel-cfg created
    daemonset.extensions/kube-flannel-ds-amd64 created
    daemonset.extensions/kube-flannel-ds-arm64 created
    daemonset.extensions/kube-flannel-ds-arm created
    daemonset.extensions/kube-flannel-ds-ppc64le created
    daemonset.extensions/kube-flannel-ds-s390x created

    5、查看当前集群状态

    $ kubectl get componentstatus
    NAME                 STATUS    MESSAGE              ERROR
    controller-manager   Healthy   ok                   
    scheduler            Healthy   ok                   
    etcd-1               Healthy   {"health": "true"}   
    etcd-2               Healthy   {"health": "true"}   
    etcd-0               Healthy   {"health": "true"}
    $ kubectl get nodes
    NAME                                                    STATUS     ROLES    AGE   VERSION
    k8s-master1   Ready   master   66m   v1.13.0
    $ kubectl get pods -n kube-system
    NAME                                                                            READY   STATUS    RESTARTS   AGE
    coredns-86c58d9df4-j8t2t                                                        1/1     Running   0          6m20s
    coredns-86c58d9df4-wr9sk                                                        1/1     Running   0          6m20s
    etcd-k8s-master1                      1/1     Running   0          5m32s
    kube-apiserver-k8s-master1            1/1     Running   0          5m43s
    kube-controller-manager-k8s-master1   1/1     Running   0          5m21s
    kube-flannel-ds-amd64-st4sv                                                     1/1     Running   0          4m
    kube-proxy-d7t4d                                                                1/1     Running   0          6m20s
    kube-scheduler-k8s-master1            1/1     Running   0          5m39s
    

    三、Node 加入集群

    kubeadm join 10.127.24.179:6443 --token xxxxx --discovery-token-ca-cert-hash sha256:xxxxxx
    

    输出:
    This node has joined the cluster!

    四、(可选)master :check 一下 Node 状态

    kubectl get nodes
    

    输出:
    NAME STATUS ROLES AGE VERSION
    k8s-master1 Ready master 3h11m v1.13.0
    k8s-node1 Ready <none> 2m29s v1.13.0
    k8s-node2 Ready <none> 12s v1.13.0

    相关文章

      网友评论

          本文标题:给 kubernetes 集群配置外部 etcd 集群(kube

          本文链接:https://www.haomeiwen.com/subject/lhqphqtx.html