一、部署版本
(1)docker 19.03.13
(2)kubernetes 1.19.4
二、部署流程
(1)k8s部署环境准备
(2)安装docker
(3)安装kubeadm,kubelet 和 kubectl
(4)部署Kubernetes master和node节点
三、部署环境要求
(1)一台或多台机器(建议初步两台),操作系统CentOS 7.x-86_x64
(2)硬件配置:内存2GB或以上,CPU 2核或以上;
(3)集群内各个机器之间能相互通信;
(4)集群内各个机器可以访问外网,需要拉取镜像(非必须大不了手动安装);
(5)禁止swap分区;
四、部署环境准备
我准备了两台虚拟机:
192.168.153.128 准备做master节点
192.168.153.129 准备做node节点
两台都执行以下命令:
(1)关闭防火墙和selinux
systemctl stop firewalld
systemctl disable firewalld
sed -i 's/enforcing/disabled/' /etc/selinux/config #永久
setenforce 0 #临时
(2)关闭swap分区(k8s禁止虚拟内存以提高性能)
sed -ri 's/.*swap.*/#&/' /etc/fstab #永久
swapoff -a #临时
(3)添加主机名映射关系
echo '''
192.168.153.128 k8s-master-128
192.168.153.129 k8s-node-129
''' >> /etc/hosts
(4)设置网桥参数
cat > /etc/sysctl.d/k8s.conf << EOF
net.bridge.bridge-nf-call-ip6tables = 1
net.bridge.bridge-nf-call-iptables = 1
EOF
sysctl --system #生效
五、安装docker
两台都需要执行
(1)更新docker的yum源
wget https://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo -O /etc/yum.repos.d/docker-ce.repo
(2)安装指定版本的docker
yum install docker-ce-19.03.13 -y
(3)docker启动和设置开机自启动
systemctl start docker
systemctl enable docker
(4)配置加速器加速下载
vim /etc/docker/daemon.json
# 修改为如下
{
"registry-mirrors": ["https://registry.docker-cn.com"]
}
(5)重启docker
systemctl restart docker
六、安装kubeadm,kubelet 和 kubectl
Kubelet:运行在cluster所有节点上,负责启动POD和容器;
Kubeadm:用于初始化cluster的一个工具;
Kubectl:kubenetes命令行工具,通过kubectl可以部署和管理应用,查看各种资源,创建,删除和更新组件;
两台都需要执行
(1)添加k8s的阿里云yum源
cat > /etc/yum.repos.d/kubernetes.repo << EOF
[kubernetes]
name=Kubernetes
baseurl=https://mirrors.aliyun.com/kubernetes/yum/repos/kubernetes-el7-x86_64
enabled=1
gpgcheck=0
repo_gpgcheck=0
gpgkey=https://mirrors.aliyun.com/kubernetes/yum/doc/yum-key.gpg https://mirrors.aliyun.com/kubernetes/yum/doc/rpm-package-key.gpg
EOF
(2)安装 kubeadm,kubelet 和 kubectl
yum install kubelet-1.19.4 kubeadm-1.19.4 kubectl-1.19.4 -y
(3)kubelet 启动和设置开机自启
systemctl start kubelet
systemctl enable kubelet
七、部署Kubernetes master和node节点
(1)部署master节点(在master机器上执行)
kubeadm init --apiserver-advertise-address=192.168.153.128 --image-repository registry.aliyuncs.com/google_containers --kubernetes-version v1.19.4 --service-cidr=10.96.0.0/12 --pod-network-cidr=10.244.0.0/16
service-cidr 的选取不能和pod-network-cidr 及本机网络有重叠或者冲突,一般可以选择一个本机网络和pod-network-cidr都没有用到的私网地址段,比如pod-network-cidr使用10.244.0.0/16, 那么service-cidr可以选择10.96.0.0/12,网络无重叠冲突即可;
成功执行后会显示一串命令用于node加入,保存一下
(2)成功后执行以下命令(在master机器上执行)
mkdir -p $HOME/.kube
cp -i /etc/kubernetes/admin.conf $HOME/.kube/config
chown $(id -u):$(id -g) $HOME/.kube/config
(3)部署node节点,把node节点加入Kubernetes master中(在node机器上执行)
执行的命令就是kubeadm init最后输出的kubeadm join命令:
kubeadm join 192.168.153.128:6443 --token bc7b6i.zfnziwgssx055q24 --discovery-token-ca-cert-hash sha256:7383608ccb5e16c5f85e55dd667fbb2adaabb08c8d6155d13fb2cf1999a0a211
(4)可以查看下节点信息(在master机器上执行)
kubectl get nodes
如下:
(5)部署网络插件,节点之间通信(在master机器上执行)
wget https://raw.githubusercontent.com/coreos/flannel/master/Documentation/kube-flannel.yml
下载不下来的话就从这里拿吧:
链接:https://pan.baidu.com/s/15v6bV8S5EEU3P1PoFrIXvw
提取码:75ru
(6)应用kube-flannel.yml文件得到运行时容器(在master机器上执行)
kubectl apply -f kube-flannel.yml
(7)稍等一会在master上使用kubectl get nodes命令都是ready状态即成功