Kubernete安装不完全指南

安装Kubernetes向来不是一件容易的事情。之前在集群上部署好的K8s突然出了问题,于是需要重新安装。这次没有之前那次那么顺利了,出现了很多奇怪的问题。但经过一番实践和总结,总算是得出了Kubernetes国内安装的一个不完全指南。这个指南理论上适用于任意版本的K8s。 Master节点的安装过程主要可以参考《使用kubeadm安装kubernetes1.7》。主要的流程是: 安装Docker 安装Kubernetes相关组件 Kubeadm init Master节点 安装Overlay Network Join Node节点 下面主要说一些关于如何确定软件版本、如何制作软件镜像源等等细微但是很要命的问题。 关于Docker 目前使用Docker 1.12版本是比较稳定的。Docker这种基础设施软件没有必要追最新的。在阿里云的CentOS只要直接yum install docker就可以安装这个版本了。 关于操作系统 本文讲的是在CentOS 7上安装Kubernetes。理由是Kubernetes对CentOS支持比较好,网上资料比较多。当然Ubuntu的支持应该也是没问题的。 关于K8s源 因为国内的网络环境,我们在服务上明显是不能直接访问国外的镜像源的。所以我们找掌握寻找镜像源,以及在必要的时候自己制作镜像源的技能(因为云服务商的镜像源不一定同步了最新的版本)。 所以我们可以直接用阿里云的源,比如: cat >> /etc/yum.repos.d/kubernetes.repo <<EOF [kubernetes] name=Kubernetes baseurl=https://mirrors.aliyun.com/kubernetes/yum/repos/kubernetes-el7-x86_64/ enabled=1 gpgcheck=0 EOF 目前阿里云的源是1.7.5的,Kubernetes目前的稳定版本是1.8.x,1.9.x马上要发布了。可见过国内的源虽然可以用,但版本上不会特别新。 第二种办法是在国外服务器上下载镜像然后上传到国内服务器。这样的好处是可以任意选择自己想要的版本。具体可以参考使用上文中的《kubeadm安装kubernetes1.7》。 关于镜像 Kubernetes安装过程中一个很大的问题,在于相关组件的镜像都是托管在Google Container Registry上的。国内的镜像加速一般针对的是Dockerhub上的镜像。所以国内的服务器是没法直接安装GCR上的镜像的。 这个问题其实很好解决,首先我们可以自己在本地翻墙拉到镜像,并把镜像push到阿里云的镜像仓库。拉镜像上传的脚本如下: #!/bin/bash set -o errexit set -o nounset set -o pipefail KUBE_VERSION=v1.7.5 KUBE_PAUSE_VERSION=3.0 ETCD_VERSION=3.0.17 DNS_VERSION=1.14.4 GCR_URL=gcr.io/google_containers ALIYUN_URL=registry.cn-hangzhou.aliyuncs.com/muxi images=(kube-proxy-amd64:${KUBE_VERSION} kube-scheduler-amd64:${KUBE_VERSION} kube-controller-manager-amd64:${KUBE_VERSION} kube-apiserver-amd64:${KUBE_VERSION} pause-amd64:${KUBE_PAUSE_VERSION} etcd-amd64:${ETCD_VERSION} k8s-dns-sidecar-amd64:${DNS_VERSION} k8s-dns-kube-dns-amd64:${DNS_VERSION} k8s-dns-dnsmasq-nanny-amd64:${DNS_VERSION}) for imageName in ${images[@]} ; do docker pull $GCR_URL/$imageName docker tag $GCR_URL/$imageName $ALIYUN_URL/$imageName docker login docker push $ALIYUN_URL/$imageName docker rmi $ALIYUN_URL/$imageName done K8s每个版本需要的镜像版本号在kubeadm Setup Tool Reference Guide这个文档的的Running kubeadm without an internet connection一节里有写。所以可以根据安装的实际版本来跳帧这个脚本的参数。注意把上面的镜像地址换成自己的。muxi是你创建的一个namespace,而不是仓库名。...

October 26, 2017

使用Kubeadm 1.6部署Kubernetes

本文介绍了如何用Kubeadm 1.6版在Ubuntu 16.04系统上快速部署一个Kubernetes集群。 环境 阿里云ECS 华南1 可用区A Ubuntu 16.04.2 LTS (GNU/Linux 4.4.0-63-generic x86_64) 专有网络 节点类型 配置 内网IP MASTER 1 CPU 1GB RAM 172.18.214.46 Node 1 CPU 2GB RAM 172.18.214.47 依赖安装&&代理设置 首先要在两个节点都安装Docker和Kubernetes相关的组件。因为相关的镜像都在墙外,所以这里需要挂代理或者自行寻找墙内的源。笔者选择的是挂代理的方案,给Ubuntu配置HTTP代理可以参考这篇博客。给Docker配置代理可以参考官方文档 安装的步骤是按照官网的文档Installing Kubernetes on Linux with kubeadm来的: # 升级包管理的镜像列表 apt-get update && apt-get install -y apt-transport-https # 将docker和kubernetes相关的镜像源加入列表 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 http://apt.kubernetes.io/ kubernetes-xenial main EOF apt-get update # 安装docker和kubernetes相关组件 apt-get install -y docker-engine apt-get install -y kubelet kubeadm kubectl kubernetes-cni 初始化 在MASTER节点运行:...

May 24, 2017