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地址即可访问到服务,如图。

 

Logo

K8S/Kubernetes社区为您提供最前沿的新闻资讯和知识内容

更多推荐