栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 系统运维 > 运维 > Linux

Kubernetes实战(一)-Kubernetes集群搭建

Linux 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

Kubernetes实战(一)-Kubernetes集群搭建

临时关闭

$ getenforce

$ setenforce 0

永久关闭

$ vim /etc/selinux/config

改:7SELINUX=enforcing     #前面的7,表示文档中第7行。方便你查找 为:7SELINUX=d
【一线大厂Java面试题解析+后端开发学习笔记+最新架构讲解视频+实战项目源码讲义】

浏览器打开:qq.cn.hn/FTf 免费领取

isabled

$ reboot

配置转发参数

配置转发相关参数,否则可能会出错

$ cat < /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”.tar k8s.gcr.io/”$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 安装成功,显示如下信息:

Your Kubernetes control-plane has initialized successfully!

To start using your cluster, you need to run the following as a regular user:

mkdir -p $HOME/.kube

sudo cp -i /etc/kubernetes/admin.conf $HOME/.kube/config

sudo chown ( i d − u ) : (id -u): (id−u):(id -g) $HOME/.kube/config

You should now deploy a pod network to the cluster.

Run “kubectl apply -f [podnetwork].yaml” with one of the options listed at:

https://kubernetes.io/docs/concepts/cluster-administration/addons/

Then you can join any number of worker nodes by running the following on each as root:

kubeadm join 192.168.3.206:6443 --token lh8hfg.0alfi6stfzkx2ogw

–discovery-token-ca-cert-hash sha256:7a6a6c4a444eb14ad2d93befe8c06ffc87f419f53e5c741c5e9addeff34020d8

按照提示执行下面的命令,复制配置文件到普通用户的home目录下:

$ mkdir -p $HOME/.kube

$ sudo cp -i /etc/kubernetes/admin.conf $HOME/.kube/config

$ sudo chown ( i d − u ) : (id -u): (id−u):(id -g) $HOME/.kube/config

这样就在 Master 上安装了 Kubernetes,但在集群内还没事有可用的 Node,并缺乏容器网络的配置。这里需要注意 kubeadm init 命令执行完成后的最后几行提示信息,其中包含加入节点的指令(kubeadm join)和所需的Token。

3.5、安装 Node,加入集群

对于新节点的添加,系统准备和 Kubernetes yum 源的配置过程是一致的,这里就不做赘述了,加入集群的命令就是上文中所打出来的命令,只需要在 Node 节点上执行一下就可以了

kubeadm join 192.168.3.206:6443 --token lh8hfg.0alfi6stfzkx2ogw

–discovery-token-ca-cert-hash sha256:7a6a6c4a444eb14ad2d93befe8c06ffc87f419f53e5c741c5e9addeff34020d8

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/451190.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号