Kubernetes 实战(一)-Kubernetes 集群搭建,java 注解扫描原理
$ swapoff -a
要永久禁掉 swap 分区,打开如下文件注释掉 swap 那一行
$ vim /etc/fstab
关闭 SELinux
临时关闭
$ getenforce
$ setenforce 0
永久关闭
$ vim /etc/selinux/config ?
改:7SELINUX=enforcing???? #前面的 7,表示文档中第 7 行。方便你查找
为:7SELINUX=disabled
$ reboot
配置转发参数
配置转发相关参数,否则可能会出错
$ cat <<EOF > /etc/sysctl.d/k8s.conf
net.bridge.bridge-nf-call-ip6tables = 1
net.bridge.bridge-nf-call-iptables = 1
vm.swappiness=0
EOF
$ sysctl --system
三、Kubernetes 集群搭建
3.1、安装 kubeadm 和相关工具
首先配置 yum 源,官方 yum 源的地址为 [https://packages.cloud.google.com/yumrepos/kubernetes-el7-x86_64](
)。如果无法访问官网 yum 源的地址,则可以使用国内的一个 yum 源,地址为 [http://mirrors.aliyun.com/kubernetes/yum/repos/kubernetes-el7-x86_64/](
),yum 源的配置文件/etc/yum.repos.d/kubernetes.repo 的内容如下:
[kubernetes]
name=Kubernetes Repository
baseurl=http://mirrors.aliyun.com/kubernetes/yum/repos/kubernetes-el7-x86_64
enabled=1
gpgcheck=0
然后运行 yum install 命令安装 kubeadm 和相关工具:
$ yum install -y kubeadm-1.14.0 kubectl-1.14.0 kubelet-1.14.0 --disableexcludes=kubernetes
运行下面的命令,启动 Docker 服务(如果已安装 Docker,则无须再次启动)和 kubelet 服务,并设置为开机自动启动:
$ systemctl enable docker && systemctl start docker
$ systemctl enable kubelet && systemctl start kubelet
3.2、kubeadm config
kubeadm 已经进入 GA 阶段,其控制面初始化和加入节点步骤都支持大量的可定制内容,因此 kubeadm 还提供了配置文件功能用于复杂定制。同时,kubeadm 将配置文件以 ConfigMap 的形式保存到集群之中,便于后续的查询和升级工作。 kubeadm config 子命令提供了对这一组功能的支持(详情见《Kubernetes 权威指南 第四版》58 页),例如,执行 kubeadm config print init-defaults,可以取得初始化参数文件:
$ kubeadm config print init-defaults > init.default.yaml
对生成的文件进行编辑,可以按需生成合适的配置。例如,若需要定制镜像仓库的地址,以及 Pod 的地址范围,则可以使用如下配置:
apiVersion: kubeadm.k8s.io/v1beta1
kind: ClusterConfiguration
imageRepository: docker.io/dustise
kubernetesVersion: v1.14.0
networking:
podSubnet: "192.168.0.0/16"
将上面的内容保存为 init-config.yaml 备用。
3.3、下载 Kubernetes 的相关镜像
为了从国内的镜像托管站点获得镜像加速支持,建议修改 Docker 的配置文件,增加 Registry Mirror 参数,将镜像配置写入配置参数中,例如 echo '{"registry-mirrors":["https://almtd3fa.mirror.aliyuncs.com"]}' > /etc/docker/daemon.json,然后重启 Docker 服务。
使用 config images pull 子命令下载所需镜像:
$ kubeadm config images pull --config=init-config.yaml
如果上述命令不能下载镜像,可以尝试以下方法进行下载:
首先我们通过执行以下命令知道该节点的 kubeadm 所依赖的所有镜像名称(tag),命令如下:
$ kubeadm config images list
该节点 kubeadm 所依赖的所有镜像名称(tag),图示如下:
然后再通过执行以下命令获得依赖镜像的下载脚本(从 docker.io/mirrorgooglecontainers 镜像仓库下载),命令如下:
$ kubeadm config images list |sed -e 's/^/docker pull /g' -e 's#k8s.gcr.io#docker.io/mirrorgooglecontainers#g'
依赖镜像资源下载的命令列表,图示如下:
我们依次执行以上命令下载对应镜像即可,不过上述命令中的最后一条的?coredns:1.3.1 在?mirrorgooglecontainers 仓库中不存在,需要从?coredns 仓库进行另行下载(注意 coredns:1.3.1 是从另外一个仓库下载的),命令如下:
docker pull docker.io/mirrorgooglecontainers/kube-apiserver:v1.14.0
docker pull docker.io/mirrorgooglecontainers/kube-controller-manager:v1.14.0
docker pull docker.io/mirrorgooglecontainers/kube-scheduler:v1.14.0
docker pull docker.io/mirrorgooglecontainers/kube-proxy:v1.14.0
docker pull docker.io/mirrorgooglecontainers/pause:3.1
docker pull docker.io/mirrorgooglecontainers/etcd:3.3.10
docker pull coredns/coredns:1.3.1
将上述命令下载下来的所有镜像统一修改标签为我们所依赖的正确的镜像名称(tag),命令如下:
docker tag mirrorgooglecontainers/kube-proxy:v1.14.0 k8s.gcr.io/kube-proxy:v1.14.0
docker tag mirrorgooglecontainers/kube-controller-manager:v1.14.0 k8s.gcr.io/kube-controller-manager:v1.14.0
docker tag mirrorgooglecontainers/kube-apiserver:v1.14.0 k8s.gcr.io/kube-apiserver:v1.14.0
docker tag mirrorgooglecontainers/kube-scheduler:v1.14.0 k8s.gcr.io/kube-scheduler:v1.14.0
docker tag mirrorgooglecontainers/etcd:3.3.10 k8s.gcr.io/etcd:3.3.10
docker tag mirrorgooglecontainers/pause:3.1 k8s.gcr.io/pause:3.1
docker tag coredns/coredns:1.3.1 k8s.gcr.io/coredns:1.3.1
最后执行以下命令删除原镜像,命令如下:
docker images|grep mirrorgooglecontainers|awk '{print "docker rmi",1":"$2}'|sh -x
$ docker rmi coredns/coredns:1.3.1
如果想将上述镜像列表导出到本地,命令如下:
docker images|grep k8s.gcr.io|awk -F '/' '{print 2}'|awk '{print "docker save -o "1":"$2""}'|sh -x
如果上述两种方法都不能成功下载相关镜像,则****可以使用国内的阿里镜像仓库,init-config.yaml 内容如下:
apiVersion: kubeadm.k8s.io/v1beta1
kind: ClusterConfiguration
imageRepository: registry.aliyuncs.com/google_containers
kubernetesVersion: v1.14.0
networking:
podSubnet: "192.168.0.0/16"
使用 config images pull 子命令下载所需镜像:
$ kubeadm config images
pull --config=init-config.yaml
注:以上是 v1.14.0 版本的依赖镜像下载方法,如果需要下载其他版本的 Kubernetes 镜像,可以将 v1.14.0 换为其它有效版本即可,如:v1.15.3。
上述步骤完成之后,就可以进行 k8s 集群的初始化了。
3.4、运行 kubeadm init 命令安装 Master
至此,准备工作已就绪,执行 kubeadm init 命令即可一键安装 Kubernetes 的 Master。
在开始之前需要注意:kubeadm 的安装过程不涉及网络插件(CNI)的初始化,因此 kubeadm 初步安装完成的集群不具备网络功能,任何 Pod 包括自带的 CoreDNS 都无法正常工作。而网络插件的安装往往对 kubeadm init 命令的参数有一定的要求。例如,安装 Calico 插件时需要指定 --pod-network-cidr=192.168.0.0/16,详情可参考 [https://kubernetes.io/docs/setup/production-environment/tools/kubeadm/create-cluster-kubeadm/#pod-network](
)。
首先我们需要给每一个节点起一个主机名(主节点可以叫 master,从节点可以叫 slave),传送门如下:
[Centos7 永久更改主机名](
)
然后使用 kubeadm init 命令,使用前面创建的配置文件进行集群控制面的初始化:
$ kubeadm init --config=init-config.yaml
等待一段时间后,Kubernetes 的 Master 安装成功,显示如下信息:
评论