(1/4)为所有机器安装所需的环境
- docker docker容器daemon
- kubelet kubernetes核心组件,运行于集群所有机器,做启停容器等事情
- kubectl master中使用的集群控制工具
- kubeadm 集群引导工具
ubuntu/debian系统安装
# apt-get install -y docker.io socat apt-transport-https
# curl -s -L \
https://storage.googleapis.com/kubeadm/kubernetes-xenial-preview-bundle.txz | tar xJvf
# dpkg -i kubernetes-xenial-preview-bundle/*.deb
centos7 系统安装
# cat <<EOF > /etc/yum.repos.d/k8s.repo
[kubelet]
name=kubelet
baseurl=http://files.rm-rf.ca/rpms/kubelet/
enabled=1
gpgcheck=0
EOF
# yum install docker kubelet kubeadm kubectl kubernetes-cni
# systemctl enable docker && systemctl start docker
# systemctl enable kubelet && systemctl start kubelet
提示:如果遇到网络问题自行下载相关包上传到主机
# wget https://storage.googleapis.com/kubeadm/kubernetes-xenial-preview-bundle.txz
# scp kubernetes-xenial-preview-bundle.txz <yourhost>
# ssh <yourhost>
# tar xJvf kubernetes-xenial-preview-bundle.txz
# dpkg -i kubernetes-xenial-preview-bundle/*.deb
(2/4) 初始化主节点
选择一台安装完环境的主机作为主节点。执行以下命令:
# kubeadm init --use-kubernetes-version v1.4.0-beta.11
此处会去cgr.io拉镜像,确认网络是否通。以下镜像:
gcr.io/google_containers/kube-controller-manager-amd64:v1.4.0
gcr.io/google_containers/kube-apiserver-amd64:v1.4.0
gcr.io/google_containers/etcd-amd64:2.2.5
gcr.io/google_containers/pause-amd64:3.0
gcr.io/google_containers/kube-scheduler-amd64:v1.4.0
以上命令正确执行后你能看到形如以下样子的输出,并记住输出的token等内容
<master/tokens> generated token: "f0c861.753c505740ecde4c"
<master/pki> created keys and certificates in "/etc/kubernetes/pki"
<util/kubeconfig> created "/etc/kubernetes/kubelet.conf"
<util/kubeconfig> created "/etc/kubernetes/admin.conf"
<master/apiclient> created API client configuration
<master/apiclient> created API client, waiting for the control plane to become ready
<master/apiclient> all control plane components are healthy after 61.346626 seconds
<master/apiclient> waiting for at least one node to register and become ready
<master/apiclient> first node is ready after 4.506807 seconds
<master/discovery> created essential addon: kube-discovery
<master/addons> created essential addon: kube-proxy
<master/addons> created essential addon: kube-dns
Kubernetes master initialised successfully!
You can connect any number of nodes by running:
kubeadm join --token <token> <master-ip>
默认情况下主节点不会作为工作节点,如果你想搭建单机集群,使主节点也能工作。执行以下命令:
# kubectl taint nodes --all dedicated-
node "test-01" tainted
taint key="dedicated" and effect="" not found.
taint key="dedicated" and effect="" not found.
(3/4) 加入子节点
你可以添加任意多的节点来负载运行docker容器等。执行以下命令使成为子节点:
# kubeadm join --token <token> <master-ip>
<util/tokens> validating provided token
<node/discovery> created cluster info discovery client, requesting info from "http://138.68.156.129:9898/cluster-info/v1/?token-id=0f8588"
<node/discovery> cluster info object received, verifying signature using given token
<node/discovery> cluster info signature and contents are valid, will use API endpoints [https://138.68.156.129:443]
<node/csr> created API client to obtain unique certificate for this node, generating keys and certificate signing request
<node/csr> received signed certificate from the API server, generating kubelet configuration
<util/kubeconfig> created "/etc/kubernetes/kubelet.conf"
Node join complete:
* Certificate signing request sent to master and response
received.
* Kubelet informed of new secure connection details.
Run 'kubectl get nodes' on the master to see this machine join.
你可以在主节点中运行kubectl get nodes
查看
(4/4)安装调度pod网络
在部署应用前必须安装网络支持
# kubectl apply -f https://git.io/weave-kube
daemonset "weave-net" created
安装demo应用
# git clone https://github.com/microservices-demo/microservices-demo
# kubectl apply -f microservices-demo/deploy/kubernetes/manifests