一、安装前的准备工作
本实验使用1个master节点和2个node节点。
硬件配置(必要):2GB 或更多 RAM,2 个 CPU 或更多 CPU,硬盘 30GB 或更多
开始本实验之前请先按照 使用kubeadm搭建k8s集群的准备工作 进行实验前的准备工作
1.1、修改主机名
修改master主机名为:k8smaster
hostnamectl set-hostname k8smaster
修改node1主机名为:k8snode1
hostnamectl set-hostname k8snode1
修改node2主机名为:k8snode2
hostnamectl set-hostname k8snode2
1.2、在 master 添加 hosts
cat >> /etc/hosts << EOF
192.168.0.16 k8smaster
192.168.0.17 k8snode1
192.168.0.18 k8snode2
EOF
Ps:三台主机的ip地址按照自己电脑的情况而定
1.3、将桥接的 IPv4 流量传递到 iptables 的链
所有主机都需要设置
cat > /etc/sysctl.d/k8s.conf << EOF
net.bridge.bridge-nf-call-ip6tables = 1
net.bridge.bridge-nf-call-iptables = 1
EOF
sysctl --system # 生效
运行效果:
1.4、时间同步
所有主机都需要设置
yum install ntpdate -y
ntpdate time.windows.com
运行效果:
二、所有节点安装 Docker/kubeadm/kubelet
Kubernetes默认CRI(容器运行时)为Docker,因此先安装Docker。
友情提示:在
二、所有节点安装 Docker/kubeadm/kubelet
和三、部署 Kubernetes Master
的所有步骤必须一气呵成,中途不能断电或者断网,并且虚拟机的配置一定要使用本文推荐的配置,或更高配置
2.1、安装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-18.06.1.ce-3.el7 #设置要安装docker版本
$ systemctl enable docker && systemctl start docker #讲docker设置为开机启动
$ docker --version
运行效果:
当看到docker的版本时说明以上操作均成功
将docker仓库设置为阿里云的仓库
cat > /etc/docker/daemon.json << EOF
{
"registry-mirrors": ["https://b9pmyelo.mirror.aliyuncs.com"]
}
EOF
$ systemctl restart docker #设置好阿里云仓库之后需要重启docker
使用命令查看阿里云仓库是否设置成功
docker info
运行效果:
2.2、添加阿里云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.3、安装kubeadm,kubelet和kubectl
所有主机均需安装
$ yum install -y kubelet-1.18.0 kubeadm-1.18.0 kubectl-1.18.0
$ systemctl enable kubelet #设置为开机启动
三、部署 Kubernetes Master
第1步:在Master主机上执行
kubeadm init \
--apiserver-advertise-address=192.168.0.11 \
--image-repository registry.aliyuncs.com/google_containers \
--kubernetes-version v1.18.0 \
--service-cidr=10.96.0.0/12 \
--pod-network-cidr=10.244.0.0/16
参数说明:
- apiserver:当前节点的ip地址,也就是master主机的ip,需要手动设置一下
- image-repository:使用阿里云的镜像
- service-cidr和pod-network-cidr:只要和当前节点的ip地址不冲突就行,随意
Tip:由于默认拉取镜像地址k8s.gcr.io国内无法访问,这里指定阿里云镜像仓库地址。
运行效果:
拉取完成之后使用命令查看拉取的镜像
第2步:使用kubectl工具:
kubectl get nodes
运行效果:
四、加入Kubernetes Node
第1步:master主机获取join地址
kubeadm token create --print-join-command
运行效果:
第2步:在node主机运行上图红框命令加入Kubernetes Node
kubeadm join 192.168.0.16:6443 --token aglo62.gtx74iz9hzymplle --discovery-token-ca-cert-hash sha256:75c5d9ddaf48cd3bc23718d2ac38fd122eff91f564b7efea6c6cfae79e594538
运行效果:
第3步:在master主机查看node主机是否加入Kubernetes
kubectl get nodes
运行效果:
五、安装pod网络插件flanne
在master主机部署CNI网络插件
第1步:下载flanne
wget https://github.com/flannel-io/flannel/blob/master/Documentation/kube-flannel.yml
运行效果:
第2步:安装flanne
kubectl apply -f kube-flannel.yml
运行效果:
Ps:如果执行报错如下,是文件问题,使用我的kube-falannel.yml文件
error: error parsing kube-flannel.yml: error converting YAML to JSON: yaml: line 123: mapping values are not allowed in this context
kube-falannel.yml下载
第3步:查看flanne是否安装
kubectl get pods -n kube-system
运行效果:
六、测试k8s集群
在 Kubernetes 集群中创建一个 pod,验证是否正常运行,当前实验是在master中安装一个nginx,测试在node节点中是否可以成功访问这个nginx,如果可以则说明集群搭建成功
第1步:下载一个nginx
kubectl create deployment nginx --image=nginx
运行效果:
第2步:查看ngin是否pull成功
kubectl get pod
运行效果:
第3步:对外暴露80端口
kubectl get pod
$ kubectl create deployment nginx --image=nginx
$ kubectl expose deployment nginx --port=80 --type=NodePort
$ kubectl get pod,svc
访问地址:http://NodeIP:Port