写了一个脚本,避免重复的工作
#!/bin/bash set -e IMAGE_URL=registry.cn-hangzhou.aliyuncs.com/ IMAGE_URL_TAG=k8s.gcr.io # 这里为个人的阿里云镜像仓库账户 USER= PASSWD= REGNAME= docker login $IMAGE_URL -u $USER -p $PASSWD # 初始化集群需要的镜像 #IMAGE_LIST=(coredns:1.2.6 etcd-amd64:3.2.24 kube-apiserver-amd64:v1.13.1 kube-controller-manager-amd64:v1.13.1 kube-proxy-amd64:v1.13.1 kube-scheduler-amd64:v1.13.1 pause:3.1) for i in coredns:1.2.6 etcd-amd64:3.2.24 kube-apiserver-amd64:v1.13.1 kube-controller-manager-amd64:v1.13.1 kube-proxy-amd64:v1.13.1 kube-scheduler-amd64:v1.13.1 pause:3.1 do docker pull $IMAGE_URL$REGNAME/$i echo "$i下载成功" done # flannel插件镜像 docker pull registry.cn-hangzhou.aliyuncs.com/mmyk8s/flannel:v0.10.0-amd64 docker tag registry.cn-hangzhou.aliyuncs.com/mmyk8s/kube-proxy-amd64:v1.13.1 k8s.gcr.io/kube-proxy:v1.13.1 docker tag registry.cn-hangzhou.aliyuncs.com/mmyk8s/kube-apiserver-amd64:v1.13.1 k8s.gcr.io/kube-apiserver:v1.13.1 docker tag registry.cn-hangzhou.aliyuncs.com/mmyk8s/kube-controller-manager-amd64:v1.13.1 k8s.gcr.io/kube-controller-manager:v1.13.1 docker tag registry.cn-hangzhou.aliyuncs.com/mmyk8s/kube-scheduler-amd64:v1.13.1 k8s.gcr.io/kube-scheduler:v1.13.1 docker tag registry.cn-hangzhou.aliyuncs.com/mmyk8s/kube-scheduler-amd64:v1.13.1 k8s.gcr.io/kube-scheduler:v1.13.1 docker tag registry.cn-hangzhou.aliyuncs.com/mmyk8s/coredns:1.2.6 k8s.gcr.io/coredns:1.2.6 docker tag registry.cn-hangzhou.aliyuncs.com/mmyk8s/etcd-amd64:3.2.24 k8s.gcr.io/etcd:3.2.24 docker tag registry.cn-hangzhou.aliyuncs.com/mmyk8s/flannel:v0.10.0-amd64 quay.io/coreos/flannel:v0.10.0-amd64 docker tag registry.cn-hangzhou.aliyuncs.com/mmyk8s/pause:3.1 k8s.gcr.io/pause:3.1 echo “标签修改成功”每个节点都需要这些镜像!
还有一种方法没用实践过,在下文中初始化集群使用的是第一种方式,在第二种方式中,imageRepository: k8s.gcr.io指定了镜像仓库地址,是否可以改为国内地址或者自己的私有仓库地址,这样就不用tag了。
部署kuberneters集群kubeadm是用于快速构建Kubernetes集群的工具,随着Kubernetes的发行版本而提供,使用它构建集群时,大致可分为如下几步:
在Master及各Node安装Docker、kubelet及kubeadm,并以系统守护进程的方式启动Docker和kubelet服务。
在Master节点上通过kubeadminit命令进行集群初始化。
各Node通过kubeadmjoin命令加入初始化完成的集群中。
在集群上部署网络附件,如flannel或Calico等以提供Service网络及Pod网络。
为了简化部署过程,kubeadm使用一组固定的目录及文件路径存储相关的配置及数据文件,其中/etc/kubernetes目录是所有文件或目录的统一存储目录。它使用/etc/kubernetes/manifests目录存储各静态Pod资源的配置清单,用到的文件有etcd.yaml、kube-apiserver.yaml、kube-controller-manager.yaml和kube-scheduler.yaml四个,它们的作用基本能够见名知义。另外,/etc/kubernetes/目录中还会为Kubernetes的多个组件存储专用的kubeconfig文件,如kubelet.conf、controller-manager.conf、scheduler.conf和admin.conf等,它们分别为相关的组件提供接入APIServer的认证信息等。此外,它还会在/etc/kubernetes/pki目录中存储若干私钥和证书文件
设定容器运行的环境这里基本就是docker的安装和一些简单的配置
安装kubelet和kubeadm