美文网首页
使用VirtualBox在本地搭建单节点K8S集群

使用VirtualBox在本地搭建单节点K8S集群

作者: 李小西033 | 来源:发表于2018-12-12 20:40 被阅读108次

    Host硬件配置要求

    Master: 2 core CPU/ 4GB RAM
    Node: 1 core CPU/ 4GB RAM

    Host环境要求

    Kubelet,负责Kubernetes Master和Node间通信的进程;管理host中运行的pod和容器
    容器运行时(Docker或rkt),负责从仓库拉取容器镜像,运行容器应用。

    image.png
    1. 所有节点安装docker 17.03.x (18.09不支持)
    apt-get update && apt-get install docker.io
    
    1. 所有节点上安装kubelet, kubeadm和kubectl
      https://kubernetes.io/docs/setup/independent/install-kubeadm/
    apt-get update && apt-get install -y apt-transport-https curl
    curl -s https://packages.cloud.google.com/apt/doc/apt-key.gpg | apt-key add -
    cat <<EOF >/etc/apt/sources.list.d/kubernetes.list
    deb https://apt.kubernetes.io/ kubernetes-xenial main
    EOF
    apt-get update
    apt-get install -y kubelet kubeadm kubectl
    apt-mark hold kubelet kubeadm kubectl
    
    1. 初始化master
    sudo kubeadm init --pod-network-cidr=10.244.0.0/16
    
    sudo kubeadm init --pod-network-cidr=10.244.0.0/16
    [init] using Kubernetes version: v1.12.3
    [preflight] running pre-flight checks
    [preflight/images] Pulling images required for setting up a Kubernetes cluster
    [preflight/images] This might take a minute or two, depending on the speed of your internet connection
    [preflight/images] You can also perform this action in beforehand using 'kubeadm config images pull'
    [kubelet] Writing kubelet environment file with flags to file "/var/lib/kubelet/kubeadm-flags.env"
    [kubelet] Writing kubelet configuration to file "/var/lib/kubelet/config.yaml"
    [preflight] Activating the kubelet service
    [certificates] Generated etcd/ca certificate and key.
    [certificates] Generated etcd/server certificate and key.
    [certificates] etcd/server serving cert is signed for DNS names [lisa-virtualbox localhost] and IPs [127.0.0.1 ::1]
    [certificates] Generated apiserver-etcd-client certificate and key.
    [certificates] Generated etcd/peer certificate and key.
    [certificates] etcd/peer serving cert is signed for DNS names [lisa-virtualbox localhost] and IPs [10.0.2.15 127.0.0.1 ::1]
    [certificates] Generated etcd/healthcheck-client certificate and key.
    [certificates] Generated ca certificate and key.
    [certificates] Generated apiserver certificate and key.
    [certificates] apiserver serving cert is signed for DNS names [lisa-virtualbox kubernetes kubernetes.default kubernetes.default.svc kubernetes.default.svc.cluster.local] and IPs [10.96.0.1 10.0.2.15]
    [certificates] Generated apiserver-kubelet-client certificate and key.
    [certificates] Generated front-proxy-ca certificate and key.
    [certificates] Generated front-proxy-client certificate and key.
    [certificates] valid certificates and keys now exist in "/etc/kubernetes/pki"
    [certificates] Generated sa key and public key.
    [kubeconfig] Wrote KubeConfig file to disk: "/etc/kubernetes/admin.conf"
    [kubeconfig] Wrote KubeConfig file to disk: "/etc/kubernetes/kubelet.conf"
    [kubeconfig] Wrote KubeConfig file to disk: "/etc/kubernetes/controller-manager.conf"
    [kubeconfig] Wrote KubeConfig file to disk: "/etc/kubernetes/scheduler.conf"
    [controlplane] wrote Static Pod manifest for component kube-apiserver to "/etc/kubernetes/manifests/kube-apiserver.yaml"
    [controlplane] wrote Static Pod manifest for component kube-controller-manager to "/etc/kubernetes/manifests/kube-controller-manager.yaml"
    [controlplane] wrote Static Pod manifest for component kube-scheduler to "/etc/kubernetes/manifests/kube-scheduler.yaml"
    [etcd] Wrote Static Pod manifest for a local etcd instance to "/etc/kubernetes/manifests/etcd.yaml"
    [init] waiting for the kubelet to boot up the control plane as Static Pods from directory "/etc/kubernetes/manifests" 
    [init] this might take a minute or longer if the control plane images have to be pulled
    [apiclient] All control plane components are healthy after 23.002357 seconds
    [uploadconfig] storing the configuration used in ConfigMap "kubeadm-config" in the "kube-system" Namespace
    [kubelet] Creating a ConfigMap "kubelet-config-1.12" in namespace kube-system with the configuration for the kubelets in the cluster
    [markmaster] Marking the node lisa-virtualbox as master by adding the label "node-role.kubernetes.io/master=''"
    [markmaster] Marking the node lisa-virtualbox as master by adding the taints [node-role.kubernetes.io/master:NoSchedule]
    [patchnode] Uploading the CRI Socket information "/var/run/dockershim.sock" to the Node API object "lisa-virtualbox" as an annotation
    [bootstraptoken] using token: pt6kd3.t9ffltjjnzybifps
    [bootstraptoken] configured RBAC rules to allow Node Bootstrap tokens to post CSRs in order for nodes to get long term certificate credentials
    [bootstraptoken] configured RBAC rules to allow the csrapprover controller automatically approve CSRs from a Node Bootstrap Token
    [bootstraptoken] configured RBAC rules to allow certificate rotation for all node client certificates in the cluster
    [bootstraptoken] creating the "cluster-info" ConfigMap in the "kube-public" namespace
    [addons] Applied essential addon: CoreDNS
    [addons] Applied essential addon: kube-proxy
    
    Your Kubernetes master has initialized successfully!
    
    To start using your cluster, you need to run the following as a regular user:
    
      mkdir -p $HOME/.kube
      sudo cp -i /etc/kubernetes/admin.conf $HOME/.kube/config
      sudo chown $(id -u):$(id -g) $HOME/.kube/config
    
    You should now deploy a pod network to the cluster.
    Run "kubectl apply -f [podnetwork].yaml" with one of the options listed at:
      https://kubernetes.io/docs/concepts/cluster-administration/addons/
    
    You can now join any number of machines by running the following on each node
    as root:
    
      kubeadm join 10.0.2.15:6443 --token pt6kd3.t9ffltjjnzybifps --discovery-token-ca-cert-hash sha256:36ff1648326e958003cf72ab81b588015b002072487ee0830252efb5a3e625d6
    
    
    kubernetes running with swap on is not supported. please disable swap
    

    禁用swap

    sudo swapoff -a
    
    image.png
    1. 配置kubectl
      mkdir -p $HOME/.kube
      sudo cp -i /etc/kubernetes/admin.conf $HOME/.kube/config
      sudo chown $(id -u):$(id -g) $HOME/.kube/config
    
    1. 安装pod网络
    kubectl apply -f https://raw.githubusercontent.com/coreos/flannel/master/Documentation/kube-flannel.yml
    
    image.png image.png
    1. 创建dashboard
    //For creating the dashboard first - bring this up before starting Nodes
    kubectl apply -f https://raw.githubusercontent.com/kubernetes/dashboard/master/src/deploy/recommended/kubernetes-dashboard.yaml
    
    image.png
    //To enable proxy
    kubectl proxy
    
    image.png

    参考https://github.com/kubernetes/dashboard/wiki/Creating-sample-user,为dashboard创建service account
    打印token用于登陆

    image.png
    image.png
    image.png

    相关文章

      网友评论

          本文标题:使用VirtualBox在本地搭建单节点K8S集群

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