kubeadm部署kubernetes集群

本文中未加明显说明,将在所有机器上操作
系统环境: CetntOS 7
Docker版本:ce-v18.09.5
kubeneter版本: v1.14.1

IP地址主机名担任角色
192.168.1.21   k8s-master   master  
192.168.1.22   k8s-node01   node  
192.168.1.23   k8s-node02   node  
安装前准备

1、关闭所有机器的防火墙

$ systemctl stop firewalld $ systemctl disable firewalld $ iptables -F

2、关闭所有服务器selinux

$ setenforce 0 $ sed -i 's/SELINUX=enforcing/SELINUX=disabled/g' /etc/selinux/config

3、关闭所有服务器的交换分区(swap)

$ swapoff -a $ sed -ri 's/.*swap.*/#&/' /etc/fstab

4、添加主机hosts记录

$ vim /etc/hosts 192.168.1.21 k8s-master 192.168.1.22 k8s-node01 192.168.1.23 k8s-node02

5、其他

$ echo "1" >/proc/sys/net/bridge/bridge-nf-call-iptables 部署Docker环境

所有节点都安装

1、卸载旧的docker环境

$ yum remove docker \ docker-client \ docker-client-latest \ docker-common \ docker-latest \ docker-latest-logrotate \ docker-logrotate \ docker-engine

2、安装依赖

$ yum install -y yum-utils \ device-mapper-persistent-data \ lvm2

3、添加docker yum源

$ yum-config-manager \ --add-repo \ https://download.docker.com/linux/CentOS/docker-ce.repo

4、安装docker ce

$ yum install docker-ce docker-ce-cli containerd.io

5、添加系统服务并启动

$ systemctl enable docker $ systemctl start docker

6、添加镜像加速器

使用Daocloud提供的镜像加速服务

$ curl -sSL https://get.daocloud.io/daotools/set_mirror.sh | sh -s $ systemctl restart docker

7、验证docker

$ docker run --rm hello-world 部署k8s环境

1、安装组件(kubelet、kubeadm、kubectl)

所有节点都需要安装
kubelet运行在Cluster所有节点上,负责启动Pod和容器。
kubeadm用于初始化Cluster。
kubect I是Kubernetes命令行工具。通过kubectI可以部署和管理
应用,查看各种资源,创建、删除和更新各种组件。

a. 添加安装组件yum源

如果机器可以FQ,则可以直接使用一下命令安装

$ cat <<EOF > /etc/yum.repos.d/kubernetes.repo [kubernetes] name=Kubernetes baseurl=https://packages.cloud.google.com/yum/repos/kubernetes-el7-x86_64 enabled=1 gpgcheck=1 repo_gpgcheck=1 gpgkey=https://packages.cloud.google.com/yum/doc/yum-key.gpg https://packages.cloud.google.com/yum/doc/rpm-package-key.gpg EOF

推荐安装(使用阿里镜像安装)

$ cat <<EOF > /etc/yum.repos.d/kubernetes.repo [kubernetes] name=Kubernetes baseurl=https://mirrors.aliyun.com/kubernetes/yum/repos/kubernetes-el7-x86_64 enabled=1 gpgcheck=1 repo_gpgcheck=1 gpgkey=https://mirrors.aliyun.com/kubernetes/yum/doc/yum-key.gpg https://mirrors.aliyun.com/kubernetes/yum/doc/rpm-package-key.gpg EOF

b. 安装

$ yum install -y kubelet kubeadm kubectl

2、下载k8s所需要的镜像

此处镜像使用阿里云构建的国内镜像源,由于k8s版本过高docker官网提供的仓库缺少部分指定版本的镜像

镜像映射文件

$ vim images k8s.gcr.io/kube-apiserver:v1.14.1=registry.cn-beijing.aliyuncs.com/musker/kube-apiserver:v1.14.1 k8s.gcr.io/kube-controller-manager:v1.14.1=registry.cn-beijing.aliyuncs.com/musker/kube-controller-manager:v1.14.1 k8s.gcr.io/kube-scheduler:v1.14.1=registry.cn-beijing.aliyuncs.com/musker/kube-scheduler:v1.14.1 k8s.gcr.io/kube-proxy:v1.14.1=registry.cn-beijing.aliyuncs.com/musker/kube-proxy:v1.14.1 k8s.gcr.io/pause:3.1=registry.cn-hangzhou.aliyuncs.com/google_containers/pause:3.1 k8s.gcr.io/etcd:3.3.10=registry.cn-hangzhou.aliyuncs.com/google_containers/etcd:3.3.10 k8s.gcr.io/coredns:1.3.1=registry.cn-hangzhou.aliyuncs.com/google_containers/coredns:1.3.1 quay.io/coreos/flannel:v0.11.0-amd64=registry.cn-beijing.aliyuncs.com/musker/flannel:v0.11.0-amd64

镜像下载脚本

$ vim load_images.sh #/bin/bash file="images" if [ -f "$file" ] then echo "$file found." while IFS='=' read -r key value do #echo "${key}=${value}" docker pull ${value} docker tag ${value} ${key} docker rmi ${value} done < "$file" else echo "$file not found." fi

下载镜像

$ chmod +x load_images.sh $ ./load_images.sh

3、初始化master(master节点执行)

$ kubeadm init --apiserver-advertise-address=192.168.1.21 --pod-network-cidr=10.224.0.0/16 参数解释: --apiserver-advertise-address 指定master的那个interface与cluster的其他节点通信,如果master有多个interface,建议明确指定,如果不指定,kubeadm回自动选择有默认网关的interface --pod-network-cidr 指定pod网络的范围。kubernetes支持多种网络方案,而且不网络方案对此参数有自己的要求,这里设置10.224.0.0/16是因为本文将使用flannel网络方案,必须设置成这个CIDR。

kubeadm初始化过程:

(1) kubeadm执行初始化前的检查

(2) 生成token和证书。

(3) 生成Kube Config文件,kubelet需要用这个文件与Master通信。

内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:https://www.heiqu.com/073196ff219e80eb31503daae910649d.html