k8s 发行版(k8s 发行版o)

k8s 发行版(k8s 发行版o)1 概述 k8s 的部署常见的工具和环境 1 IaaS 虚拟机 nbsp nbsp nbsp nbsp 1 1 托管模型 部署在公有云上 K8SaaS 目前没有用于生产环境 nbsp nbsp nbsp nbsp 1 2VPS 和本地物理机搭建一样 但是这里网络是虚拟网络了 2 物理机 nbsp

大家好,我是讯享网,很高兴认识大家。



1 概述

k8s的部署常见的工具和环境:

1,IaaS(虚拟机):

     1.1托管模型,部署在公有云上,K8SaaS,目前没有用于生产环境

     1.2VPS,和本地物理机搭建一样,但是这里网络是虚拟网络了

2,物理机:

     3.1 构建工具 Rancher 2.0

     3.2 OpenShift(PaaS),红帽的官方发行版,在这个版本里有k8s相关的包

     还有很多工具可以实现

3,kubeadm部署

4,借助于工具kubespray,kopts部署

5,ansible,基于roles实现部署

k8s的两种部署方式

1.kubeadm方式部署,k8s可以把k8s自身的大部分应用管控起来,即运行于pod上,但是kubelet和docker不能这样实现自托管,这两个主机运行为守护进程,因此,只需要在所有主机都安装kubelet和docker,构建k8s集群。相当于是自举。etcd也是托管于pod上运行,使用kubeadm进行部署,安装过程相对简单。这些主件的pod一般为静态pod(不属于k8s管理),也可以运行为自托管的pod.每个主机都要运行flannel这个主件,可以运行为pod。flannel为动态pod

kubeadm的介绍可以查看如下链接

https://github.com/kubernetes/kubeadm/blob/master/docs/design/design_v1.10.md

通过kubeadm init 完成集群master节点的初始化,用kubeadm join加入集群

2:手动配置,主节点和node都主要组件运行为系统级的守护进程,每一步都需要手动处理,如证书和配置过程都是用手动配置的。另外,这种方式在github上有playbook自动化实现

    a).master:安装apiserver,scheduler,controller-manager,etcd,flanel

    b).node:安装kublet,kub-proxy,docker(container engine),flannel,需要多个节点

    c).etcd:安装etcd存储服务器,建议配置为高可用

这种方式,可以到https://github.com/kubernetes/kubernetes/blob/master/CHANGELOG-1.11.md#downloads-for-v1112下载相关的安装包,注意,master或者node都是要安装server端的包。client是交互时使用,也需要安装,不建议使用这种方式安装,难度较高

本文仅介绍使用kubeadm实现k8s集群安装

2 集群安装

最关键,服务器的资源至少为2G内存,否则初始化k8s会报错

默认情况下,会到google托管的站点下载所有的镜像

使用kubeadm安装,默认网络如下:

pod的默认ip 为 10.244.0.0/16

service的默认ip  10.92.0.0/12

节点网络为:172.20.0.0/16

docker要和k8s结合使用,首先要先通过k8s认证,否则会报警。目前k8s只认证到17.03.02之前的版本

准备三台主机,分别安装docker和kubelet,其他服务都是通过自托管实现

安装步骤如下三步

1.master和node 安装 kubelet,kubeadm,docker

2.mster:kubeadm init

3.nodes:kubeadm join

第2和3步,相关步骤查看https://github.com/kubernetes/kubeadm/blob/master/docs/design/design_v1.10.md

所有服务器需要安装docker-ce,kubeadm,kubelet,kubectl这四个包

2.1 环境准备

关闭防火墙,selinux,基于主机名访问(dns或者dns),同步时间(时间不一致,集群运行异常,如不能启动),关闭swap分区

三台主机的hosts文件如下

所有的主机,内存至少2G以上

关闭swap分区

关闭防火墙


使用时间服务器同步所有的k8s集群服务器,防止出现异常,centos7使用chrony来同步时间

2.2 安装docker-ce

使用清华或者阿里云的镜像源


安装命令

配置docker镜像加速


阿里云上有大量的镜像,所以建议使用阿里云进行加速

由于k8s安装有很多镜像国内下载不到,因为编辑如下的配置文件可以找到需要的镜像,启动docker前,在Service配置段里定义环境变量,Environment,表示通过这个代理去加载k8s所需的镜像,加载完成后,可以注释掉,仅使用国内的加速器来拉取非k8s的镜像,后续需要使用时,再开启。


2.3 k8s集群master节点安装

k8s集群节点都要安装kubeadm,kubelet,kubectl

使用kubeadm官方文档:https://kubernetes.io/docs/setup/independent/install-kubeadm/

官方的k8s包仓库为https://packages.cloud.google.com/yum/repos/kubernetes-el7-x86-64,这个站点国内目前打不开,建议使用国内具有k8s包的站点,这里建议使用阿里云站点

https://mirrors.aliyun.com/kubernetes/yum/repos/kubernetes-el7-x86_64/

编辑k8s仓库源文件

然后再安装即可

安装软件

当前,这边安装的版本为1.11.2

安装k8s集群,kubeadm会读取/etc/systemd/system/kubelet.service.d/10-kubeadm.conf文件的配置信息,更改cgroup的驱动,这里的驱动要要docker一致,因此用docker info| grep Cgroup命令查看docker的驱动类型,如这里查到的结果为 cgroupfs.因此修改kubeadm的配置文件如下

#添加如下配置

启动kubelet

注意,此时启动会出现报错,查看/var/log/messages的日志

tail -f /var/log/messages

如果出现如下的报错

failed to load Kubelet config file /var/lib/kubelet/config.yaml, error failed to read kubelet config file "/var/lib/kubelet/config.yaml", error: open /var/lib/kubelet/config.yaml: no such file or directory

忽略以上的报错,设置为开机自启动即可,因为此时的配置还没初始化完成,所以此时不能启动kubelet,等后续kubeadm启动成功后再查看

设置开机启动


讯享网

初始化kubeadm

查看kubeadm相关的参数

建议执行 swapoff -a 关闭swap分区,不用配置上述选项

开始初始化

初始化过程的报错

/var/log/messages日志出现如下的报错,很有可能是服务器的资源,尤其是内存太小,导致节点启动不成功

eviction_manager.go:243] eviction manager: failed to get get summary stats: failed to get node info: node "server74" not found

添加内存资源,centos7建议最后为2G内存

只有遇到如下的日志,k8s才是安装成功

Successfully registered node server74

镜像加载注意事项

初始化过程,默认会到gcr.io/google_containers站点拉取相关k8s的镜像信息,当前国内不能进行这些站点的访问,如果网络不能访问google,则会出现镜像录取失败的报错

https://console.cloud.google.com/gcr/images/google-containers?project=google-containers

v1.11.2版本初始化需要的镜像如下

k8s.gcr.io/kube-apiserver-amd64:v1.11.2

k8s.gcr.io/kube-controller-manager-amd64:v1.11.2

k8s.gcr.io/kube-scheduler-amd64:v1.11.2

k8s.gcr.io/kube-proxy-amd64:v1.11.2

k8s.gcr.io/pause:3.1

k8s.gcr.io/etcd-amd64:3.2.18

k8s.gcr.io/coredns:1.1.3

有个技术大牛把gcr.io的镜像每天同步到https://github.com/anjia0532/gcr.io_mirror这个站点,因此,如果需要用到gcr.io的镜像,可以执行如下的脚本进行镜像拉取

执行如下的脚步进行安装

镜像拉取成功后再重新执行init命令

初始化命令执行成功后,执行如下的命令,启动集群


获取组件的健康状态

 

查看节点信息

这里status未就绪,是因为没有网络插件,如flannel.地址https://github.com/coreos/flannel可以查看flannel在github上的相关项目,执行如下的命令自动安装flannel


执行完上述命令后,会拉取flannel的镜像,可用docker image ls查看flannel镜像是否成功拉取,如quay.io/coreos/flannel :v0.10.0-amd64

镜像拉取成功后,一般会把启动起来。此时默认的node状态为Ready,如下


执行如下的命令,获取当前系统上所有在运行的pod的状态,指定名称空间为kube-system,为系统级的pod,命令如下


执行如下命令,获取当前系统的名称空间

2.4 node节点操作

yum仓库准备好后,在以下的两个节点上执行安装如下包,

关闭swap

开启转发的参数,根据实际报错情况开启,一般有如下三项


安装完成后

启动docker-ce

注意,kubelet此时不启动,因为缺配置文件,启动也会报错,所以不启动

设置开机启动,必须的操作

把配置文件拷贝到要加入该master节点的node上,保持配置一致。不是必须,建议操作

在server74 和 75 节点上,要执行如下的命令,加入master节点,注意,如下命令token和discovery-token-ca-cert-hash是随机生成,可以用命令查找,比较麻烦,建议安装成功后,在成功的信息中,如下的命令需要保存,后期方便加入主节点。

在node上执行上述命令成功后,信息如下

到这里从节点配置完成

2.5 验证

上述命令执行完成后,从节点同样需要到互联网上拉取flannel的镜像,并启动,因此需要一点时间,用docker images 查看是否成功拉取flannel镜像到本地,等flannel拉取成功启动后,在master上可以看到node的状态为Ready.

需要在主节点上执行如下的命令,查看node的信息

需要查看pod的详细信息,则添加选项-o wide

以上信息有server74这个从节点的信息,flannel和proxy都有两个pod

把server75也加进去后,在master server76上查看如下信息

到这里,k8s通过kubeadm搭建集群成功

小讯
上一篇 2025-04-30 20:05
下一篇 2025-05-28 11:39

相关推荐

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容,请联系我们,一经查实,本站将立刻删除。
如需转载请保留出处:https://51itzy.com/kjqy/191046.html