锅炉信息网 > 锅炉知识 > 锅炉学习

K8S集群的安装(更新)

发布时间:

之前结合实际经验写过一篇k8s集群安装的文章,但是针对的是老版本的安装方法,k8s的组件如今全部采用pod的方式运行,所以又重新安装了

之前结合实际经验写过一篇k8s集群安装的文章,但是针对的是老版本的安装方法,k8s的组件如今全部采用pod的方式运行,所以又重新安装了本地的集群,现将集群的安装过程整理记录如下。

集群规划如下

角色ip节点名称
master192.168.56.4v03
node1192.168.56.2v01
node2192.168.56.3v02

另外还有一台节点v04作为docker的私库,和集群的外挂磁盘所在节点。操作系统使用centos7。

首先集群的master节点要求必须2核以上,所以如果是使用vmware或者virtualbox,需要注意cpu的核数。

安装前的准备

1. 关闭防火墙

2. 关闭selinux

3. 关闭swap,注释掉 fstab中的 /dev/mapper/centos-swap

swapoff -anvi /etc/fstabn#/dev/mapper/centos-swap swap swap defaults 0 0

4. 修改sysctl的配置, 将net.bridge.bridge-nf-call-iptables设置为1

vi /etc/sysctl.confnnet.bridge.bridge-nf-call-ip6tables = 1nnet.bridge.bridge-nf-call-iptables = 1

安装docker

确保所有节点都要安装docker,因为现在k8s的所有组件都是基于pod的,所以即便是master节点,虽然它作为集群的管理节点不会运行我们自己的pod,但是k8s自己本身的组件,例如etcd,apiserver等都是运行在pod中,所以所有节点都需要安装docker。

首先获得docker的yum源,由于连接外网很不方便,而且速度慢,所以我们使用阿里云的yum源,包括后面下载docker镜像,使用的也是阿里源的源。然后安装docker-ce,并设置成开机启动。

wget https://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo -O /etc/yum.repos.d/docker-ce.reponyum install docker-cen systemctl enable dockernsystemctl start docker

配置自己的私有仓库(如果不适用私库,可以略过此步)

由于docker私库要求使用https,为了方便使用,我们使用insecure-registries。

编辑 /etc/docker/daemon.json, 加入下列内容

{ "insecure-registries":["<ip>:5000"] }

其中ip为私库ip,5000端口是默认的私库端口,如果是自定义的,改成相应的端口。

安装 kubelet、kubeadm 和 kubectl

首先设置yum源,添加阿里云为yum源

[kubernetes]nname=Kubernetesnbaseurl=http://mirrors.aliyun.com/kubernetes/yum/repos/kubernetes-el7-x86_64nenabled=1ngpgcheck=0nrepo_gpgcheck=0ngpgkey=http://mirrors.aliyun.com/kubernetes/yum/doc/yum-key.gpg http://mirrors.aliyun.com/kubernetes/yum/doc/rpm-package-key.gpg

然后安装kubectl,kubeadm,kubelet,并设置kubelet的开机启动

yum install kubectl kubeadm kubeletnsystemctl enable kubelet.service

kubectl是k8s的命令行工具

kubelet是用于启动pod和容器等

kubeadm用于启动集群,初始化集群

以上步骤需要在所有节点上执行,下面开始分别安装master和node节点。

安装master节点

初始化master节点

在master节点上执行以下命令进行初始化

kubeadm init --pod-network-cidr=10.244.0.0/16

--pod-network-cidr=10.244.0.0/16 是 k8s 的网络插件所需要用到的配置信息,用来给 node 分配子网段。我们使用的的网络插件是 flannel。

执行初始化之前会先做一些检查例如cpu核数等等。如果出现error,要先解决掉error然后重新运行init命令,检查通过后,会开始运行kubeadm的初始化操作,会从官网下载很多image,由于国内网络连接官网很慢,很可能会下载失败,所以我们可以使用阿里云的image,先下载下来,然后再给下载下来的镜像重新打上官网的标签,这样再执行初始化的时候就可以使用下载下来的本地镜像。运行以下命令来下载镜像

docker pull registry.cn-hangzhou.aliyuncs.com/google_containers/kube-apiserver:v1.19.0ndocker tag registry.cn-hangzhou.aliyuncs.com/google_containers/kube-apiserver:v1.19.0 k8s.gcr.io/kube-apiserver:v1.19.0ndocker pull registry.cn-hangzhou.aliyuncs.com/google_containers/kube-controller-manager:v1.19.0ndocker pull registry.cn-hangzhou.aliyuncs.com/google_containers/kube-scheduler:v1.19.0ndocker pull registry.cn-hangzhou.aliyuncs.com/google_containers/kube-proxy:v1.19.0ndocker pull registry.cn-hangzhou.aliyuncs.com/google_containers/pause:3.2ndocker pull registry.cn-hangzhou.aliyuncs.com/google_containers/etcd:3.4.9-1ndocker pull registry.cn-hangzhou.aliyuncs.com/google_containers/coredns:1.7.0ndocker tag registry.cn-hangzhou.aliyuncs.com/google_containers/kube-controller-manager:v1.19.0 k8s.gcr.io/kube-controller-manager:v1.19.0ndocker tag registry.cn-hangzhou.aliyuncs.com/google_containers/kube-scheduler:v1.19.0 k8s.gcr.io/kube-scheduler:v1.19.0ndocker tag registry.cn-hangzhou.aliyuncs.com/google_containers/kube-proxy:v1.19.0 k8s.gcr.io/kube-proxy:v1.19.0ndocker tag registry.cn-hangzhou.aliyuncs.com/google_containers/pause:3.2 k8s.gcr.io/pause:3.2ndocker tag registry.cn-hangzhou.aliyuncs.com/google_containers/etcd:3.4.9-1 k8s.gcr.io/etcd:3.4.9-1ndocker tag registry.cn-hangzhou.aliyuncs.com/google_containers/coredns:1.7.0 k8s.gcr.io/coredns:1.7.0

kubeadm运行完成后,会提示其他节点加入集群的方法,截图样例如下(由于安装时忘记截图,在网上找了一个截图的样例),如果想要其他节点加入集群根据提示操作即可

master节点的配置

k8s不推荐使用root用户操作,所以创建一个有root权限的用户,然后赋予root权限

添加用户k8s并设置密码nuseradd k8snpasswd k8sn使用户具有root权限nchmod 777 /etc/sudoersnvi /etc/sudoersnchmod 440 /etc/sudoers

切换至k8s账户,执行以下命令,即安装完kubeadm后提示的步骤

mkdir -p $HOME/.kubensudo cp -i /etc/kubernetes/admin.conf $HOME/.kube/confignsudo chown $(id -u):$(id -g) $HOME/.kube/config

运行以下命令安装pod网络(安装flannel),使pod可以相互通信

kubectl apply -f https://raw.githubusercontent.com/coreos/flannel/master/Documentation/kube-flannel.yml

至此,master节点安装完成

安装Node节点

在node节点上执行以下命令,即kubeadm安装完提示的命令,加入集群

kubeadm join 10.0.2.5:6443 --token vc1pde.0f1zq9w3osvx8on7 --discovery-token-ca-cert-hash sha256:b4b4c0661363ff0cb95eb4d68bfce605da64a563a3e834827784c08fbdc7f8ba

安装需要的镜像

在每一个 node 节点上我们还需要下载 quay.io/coreos/flannel:v0.11.0-amd64、k8s.gcr.io/pause 和 k8s.gcr.io/kube-proxy 这三个镜像,第一个可以直接下载,后两个仍然采用先从国内源下载然后打标签的方式

docker pull Quayndocker pull registry.cn-hangzhou.aliyuncs.com/google_containers/pause:3.2ndocker pull registry.cn-hangzhou.aliyuncs.com/google_containers/kube-proxy:v1.19.0ndocker tag registry.cn-hangzhou.aliyuncs.com/google_containers/kube-proxy:v1.19.0 k8s.gcr.io/kube-proxy:v1.19.0ndocker tag registry.cn-hangzhou.aliyuncs.com/google_containers/pause:3.2 k8s.gcr.io/pause:3.2

可以在master节点上运行命令 kubectl get nodes查看集群节点的状态。

至此node节点也安装完成。

其他设置


这里主要是设置nfs,我们使用nfs来做volume的映射。找一台vm做nfs的server,在集群的所有节点上安装nfs服务。并设置开机启动

yum install rpcbind nfs-utilsnsystemctl enable rpcbind.servicenservice rpcbind start

在server节点做如下配置

# cat /etc/exportsn/data/k8s/ 192.168.56.0/24(sync,rw,no_root_squash)

/data/k8s/ 是挂载的目录

192.168.56.0/24 是允许挂载的客户端ip的所在网段

synct同时将数据写入到内存与硬盘中,保证不丢失数据

rwt读写

no_root_squasht当NFS客户端以root管理员访问时,映射为NFS服务器的root管理员

在客户端使用showmount -e 192.168.56.5查看是否可以正常挂载,显示如下证明可以正常挂载

# showmount -e 192.168.56.5nExport list for 192.168.56.5:n/data/k8s 192.168.56.0/24

至此k8s的集群的安装已经完成。

上一篇:ZHS的日记簿

下一篇:k8s安装

精选推荐

  • 催化燃烧设备供应商
    催化燃烧设备供应商

    催化燃烧设备供应商,催化燃烧处理装置厂家,本装置是采用废气先进入喷淋塔过滤——干式过滤—-蜂窝活性碳吸附—脱附再生——催化燃

  • 该不该有模具供应商
    该不该有模具供应商

    今天红姐又来跟我探讨供应商的管理问题了。故事是这样的:供应商来料不良,原因是模具问题。而那个模具是我们找的一家模具供应商做的

  • 什么牌子高压锅好,高压锅哪个牌子好,高压锅什么牌子好,高压锅哪个品牌好
    什么牌子高压锅好,高压锅哪个牌子好,高

    1苏泊尔 双重安全阀门 高压锅双重安全阀,防烫把手,复合底。这款高压锅拥有双重安全阀门,更好的保证使用安全。搭载防烫伤把手,方便起

  • 高压锅啥牌子好,高压锅哪个牌子的好,什么高压锅牌子好,高压锅推荐选购指南
    高压锅啥牌子好,高压锅哪个牌子的好,什

    1、双喜阶梯型复底高压锅推荐理由:高压锅满足上蒸下煮,饭菜同时进行,方便快速,有效提升烹饪效率。多重安全防护,安全系数较高,家人使用

0