安装前准备

  1. 一台或多台机器,操作系统CentOS7.x86_x64 (我这里准备的3台,1台master和2台node节点)
  2. 硬件配置:2GB或更多RAM,2个CPU或更多CPU,硬盘30GB或更多
  3. 集群中所有机器之间网络互通
  4. 可以访问外网,需要拉取镜像
  5. 禁止swap分区

环境准备

master 192.168.1.140

node one 192.168.1.141

node two 192.168.1.142

分别在master和两个node中执行

#关闭防火墙
systemctl stop firewalld
systemctl disable firewalld
#关闭swap,如果pod放在swap内会降低工作效率
swapoff -a && sed -i '/swap/s/^\(.*\)$/#\1/g' /etc/fstab
#将桥连的IPv4流量传递到iptables的链中
cat > /etc/sysctl.d/k8s.conf << EOF
net.bridge.bridge.-nf-call-ip6tables = 1
net.bridge.bridge.-nf-call-iptables = 1
EOF

分别在master和两个node中安装docker

wget https://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo -O /etc/yum.repos.d/docker-ce.repo
yum -y install docker-ce
#创建docker阿里云加速
mkdir -p /etc/docker
cat > /etc/docker/daemon.json <<EOF
{
"registry-mirrors": ["https://indar3n3.mirror.aliyuncs.com"],
"exec-opts": ["native.cgroupdriver=systemd"],
"log-driver": "json-file",
"log-opts": {
"max-size": "100m"
}
}
EOF
systemctl daemon-reload && systemctl restart docker

添加kubernetes阿里云yum加速

#分别在master和两个node中安装docker
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

安装kubeadm、kubelet、kubectl

setenforce 0
yum -y install kubelet-1.18.0 kubeadm-1.18.0 kubectl-1.18.0
systemctl enable kubelet.service

初始化Master

kubeadm init \
--apiserver-advertise-address=192.168.1.140 \
--image-repository registry.aliyuncs.com/google_containers \
--kubernetes-version v1.18.0 \
--service-cidr=10.1.0.0/16 \
--pod-network-cidr=10.244.0.0/16

初始化完成后会输出加入集群的toker注意保存,如果没有及时保存可以通过命令重新获取

#在master执行
kubeadm token create --print-join-command
mkdir -p $HOME/.kube
cp -i /etc/kubernetes/admin.conf $HOME/.kube/config
chown $(id -u):$(id -g) $HOME/.kube/config

下载kube-flannel.yml官方文件

wget 
https://raw.githubusercontent.com/coreos/flannel/a70459be0084506e4ec919aa1c114638878db11b/Documentation/kube-flannel.yml

因为github国内访问比较困难,可以使用我已经下载好的yaml文件 下载地址

kubectl apply -f 文件路径/kube-flannel.yml

拉取flannel镜像文件

分别在master和node执行
docker pull lizhenliang/flannel:v0.11.0-amd64

node节点加入集群

#使用之前输入的toker分别在2个node节点加入集群
kubeadm join 192.168.1.142:6443 --token 63al9u.l5nl5thvsd25rlwx     --discovery-token-ca-cert-hash sha256:a8bd244c352aae30db6a86958d0c12105362a816b9779d2d49c3321e9a78e76d
#***** 不要复制我的命令,使用你master初始化完成后的toker,如果忘记保存使用之前的命令重新获取******

看到最后一句 “ Run ‘kubectl get nodes’ on the control-plane to see this node join the cluster” 表示已经加入集群中

#在master执行命令查看集群状态
kubectl get nodes
所有节点都Ready后集群部署完成,如果显示NoReady可以多等一会,节点初始化需要时间

安装Web图形化界面

下载Dashboard官方文件

https://github.com/kubernetes/dashboard/releases

如果访问github异常,可以使用我已经下载并配置好的文件 下载地址

下载完成后根据需求修改端口

安装dashboard

kubectl apply -f dashboard-recommended.yaml
#如果没有报错,所有pod都Create的话可以通过命令查看pod是否已经运行成功
kubectl get pod --all-namespaces
所有Pod都running后dashboard部署完成,打开浏览器输入 https://masterIP:30000
出现图形界面后去master获取token
kubectl describe secret -n kubernetes-dashboard $(kubectl get secret -n kubernetes-dashboard |grep  kubernetes-dashboard-token | awk '{print $1}') |grep token | awk '{print $2}'

复制token到界面登陆

至此全部组件安装完成!