对于k8s来说,搭建方式有多种,如果是生产环境,一般来说,至少需要3台节点确保服务的高可用性,常用的搭建方式列举如下(提供参考):
kubeadm搭建(推荐)
一个K8s部署工具,提供kubeadm init和kubeadm join ;
用于快速搭建k8s集群,比较推荐(也是官方推荐的方式);
二进制包搭建
Minikube搭建
其他方式
Minikube 是一种轻量化的Kubernetes集群,是k8s社区为帮助开发者和学习者能够更好学习和体验k8s功能而推出的,使用个人PC虚拟化环境,或者低配的云服务器就快速构建启动单节点k8s,同时,在使用上来说,其命令的操作基本上与集群模式下没有太大差异。
阿里云(腾讯云) CentOS 7.x ,2核4g(至少,本篇操作的服务器为4核8G的配置);
在正式安装Minikube之前,需要确保当前服务器已经安装了docker;
为了便于后续的操作和演示,这里再对docker的搭建流程做下总结;
yum install -y yum-utils device-mapper-persistent-data lvm2
不设置的话,后面拉取镜像的时候可能会比较慢,建议设置一下;
sudo yum-config-manager --add-repo http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
yum list docker-ce --showduplicates | sort -r
根据上一步的结果,选择合适的版本进行安装
yum -y install docker-ce-20.10.21-3.el7
也可以不设置
systemctl enable docker.service
systemctl start docker
#查看docker 启动状态
systemctl status docker
配置阿里云镜像源
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
yum install -y kubectl-1.18.0
安装过程
curl -LO https://storage.googleapis.com/minikube/releases/v1.18.1/minikube-linux-amd64 && sudo install minikube-linux-amd64 /usr/local/bin/minikube
这个过程可能有点慢,需要耐心等待一会儿;
minikube version
看到下面的显示说明安装成功
minikube start --image-mirror-country='cn' --driver=docker --force
这个过程在初次启动的时候可能有点长,需要耐心等待一会,看到下面的内容说明启动成功,接下来就可以使用k8s的常用命令了;
kubectl cluster-info
kubectl get pod -A
通过上面的操作,完成了一个基于minikube搭建的一个单节点的k8s集群,接下来,我们将基于minikube单节点部署一个nginx应用,并能够通过公网访问;
安装下面的操作执行;
deployment是Pod控制器的一种(在上一篇组件中有详细的说明),通过deployment创建的pod, 如果删除pod后,还会自动创建新的pod,需要删除deployment才可以真正删除pod;
使用下面的命令创建一个nginx的deployment(版本可以根据自己的需要即可)
kubectl create deployment test-nginx --image=nginx:1.23.0
kubectl get deployment,pod,svc
这里的写法比较灵活,也可以写成: kubectl get deploy
kubectl expose deployment test-nginx --port=80 --type=NodePort
这时候再次查看时,可以发现service那一层就多出来了一个NodePort,而这个NodePort产生的IP就是对外的一个访问入口;
kubectl port-forward --address 0.0.0.0 service/test-nginx 80:80
kubectl port-forward 转发一个本地端口到 Pod 端口,不会返回数据,上面的命令的意思就是允许所有的IP地址进行访问,映射到k8s集群中上面启动的这个test-nginx服务上面来;
如果是阿里云服务器,请提前在网络安全组开放80端口限制
接下来在客户端的浏览器打开nginx,看到如下界面说明通过上面部署的nginx就可以正常使用了