从零开始部署k8s到运行server服务
sealos部署k8s,以及把docker-swarm的服务转移至k8s服务
1. sealos部署k8s
首先注意sealos安装的时候不能有docker,如果有docker
sudo apt remove docker
sudo apt autoremove
# 查询相关软件包dpkg -l | grep docker# 删除这个包sudo apt remove --purge 对应的包名
如果想安装docker
sudo apt install docker.io
执行以上命令卸载后,打开root的密码登陆
cd /etc/ssh
vim sshd_config #在找到#PermitRootLogin prohibit-password,默认是注释掉的。直接在下面添加一行:PermitRootLogin yes,然后按esc,输入:wq保存并退出。
同时记得更改主机名字为你想要的名字
vim /etc/hostname #更改名字后按esc输入wq保存
hostname master #直接更改主机名字
准备好sealos所必需的一些包,官网为sealos | sealos
$ wget https://sealyun-home.oss-accelerate.aliyuncs.com/images/buildah.linux.amd64 --no-check-certificate -O buildah
$ chmod a+x buildah && mv buildah /usr/bin
$ wget -c https://sealyun-home.oss-cn-beijing.aliyuncs.com/sealos-4.0/latest/sealos-amd64 -O sealos && \
chmod +x sealos && mv sealos /usr/bin
同时sealos还可以帮助你安装一下好用的小工具,例如helm,openebs等,可以自己在官网看,我们这里需要安装helm,以后会用到。
sealos run labring/helm:v3.8.2 # install helm
正式部署cluster
sealos run labring/kubernetes:v1.24.0 labring/calico:v3.22.1 \
--masters 10.6.5.221 \ #可以有无数个master
--nodes 10.6.5.222,10.6.5.223 -p 123456 #可以有无数个node,记得加上密码
至此,k8s集群部署完成。
2.给k8s部署dashboard,之后的ingress-nginx什么的改动用可视化工具都很方便。
一键就可以安装上了,但是没有连vpn的话,能不能连上网站挺看运气的,可以试试以下这个GitHub - 521xueweihan/GitHub520: 让你“爱”上 GitHub,解决访问时图裂、加载慢的问题。(无需安装)
kubectl apply -f https://raw.githubusercontent.com/kubernetes/1board/v2.6.0/aio/deploy/recommended.yaml
#直接一键部署,当然也可以上以上的网址看看dashboard和k8s版本的对应关系,我的k8s为1.24,所以dashboard安装为v2.6.0
同时这个版本好像需要你自己创建完一个service account后,才能获取token,我随便创建的名字叫admin user
kubectl apply -f dashboard-adminuser.yaml
apiVersion: v1
kind: ServiceAccount
metadata:
name: admin-user
namespace: kubernetes-dashboard
---
apiVersion: rbac.authorization.k8s.io/v1
kind: ClusterRoleBinding
metadata:
name: admin-user
roleRef:
apiGroup: rbac.authorization.k8s.io
kind: ClusterRole
name: cluster-admin
subjects:
- kind: ServiceAccount
name: admin-user
namespace: kubernetes-dashboard
经过以上过程后访问运行节点ip地址:端口号就可以看到dashboard了
https://10.6.5.223:31688/ 是我的访问地址
让你输入token的话,输入以下命令即可获得token,输入。
kubectl -n kubernetes-dashboard create token admin-user
看到以下场景代表已经成功,至此dashboard配置完成
3.给k8s用helm安装ingress-nginx
没有用helm直接拉取,因为我这边没有翻墙的原因,想要的仓库一直拉取不到,遂下载ingress-nginx的压缩包,自己写values.yaml下载了。不用我的方法,去helm官网找一个可以拉取到的效果应该一样
values.yaml如下
controller:
ingressClassResource:
name: nginx
enabled: true
default: true
controllerValue: "k8s.io/ingress-nginx"
admissionWebhooks:
enabled: false
replicaCount: 1
image:
# registry: k8s.gcr.io
# image: ingress-nginx/controller
# tag: "v1.1.0"
registry: registry.cn-hangzhou.aliyuncs.com
#image: unreachableg/k8s.gcr.io_ingress-nginx_controller
image: google_containers/nginx-ingress-controller
tag: "v1.1.2"
hostNetwork: true
nodeSelector:
kubernetes.io/hostname: master
affinity:
podAntiAffinity:
requiredDuringSchedulingIgnoredDuringExecution:
- labelSelector:
matchExpressions:
- key: kubernetes.io/hostname
operator: In
values:
- master
topologyKey: kubernetes.io/hostname
tolerations:
- key: node-role.kubernetes.io/master
operator: Exists
effect: NoSchedule
- key: node-role.kubernetes.io/master
operator: Exists
effect: PreferNoSchedule
同时因为我想把ingress跑在master,而master有taints不允许跑pod,我们先去掉污点,当然要是把ingress跑在非master节点就不需要管这个了
kubectl taint nodes master node-role.kubernetes.io/control-plane:NoSchedule- #去掉污点
kubectl taint nodes master node-role.kubernetes.io/control-plane:NoSchedule #加污点,区别只是-
kubectl taint nodes master node-role.kubernetes.io/master:NoSchedule-
把values.yaml和ingress-nginx ingress-nginx-4.1.2.tgz放在一个文件夹后即可安装成功
helm install ingress-nginx ingress-nginx-4.1.2.tgz --create-namespace -n ingress-nginx -f values.yaml
至此,ingress-nginx布置成功
4.部署正式服务
首先把要用的配置文件拉取过来,键入以下命令后,按照提示输入账号密码,就可以把远程仓库拉取过来了
git clone https://git.weinbc.com/k8s-falcon/k8s-falcon.git
克隆完成之后,可以看见项目名称,进去项目之后,可以看见一些git相关文件,切换到配置文件在的分支。
cd k8s-falcon #进入
git checkout origin/dev
这时候你就能看到配置文件了,在kubectl apply之前
cat falcon-deploy/README.md #看看需要的镜像,拉取所需的镜像。
因为每个配置文件都指定了运行在哪个节点,在对应节点拉取镜像即可。
nodeSelector:
kubernetes.io/hostname: master
拉取完所有需要的镜像后,就可以正式部署服务了其中mariadb,redis,rabbitmq和oss为底层
casbin和datapool为通用底层服务层,server-core为业务服务层,web和static为最高一层,从底层依次往上配置,当然也不用那么严谨。
cd falcon-deploy/yaml/
kubectl apply -f env/. #首先配置好环境
kubectl apply -f mariadb/.
kubectl apply -f redis/.
kubectl apply -f rabbitmq/.
kubectl apply -f oss/.
kubectl apply -f casbin/.
kubectl apply -f datapool/.
kubectl apply -f web/.
kubectl apply -f static/.
kubectl apply -f server-core/.
其中运行到mariadb时,需要导入数据库,不然没有数据,server-core无法给予正确服务
kubectl cp -n NAMESPACE_name FILE_name POD_name:NEW_FILE_name
source /var/lib/mysql/mysql-falcon-7011.2022-07-08_00-00-02.sql;导入资源
配置结束以上文件后,配置ingress
cd ../..
kubectl apply -f ingress-nginx/.
至此,部署完成,输入master的ip地址即可访问到服务,如图。
更多推荐
所有评论(0)