Kubernetes 1.4 基础篇:kubeadm方式安装
2016-10-17 22:16
701 查看
kubernetes在9月份推出了1.4的版本,在这个版本中最招人眼球的就是它推出了kubeadm的方式进行安装,简化了很多流程。终于,至少这个版本的kubernetes像docker1.12内置的swarm一样方便的创建集群了。本文将会介绍一下如何在centos7下安装单节点可用的集群。亲测可用。
2016/9/26 kubernetes发布了1.4版,自称“Making it easy to run on Kubernetes anywhere”,还增加了一些特性,该版本最引起关注的可能就是kubeadm的引入了。kubernetes1.4的新增特性中第一个被介绍的就是“两条语句创建集群(Cluster creation with two commands)”了。
Stateful应用支持的扩展
Cluster federation API additions
容器安全支持(Pod Security Policy+Apparmor)
Infrastructure enhancements(swagger2.0的支持等)
Dashboard UI(能完成CLI的90%操作)
…
注意事项:因为https://packages.cloud.google.com/yum/doc/yum-key.gpg,这个可能很多用户无法访问,可以不用check,设定gpgcheck=0,直接执行即可。
安装参照
安装参照:提前将google相关的一些image下载到本地会加快构建集群的速度,应该国内的因为网络的原因无法下载,因此将初始化时需要的6个image提前下载到本地。为了方便,可以使用如下脚本直接执行(参数为PREPARE),其将会直接从liumiaocn的dockerhub下直接pull后rename然后untag。
初始化命令:kubeadm init
总结: kubeadm init进行不下去的主要原因.
原因1:CentOS7下kubernetes1.4的安装有个bug需要执行setenforce 0设定selinux才可,据kubernetes的issue说明后续的版本应该不会再有问题。
原因2:事前container没有提前下载下来,因为各种网络问题一直无法继续
原因3:CentOS7下,因为网络设备编号没有eth0而产生的问题,有可能是当前kubernetes的一个bug,毕竟还只是内测程度的版本,要求不要太高。可以查看系统/var/log/messages即可看出问题所在。
看来这个是kubernetes对docker的一大反击,docker在模仿kubernetes的容器管理的时候,kubernetes也开始模仿docker swarm创建集群。
版本确认
kubeadm确实有其独到之处,比1.4之前的kubernetes-ansible或者minikube相比方便很多。另外1.4版本的UI也有所强化,我们将在后面进行进一步的介绍。
2016/9/26 kubernetes发布了1.4版,自称“Making it easy to run on Kubernetes anywhere”,还增加了一些特性,该版本最引起关注的可能就是kubeadm的引入了。kubernetes1.4的新增特性中第一个被介绍的就是“两条语句创建集群(Cluster creation with two commands)”了。
kubernetes 1.4新特性
两条语句创建集群Stateful应用支持的扩展
Cluster federation API additions
容器安全支持(Pod Security Policy+Apparmor)
Infrastructure enhancements(swagger2.0的支持等)
Dashboard UI(能完成CLI的90%操作)
…
安装准备
项番 | 详细 |
---|---|
No.1 | 一台或多台CentOS7 |
No.2 | 大于或等于1G的内存 |
No.3 | 网络可以连接 |
Step 1/4 :安装kubelet和kubeadm
具体步骤参看如下:# 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
注意事项:因为https://packages.cloud.google.com/yum/doc/yum-key.gpg,这个可能很多用户无法访问,可以不用check,设定gpgcheck=0,直接执行即可。
# cat <<EOF > /etc/yum.repos.d/kubernetes.repo [kubernetes] name=Kubernetes baseurl=http://yum.kubernetes.io/repos/kubernetes-el7-x86_64 enabled=1 gpgcheck=0 EOF #
安装参照
[root@liumiaocn ~]# cat <<EOF > /etc/yum.repos.d/kubernetes.repo > [kubernetes] > name=Kubernetes > baseurl=http://yum.kubernetes.io/repos/kubernetes-el7-x86_64 > enabled=1 > gpgcheck=0 > EOF [root@liumiaocn ~]# setenforce 0 [root@liumiaocn ~]# yum install -y docker kubelet kubeadm kubectl kubernetes-cni 2>&1 >/tmp/k8s_install.log [root@liumiaocn ~]# systemctl enable docker && systemctl start docker Created symlink from /etc/systemd/system/multi-user.target.wants/docker.service to /usr/lib/systemd/system/docker.service. [root@liumiaocn ~]# systemctl enable kubelet && systemctl start kubelet Created symlink from /etc/systemd/system/multi-user.target.wants/kubelet.service to /etc/systemd/system/kubelet.service. [root@liumiaocn ~]#
Step 2/4: 初始化Master
命令:kubeadm init
安装参照:提前将google相关的一些image下载到本地会加快构建集群的速度,应该国内的因为网络的原因无法下载,因此将初始化时需要的6个image提前下载到本地。为了方便,可以使用如下脚本直接执行(参数为PREPARE),其将会直接从liumiaocn的dockerhub下直接pull后rename然后untag。
#!/bin/sh usage(){ echo "Usage: $0 ACTION " echo " ACTION: LIST|PREPARE" } PROXY="kube-proxy-amd64:v1.4.0" DISCOVERY="kube-discovery-amd64:1.0" SCHEDULER="kube-scheduler-amd64:v1.4.0" CONTROLLER="kube-controller-manager-amd64:v1.4.0" APISERVER="kube-apiserver-amd64:v1.4.0" PAUSE="pause-amd64" ALL_IMAGES="${PROXY} ${DISCOVERY} ${SCHEDULER} ${CONTROLLER} ${APISERVER} ${PAUSE}" ACTION="$1" if [ $# -ne 1 ]; then usage exit 1 fi CNT=0 if [ _"PREPARE" = _"${ACTION}" ]; then echo "Now begin to pull images from liumiaocn" for image in ${ALL_IMAGES} do CNT=`expr ${CNT} + 1` echo "No.${CNT} : ${image} pull begins ..." docker pull liumiaocn/${image} echo "No.${CNT} : ${image} pull ends ..." echo "No.${CNT} : ${image} rename ..." docker tag liumiaocn/${image} gcr.io/google_containers/${image} echo "No.${CNT} : ${image} untag ..." docker rmi liumiaocn/${image} echo "" done echo "All images have been pulled to local as following" docker images |egrep 'kube|pause' else echo "All images of local for k8s as following" docker images |egrep 'kube|pause' fi
初始化命令:kubeadm init
[root@liumiaocn ~]# kubeadm init <master/tokens> generated token: "9a5d26.9223a9e6bb57b85c" <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 55.613825 seconds <master/apiclient> waiting for at least one node to register and become ready <master/apiclient> first node is ready after 2.251018 seconds <master/discovery> created essential addon: kube-discovery, waiting for it to become ready <master/discovery> kube-discovery is ready after 5.219802 seconds <master/addons> created essential addon: kube-proxy <master/addons> created essential addon: kube-dns Kubernetes master initialised successfully! You can now join any number of machines by running the following on each node: kubeadm join --token 9a5d26.9223a9e6bb57b85c 16.157.246.203 [root@liumiaocn ~]#
[root@liumiaocn ~]# kubectl taint nodes --all dedicated- node "liumiaocn" tainted [root@liumiaocn ~]# kubectl get nodes NAME STATUS AGE liumiaocn Ready 5m [root@liumiaocn ~]#
总结: kubeadm init进行不下去的主要原因.
原因1:CentOS7下kubernetes1.4的安装有个bug需要执行setenforce 0设定selinux才可,据kubernetes的issue说明后续的版本应该不会再有问题。
原因2:事前container没有提前下载下来,因为各种网络问题一直无法继续
原因3:CentOS7下,因为网络设备编号没有eth0而产生的问题,有可能是当前kubernetes的一个bug,毕竟还只是内测程度的版本,要求不要太高。可以查看系统/var/log/messages即可看出问题所在。
Step 3/4: kubeadm join
kubeadm init之后master就ready了,然后使用一个一个地kubeadm join就完成了集群的创建。方式跟今年合体到docker里面的swarm如出一辙。看来这个是kubernetes对docker的一大反击,docker在模仿kubernetes的容器管理的时候,kubernetes也开始模仿docker swarm创建集群。
命令:kubeadm join --token 9a5d26.9223a9e6bb57b85c 16.157.246.203
Step 4/4: weave设定
[root@liumiaocn ~]# kubectl apply -f https://git.io/weave-kube daemonset "weave-net" created [root@liumiaocn ~]#
版本确认
[root@liumiaocn ~]# kubectl version Client Version: version.Info{Major:"1", Minor:"4", GitVersion:"v1.4.0", GitCommit:"a16c0a7f71a6f93c7e0f222d961f4675cd97a46b", GitTreeState:"clean", BuildDate:"2016-09-26T18:16:57Z", GoVersion:"go1.6.3", Compiler:"gc", Platform:"linux/amd64"} Server Version: version.Info{Major:"1", Minor:"4", GitVersion:"v1.4.0", GitCommit:"a16c0a7f71a6f93c7e0f222d961f4675cd97a46b", GitTreeState:"clean", BuildDate:"2016-09-26T18:10:32Z", GoVersion:"go1.6.3", Compiler:"gc", Platform:"linux/amd64"} [root@liumiaocn ~]# kubeadm version kubeadm version: version.Info{Major:"1", Minor:"5+", GitVersion:"v1.5.0-alpha.0.1534+cf7301f16c0363-dirty", GitCommit:"cf7301f16c036363c4fdcb5d4d0c867720214598", GitTreeState:"dirty", BuildDate:"2016-09-27T18:10:39Z", GoVersion:"go1.6.3", Compiler:"gc", Platform:"linux/amd64"} [root@liumiaocn ~]#
kubeadm确实有其独到之处,比1.4之前的kubernetes-ansible或者minikube相比方便很多。另外1.4版本的UI也有所强化,我们将在后面进行进一步的介绍。
相关文章推荐
- kubernetes 1.9.0 kubeadm方式安装
- 使用 kubeadm 安装部署 kubernetes 1.9
- [经验交流] kubeadm 安装 kubernetes 一年过期的解决办法
- kubeadm安装kubernetes1.9.2集群
- kubeadm 安装 kubernetes
- kubeadm安装kubernetes
- kubeadm 安装 kubernetes1.9.1
- kubeadm安装kubernetes(weave)
- centos7 、kubeadm 安装kubernetes 1.9
- centos7环境下kubeadm方式部署 kubernetes 1.7
- Kubeadm安装Kubernetes环境
- kubeadm 搭建 kubernetes 集群
- [容器]kubeadm安装k8s 1.6
- centos7 安装kubernetes1.4
- kubeadm基于OKDC脚本,一键安装kubernetes 1.6.2 (在线版)
- kubernetes1.5新特性:新版本kubeadm
- Installing Kubernetes on Linux with kubeadm