本文中未加明显说明,将在所有机器上操作
系统环境: CetntOS 7
Docker版本:ce-v18.09.5
kubeneter版本: v1.14.1
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 -F2、关闭所有服务器selinux
$ setenforce 0 $ sed -i 's/SELINUX=enforcing/SELINUX=disabled/g' /etc/selinux/config3、关闭所有服务器的交换分区(swap)
$ swapoff -a $ sed -ri 's/.*swap.*/#&/' /etc/fstab4、添加主机hosts记录
$ vim /etc/hosts 192.168.1.21 k8s-master 192.168.1.22 k8s-node01 192.168.1.23 k8s-node025、其他
$ 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-engine2、安装依赖
$ yum install -y yum-utils \ device-mapper-persistent-data \ lvm23、添加docker yum源
$ yum-config-manager \ --add-repo \ https://download.docker.com/linux/CentOS/docker-ce.repo4、安装docker ce
$ yum install docker-ce docker-ce-cli containerd.io5、添加系统服务并启动
$ systemctl enable docker $ systemctl start docker6、添加镜像加速器
使用Daocloud提供的镜像加速服务
$ curl -sSL https://get.daocloud.io/daotools/set_mirror.sh | sh -s $ systemctl restart docker7、验证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 EOFb. 安装
$ yum install -y kubelet kubeadm kubectl2、下载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.sh3、初始化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通信。