使用kubeadm安装kubernetes
2016-09-28 12:05
831 查看
这是一种最快的方法向你展示如何简单在在你Ubuntu16.04或者Centos的机器的安装Kubernetes。这次使用的安装工具是Kubernetes1.4组件叫做kubeadm。
Kubernetes可以工作在本地虚拟机,物理服务器或者云服务器。Kubernetes简单到一体化傻瓜部署。
简单到翻墙倒是部署Kubernetes最难的一步了。
先翻墙吧,不然是个极其痛苦的过程。全程翻墙操作!!!
翻墙传送门
安装之中难免出现小问题,按部就班,解决不了,文章附录我自己遇到的问题和解决方案,可供参考:
2.至少1GB RAM
3.公网或者内网可联通
我们将会安装下面几个包:
docker: the container runtime, which Kubernetes depends on.
kubelet: the most core component of Kubernetes. It runs on all of the machines in your cluster and does things like starting pods and containers.
kubectl: the command to control the cluster once it’s running. You will only use this on the master.
kubeadm: the command to bootstrap the cluster.
在你拥有的每台机器上进行如下操作:
使用ssh登陆你的机器,并获得root权限(su root)
在Ubuntu16.04:
在CentOS7:
现在的kubelet每几秒重启一次,它在等待kubeadm告诉它做什么。
(2 / 4):初始化你的master
msater是你运行组件“control plane”那台机器,包括etcd(集群数据库)和API服务(kubelet和此进行交互)。所有这些组件运行在被kubelet启动的pods上,为了初始化master,选择一台你之前安装了kubelet和kubeadm的机器上,运行如下命令:
上面的命令会下载并且安装集群数据库和“control plane”组件,这将花费一段时间,完成之后会输出如下结果:
记住kubeadm init 输出的kubeadm join 的命令,接下来你将会用到。这个秘钥必须保密,否则任何人都能加入你集群,并进行破坏。
这个秘钥是master和node 用来互相验证身份的识别卡。默认情况下,出于安全考虑,你的集群不会在master上创建pods 。如果你想在master创建pods,运行如下命令:
这会告诉集群可以创建pods 在任何地方包括master。
(3 / 4)加入你的nodes
nodes 是你pods和container的运行的地方。如果你想增加新的机器作为nodes加入你的集群,用ssh 进入每天机器并获得root权限,并运行如下命令:
几秒之后,当你在masters上运行 kubectl get nodes 你会发现很多机器出现了。
注意:你的集群到此还未部署完成!
在你部署一个应用值钱,你需要安装pod network.
(4 / 4)安装 pod network
你必须安装一个 pod network 以便让你的运行在不同主机上的pods之间可以进行通信,这是你部署任何一个应用到你的集群上所必须做的事情。几个工程提供了Kubernetes pod networks,你可以看完整的清单在add-ons page.
举个例子,你可以登陆master安装 Wave Net :
一旦一个pod network ,你可以通过运行 kubectl get pods –all-namespaces
查看是否生效,running 表示你的集群已经准备好了。
安装一个小应用:
作为一个例子:安装一个小应用放入你的集群:
你可以查看 NodePort feature of services分配的端口值:
这将会花费几分钟下载和开始容器,通过看kubectl get pods来看他们是否都已经启动完毕并且运行了。用浏览器进入master IP地址,和被分配的端口。比如http://: 在上面个例子:端口是31869,你的端口可能不同。如果有防火墙,连接之前记得开放端口。
更多操作细节,在下载文件下的build目录中,自行查看。
1.使用sudo docker ps 或者其他kubeadm会提示发现不了主机,询问docker是否运行在这台主机上?
我是关机重启之后出现这个问题的。
解决方案:据我所知应该是docker引擎被卸载了或者是被Kubernetes配置更改了,重新安装一次就好了,更深次的原因我还没有发现。
前提是docker值钱依赖和源都更新好,并且安装好docker引擎再出现上面的问题。
$ sudo apt-get install docker-engine
运行上面的问题就可以解决了。
2.(2 / 4):初始化你的master在这一步中运行# kubeadm init
只出现这,一直没有后续输出和安装完成提示,等了一夜也没有,后来直接无视这步操作,依然是成功,暂时没有发现问题,可以在实验阶段先忽视这个问题。
Kubernetes可以工作在本地虚拟机,物理服务器或者云服务器。Kubernetes简单到一体化傻瓜部署。
简单到翻墙倒是部署Kubernetes最难的一步了。
先翻墙吧,不然是个极其痛苦的过程。全程翻墙操作!!!
翻墙传送门
安装之中难免出现小问题,按部就班,解决不了,文章附录我自己遇到的问题和解决方案,可供参考:
安装要求:
1.一台或者多台装有Ubuntu 16.04 or CentOS 7的电脑或者虚拟机。2.至少1GB RAM
3.公网或者内网可联通
安装步骤
(1/ 4):在你的主机上安装kubelet和kubeadm我们将会安装下面几个包:
docker: the container runtime, which Kubernetes depends on.
kubelet: the most core component of Kubernetes. It runs on all of the machines in your cluster and does things like starting pods and containers.
kubectl: the command to control the cluster once it’s running. You will only use this on the master.
kubeadm: the command to bootstrap the cluster.
在你拥有的每台机器上进行如下操作:
使用ssh登陆你的机器,并获得root权限(su root)
在Ubuntu16.04:
# curl https://packages.cloud.google.com/apt/doc/apt-key.gpg | apt-key add - # cat <<EOF > /etc/apt/sources.list.d/kubernetes.list deb http://apt.kubernetes.io/ kubernetes-xenial main EOF # apt-get update # apt-get install -y docker.io kubelet kubeadm kubectl kubernetes-cni
在CentOS7:
# cat <<EOF > /etc/yum.repos.d/kubernetes.repo [kubernetes] name=Kubernetes baseurl=http://yum.kubernetes.io/repos/kubernetes-el7-x86_64 enabled=1 gpgcheck=1 repo_gpgcheck=1 gpgkey=https://packages.cloud.google.com/yum/doc/yum-key.gpg https://packages.cloud.google.com/yum/doc/rpm-package-key.gpg EOF # setenforce 0 # yum install -y docker kubelet kubeadm kubectl kubernetes-cni # systemctl enable docker && systemctl start docker # systemctl enable kubelet && systemctl start kubelet
现在的kubelet每几秒重启一次,它在等待kubeadm告诉它做什么。
(2 / 4):初始化你的master
msater是你运行组件“control plane”那台机器,包括etcd(集群数据库)和API服务(kubelet和此进行交互)。所有这些组件运行在被kubelet启动的pods上,为了初始化master,选择一台你之前安装了kubelet和kubeadm的机器上,运行如下命令:
# kubeadm init
上面的命令会下载并且安装集群数据库和“control plane”组件,这将花费一段时间,完成之后会输出如下结果:
<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>
记住kubeadm init 输出的kubeadm join 的命令,接下来你将会用到。这个秘钥必须保密,否则任何人都能加入你集群,并进行破坏。
这个秘钥是master和node 用来互相验证身份的识别卡。默认情况下,出于安全考虑,你的集群不会在master上创建pods 。如果你想在master创建pods,运行如下命令:
# kubectl taint nodes --all dedicated- node "test-01" tainted taint key="dedicated" and effect="" not found. taint key="dedicated" and effect="" not found.
这会告诉集群可以创建pods 在任何地方包括master。
(3 / 4)加入你的nodes
nodes 是你pods和container的运行的地方。如果你想增加新的机器作为nodes加入你的集群,用ssh 进入每天机器并获得root权限,并运行如下命令:
# 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 < c335 span class="hljs-title">to see this machine join.
几秒之后,当你在masters上运行 kubectl get nodes 你会发现很多机器出现了。
注意:你的集群到此还未部署完成!
在你部署一个应用值钱,你需要安装pod network.
(4 / 4)安装 pod network
你必须安装一个 pod network 以便让你的运行在不同主机上的pods之间可以进行通信,这是你部署任何一个应用到你的集群上所必须做的事情。几个工程提供了Kubernetes pod networks,你可以看完整的清单在add-ons page.
举个例子,你可以登陆master安装 Wave Net :
# kubectl apply -f https://git.io/weave-kube daemonset "weave-net" created
一旦一个pod network ,你可以通过运行 kubectl get pods –all-namespaces
查看是否生效,running 表示你的集群已经准备好了。
安装一个小应用:
作为一个例子:安装一个小应用放入你的集群:
# git clone https://github.com/microservices-demo/microservices-demo # kubectl apply -f microservices-demo/deploy/kubernetes/manifests
你可以查看 NodePort feature of services分配的端口值:
# kubectl describe svc front-end Name: front-end Namespace: default Labels: name=front-end Selector: name=front-end Type: NodePort IP: 100.66.88.176 Port: <unset> 80/TCP NodePort: <unset> 31869/TCP Endpoints: <none> Session Affinity: None
这将会花费几分钟下载和开始容器,通过看kubectl get pods来看他们是否都已经启动完毕并且运行了。用浏览器进入master IP地址,和被分配的端口。比如http://: 在上面个例子:端口是31869,你的端口可能不同。如果有防火墙,连接之前记得开放端口。
一个更简洁的安装方案
有个简洁的安装方案,为什么还要使用上面的方法,我认为下面介绍虽然更简单,但是不能让你熟悉了解组件之间的关系,换言之,上面的方法虽然有些多但是让你对Kubernetes有个初步的认识。另外下面的方法虽然比上面的方法更简单,但是还是要翻墙。另外还有直接下载压缩包的方法我就不介绍了,反正我这是根本下载不下来,不管你翻不翻墙。直接运行如下命令:git clone https://github.com/kubernetes/kubernetes.git cd kubernetes make release
更多操作细节,在下载文件下的build目录中,自行查看。
问题与解决:
本人亲自安装时发现两个问题:1.使用sudo docker ps 或者其他kubeadm会提示发现不了主机,询问docker是否运行在这台主机上?
我是关机重启之后出现这个问题的。
解决方案:据我所知应该是docker引擎被卸载了或者是被Kubernetes配置更改了,重新安装一次就好了,更深次的原因我还没有发现。
前提是docker值钱依赖和源都更新好,并且安装好docker引擎再出现上面的问题。
$ sudo apt-get install docker-engine
运行上面的问题就可以解决了。
2.(2 / 4):初始化你的master在这一步中运行# kubeadm init
<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
只出现这,一直没有后续输出和安装完成提示,等了一夜也没有,后来直接无视这步操作,依然是成功,暂时没有发现问题,可以在实验阶段先忽视这个问题。
相关文章推荐
- 完美的CentOS-7使用kubeadm安装配置k8s(kubernetes),有问题问我
- 使用kubeadm在ububtu16.04安装kubernetes1.6.1-flannel
- k8s技术预研3--使用kubeadm安装、配置Kubernetes集群以及进行故障排查的方法
- 使用kubeadm安装kubernetes1.7/1.8/1.9
- 使用Kubeadm安装Kubernetes1.5版本
- 使用kubeadm 安装 kubernetes 1.12.0
- 使用kubeadm在ububtu16.04安装kubernetes1.5.5-flannel
- 使用kubeadm安装kubernetes集群
- 使用kubeadm安装Kubernetes 1.9
- 使用kubeadm安装kubernetes1.12.1
- 以Kubeadm方式安装的Kubernetes集群的探索
- kubernetes学习1--centOS7.2使用yum安装kubernetes
- CentOS7.3利用kubeadm安装kubernetes1.7.3完整版(官方文档填坑篇)
- kubeadm安装kubernetes(calico)
- kubeadm安装kubernetes(canal)
- CentOS7.3利用kubeadm安装kubernetes1.7.3完整版(官方文档填坑篇)
- 通过kubeadm安装kubernetes 1.7文档记录[docker容器方式]
- 【转】使用Kubeadm快速搭建Kubernetes(docker)
- mac使用minikube安装kubernetes
- 使用Kubeadm快速搭建Kubernetes(docker)