轻量应用服务器部署k3s,并搭建可视化高性能网关 apisix

简介: k3s低资源占用集群,apisix 可视化高性能网关。小白教程

环境介绍

香港轻量 1核1G,此配置无法开启 ingress-controller,请禁用 tls,和ingress-controller 即无法使用 ApisixTls 配置证书

设置虚拟内存

mkdir swap && cd swap

# bs 为块的大小,count 创建多少个块
sudo dd if=/dev/zero of=swapfile bs=1M count=2048

# 修改权限
sudo chmod 0600 swapfile

#把生成的文件转换成 Swap 文件
sudo mkswap swapfile

# 激活文件
sudo swapon swapfile
不设置容易死机,这里我们设置 2G

安装 k3s

  • 安装目录
mkdir -p ~/softwares/k3s && cd ~/softwares/k3s && touch install_k3s.sh

主节点

#!/bin/sh

# 本地网卡设备号
export MY_ETH_DEV=eth0
# 自动获取本机IP
export MY_NODE_IP=`ip -o -4 addr list | grep $MY_ETH_DEV | awk '{print $4}' | cut -d/ -f1`

# k3s主服务器内网IP
# export MY_SERVER_IP=172.21.0.11
export MY_SERVER_IP=`ip -o -4 addr list | grep $MY_ETH_DEV | awk '{print $4}' | cut -d/ -f1`

curl -sfL https://rancher-mirror.rancher.cn/k3s/k3s-install.sh | INSTALL_K3S_MIRROR=cn sh -s - server \
    --disable traefik \
    --cluster-init \
    --node-ip $MY_NODE_IP \
    --node-external-ip $MY_SERVER_IP \
    --advertise-address $MY_SERVER_IP \
    --flannel-iface $MY_ETH_DEV \
    --write-kubeconfig ~/.kube/config \
    --write-kubeconfig-mode 644 \
    --node-label asrole=worker
  • 可选参数--disable traefik 禁用默认网关
  • 可选参数--cluster-init 初始化集群,为平行节点做准备
  • 可选参数--write-kubeconfig ~/.kube/config 配置路径

查看服务:cat /etc/systemd/system/k3s.service

参数请查看 https://rancher.com/docs/k3s/latest/en/installation/install-options/server-config/

基础命令

# 查看所有节点
kubectl get node
# 查看所有应用
kubectl get pod -A -o wide
# 查看所有服务
kubectl get service -A
# 查看所有入口
kubectl get ingress -A
# 查看节点运行的容器
crictl ps

安装 helm

脚本安装

mkdir -p $HOME/softwares/heml_tool && cd $HOME/softwares/heml_tool
curl -fsSL -o get_helm.sh https://raw.githubusercontent.com/helm/helm/main/scripts/get-helm-3
bash get_helm.sh

二进制安装

  • 下载 需要的版本
  • 上传 scp helm-v3.9.0-linux-amd64.tar.gz root@127.0.0.1:/tmp/helm-v3.9.0-linux-amd64.tar.gz
  • 解压(tar -zxvf helm-v3.9.0-linux-amd64.tar.gz )
  • 在解压目中找到helm程序,移动到需要的目录中(mv linux-amd64/helm /usr/local/bin/helm)
查看结果 helm repo list

安装 apisix

安装主程序

mkdir -p $HOME/softwares/apisix_gateway && cd $HOME/softwares/apisix_gateway


helm repo add apisix https://charts.apiseven.com
helm repo add bitnami https://charts.bitnami.com/bitnami
helm repo update
kubectl create ns ingress-apisix
helm install apisix apisix/apisix \
  --set gateway.type=LoadBalancer \
  --set gateway.tls.enabled=true \
  --set ingress-controller.enabled=true \
  --set ingress-controller.config.apisix.serviceNamespace=ingress-apisix \
  --namespace ingress-apisix \
  --kubeconfig /etc/rancher/k3s/k3s.yaml
  • --set gateway.type=LoadBalancer 设置端口类型
  • 可选参数--set gateway.tls.enabled=true 激活 tls
  • 可选参数--set ingress-controller.enabled=true 激活ingress-controller
  • 可选参数--set ingress-controller.config.apisix.serviceNamespace=ingress-apisix 配置ingress-controller
查看资源 kubectl -n ingress-apisix get pods

安装面板

helm repo add apisix https://charts.apiseven.com
helm repo update
helm install apisix-dashboard apisix/apisix-dashboard --namespace ingress-apisix
  • 编辑服务
kubectl --namespace ingress-apisix edit service apisix-dashboard
  • 修改如下
  ports:                                        
  - name: http                                  
    port: 9000                              
    protocol: TCP                           
    targetPort: http                       
  selector:                                
    app.kubernetes.io/instance: apisix-dashboard
    app.kubernetes.io/name: apisix-dashboard    
  sessionAffinity: None                         
  type: LoadBalancer 
  • 修改用户名密码
kubectl -n ingress-apisix edit cm apisix-dashboard
  • 配置如下
    authentication:             
      secert: secert            
      expire_time: 3600         
      users:                    
        - username: admin        
          password: admin
  • 重启生效
kubectl get pods -l app.kubernetes.io/name=apisix-dashboard -o name -n ingress-apisix -o yaml | kubectl replace --force -f -

本地证书

  • eg: www.baidu.com
  • 目录如下
├── certs
│   ├── www.baidu.com.key
│   └── www.baidu.com.pem
├── create-tls-secret.sh
└── tls-www.baidu.com.yaml

1 directory, 4 files
  • 脚本
cat > create-tls-secret.sh <<-EOF
#!/usr/bin/env bash

kubectl create secret tls tls-www.baidu.com -n ingress-apisix \
  --cert=certs/www.baidu.com.pem \
  --key=certs/www.baidu.com.key
EOF

bash create-tls-secret.sh
  • 查看
kubectl get secret -n ingress-apisix
  • 创建 tls-www.baidu.com.yaml
# 定义 ApisixTls 对象
apiVersion: apisix.apache.org/v1
kind: ApisixTls
metadata:
  name: tls-www.baidu.com
  namespace: ingress-apisix
spec:
  hosts:
  - www.baidu.com
  secret:
    name: tls-www.baidu.com
    namespace: ingress-apisix
k3s文档 https://docs.rancher.cn/docs/k3s/quick-start/_index/
apisix文档 https://apisix.apache.org/zh/docs/ingress-controller/getting-started/
设置虚拟内存 https://blog.csdn.net/ChenZhC/article/details/118603442
目录
相关文章
|
弹性计算 监控 数据可视化
ecs资源可视化
ecs资源可视化
308 3
|
12月前
|
应用服务中间件 网络安全 数据安全/隐私保护
网关服务器配置指南:实现自动DHCP地址分配、HTTP服务和SSH无密码登录。
哇哈哈,道具都准备好了,咱们的魔术秀就要开始了。现在,你的网关服务器已经魔法满满,自动分配IP,提供网页服务,SSH登录如入无人之境。而整个世界,只会知道效果,不会知道是你在幕后操控一切。这就是真正的数字世界魔法师,随手拈来,手到擒来。
557 14
|
缓存 NoSQL Java
自研一套高性能API网关,你都需要做什么?
本文介绍了自研API网关的基本组成和架构,涵盖网关的作用、请求生命周期、功能点详解(如插件和规则)、技术选型(Java、Netty、Nacos)及设计要点。通过异步化设计、缓存、串行化优化、提高吞吐量和合理配置工作线程,确保高性能与稳定性。最后,提供了网关的架构图,帮助读者全面理解其构建过程。
755 0
|
分布式计算 资源调度 数据可视化
Hadoop-06-Hadoop集群 历史服务器配置 超详细 执行任务记录 JobHistoryServer MapReduce执行记录 日志聚合结果可视化查看
Hadoop-06-Hadoop集群 历史服务器配置 超详细 执行任务记录 JobHistoryServer MapReduce执行记录 日志聚合结果可视化查看
468 1
|
前端开发 关系型数据库 MySQL
ThingsGateway:一款基于.NET8开源的跨平台高性能边缘采集网关
ThingsGateway:一款基于.NET8开源的跨平台高性能边缘采集网关
560 2
|
运维 监控 Kubernetes
高效应对突增流量:构建弹性高性能的SMS网关策略
本篇内容来自于ArchSummit全球架构师峰会演讲实录。
784 1
|
监控 安全 网络安全
inishConnect(..) failed: Connection refused,服务本地正常服务器网关报400,nacos服务实例不能下线
总之,这种问题需要通过多方面的检查和校验来定位和解决,并可能需要结合实际环境的具体情况来进行相应的调整。在处理分布式系统中这类问题时,耐心和细致的调试是必不可少的。
571 13
|
应用服务中间件 API nginx
微服务从代码到k8s部署应有尽有系列(二、网关)
微服务从代码到k8s部署应有尽有系列(二、网关)
|
网络协议 网络虚拟化 数据中心
干货 | 集中式网关部署方式的VXLAN示例(静态方式)
干货 | 集中式网关部署方式的VXLAN示例(静态方式)
380 0
|
数据可视化 API 开发工具
详细解读cesi+supervisor可视化集中管理服务器节点进程
详细解读cesi+supervisor可视化集中管理服务器节点进程
582 0