当前位置: 首页 > wzjs >正文

知乎 做照片好的网站十大app开发公司排名

知乎 做照片好的网站,十大app开发公司排名,高端网站制造,湖南郴州人很穷吗1. 安装k3s集群 1.1 安装k3s(单节点快速体验) # 使用root用户或sudo执行 curl -sfL https://get.k3s.io | sh -# 验证安装 sudo kubectl get nodes # 应显示一个节点状态为Ready sudo systemctl status k3s1.2 设置kubectl快捷方式(可选&a…

1. 安装k3s集群

1.1 安装k3s(单节点快速体验)
# 使用root用户或sudo执行
curl -sfL https://get.k3s.io | sh -# 验证安装
sudo kubectl get nodes  # 应显示一个节点状态为Ready
sudo systemctl status k3s
1.2 设置kubectl快捷方式(可选)
mkdir -p ~/.kube
sudo cp /etc/rancher/k3s/k3s.yaml ~/.kube/config
sudo chown $USER ~/.kube/config
export KUBECONFIG=~/.kube/config

2. 部署MySQL数据库

2.1 创建持久化存储卷(PVC)
# mysql-pvc.yaml
apiVersion: v1
kind: PersistentVolumeClaim
metadata:name: mysql-pvc
spec:accessModes:- ReadWriteOnceresources:requests:storage: 2Gi  # 生产环境建议5Gi以上
kubectl apply -f mysql-pvc.yaml
2.2 创建数据库密码Secret
kubectl create secret generic mysql-secret \--from-literal=root_password=your_secure_password \--from-literal=database=appdb
2.3 部署MySQL
# mysql-deployment.yaml
apiVersion: apps/v1
kind: Deployment
metadata:name: mysql-deployment
spec:replicas: 1selector:matchLabels:app: mysqltemplate:metadata:labels:app: mysqlspec:containers:- name: mysqlimage: mysql:8.0env:- name: MYSQL_ROOT_PASSWORDvalueFrom:secretKeyRef:name: mysql-secretkey: root_password- name: MYSQL_DATABASEvalueFrom:secretKeyRef:name: mysql-secretkey: databaseports:- containerPort: 3306volumeMounts:- mountPath: /var/lib/mysqlname: mysql-datavolumes:- name: mysql-datapersistentVolumeClaim:claimName: mysql-pvc
---
apiVersion: v1
kind: Service
metadata:name: mysql-service
spec:selector:app: mysqlports:- port: 3306targetPort: 3306type: ClusterIP
kubectl apply -f mysql-deployment.yaml

3. 部署Redis缓存

3.1 创建Redis持久化存储
# redis-pvc.yaml
apiVersion: v1
kind: PersistentVolumeClaim
metadata:name: redis-pvc
spec:accessModes:- ReadWriteOnceresources:requests:storage: 1Gi
kubectl apply -f redis-pvc.yaml
3.2 部署Redis
# redis-deployment.yaml
apiVersion: apps/v1
kind: Deployment
metadata:name: redis-deployment
spec:replicas: 1selector:matchLabels:app: redistemplate:metadata:labels:app: redisspec:containers:- name: redisimage: redis:alpineports:- containerPort: 6379volumeMounts:- mountPath: /dataname: redis-datacommand: ["redis-server", "--appendonly yes"]  # 启用持久化volumes:- name: redis-datapersistentVolumeClaim:claimName: redis-pvc
---
apiVersion: v1
kind: Service
metadata:name: redis-service
spec:selector:app: redisports:- port: 6379targetPort: 6379type: ClusterIP
kubectl apply -f redis-deployment.yaml

4. 部署Golang应用

4.1 准备Golang Docker镜像
  1. 创建示例Golang应用 main.go

    package mainimport ("fmt""net/http""database/sql"_ "github.com/go-sql-driver/mysql""github.com/redis/go-redis/v9"
    )func handler(w http.ResponseWriter, r *http.Request) {// 连接MySQLdb, _ := sql.Open("mysql", "root:${MYSQL_ROOT_PASSWORD}@tcp(mysql-service:3306)/${MYSQL_DATABASE}")defer db.Close()// 连接Redisrdb := redis.NewClient(&redis.Options{Addr: "redis-service:6379"})defer rdb.Close()fmt.Fprintf(w, "Connected to MySQL and Redis!")
    }func main() {http.HandleFunc("/", handler)http.ListenAndServe(":8080", nil)
    }
    
  2. 创建 Dockerfile

    FROM golang:1.20-alpine AS builder
    WORKDIR /app
    COPY . .
    RUN go mod init app && go mod tidy
    RUN CGO_ENABLED=0 GOOS=linux go build -o /app/mainFROM alpine:latest
    COPY --from=builder /app/main /app/main
    EXPOSE 8080
    CMD ["/app/main"]
    
  3. 构建并推送镜像到仓库(或本地构建):

    docker build -t yourusername/golang-app:v1 .
    docker push yourusername/golang-app:v1
    
4.2 部署Golang应用到k3s
# golang-deployment.yaml
apiVersion: apps/v1
kind: Deployment
metadata:name: golang-deployment
spec:replicas: 2selector:matchLabels:app: golangtemplate:metadata:labels:app: golangspec:containers:- name: golangimage: yourusername/golang-app:v1  # 替换为你的镜像ports:- containerPort: 8080env:- name: MYSQL_ROOT_PASSWORD  # 从Secret注入valueFrom:secretKeyRef:name: mysql-secretkey: root_password- name: MYSQL_DATABASEvalueFrom:secretKeyRef:name: mysql-secretkey: databaselivenessProbe:  # 健康检查httpGet:path: /port: 8080initialDelaySeconds: 10periodSeconds: 5
---
apiVersion: v1
kind: Service
metadata:name: golang-service
spec:selector:app: golangports:- port: 8080targetPort: 8080type: ClusterIP
kubectl apply -f golang-deployment.yaml

5. 部署Nginx反向代理

5.1 创建Nginx配置文件
# nginx-config.yaml
apiVersion: v1
kind: ConfigMap
metadata:name: nginx-config
data:default.conf: |server {listen 80;server_name localhost;location / {proxy_pass http://golang-service:8080;  # 转发到Golang服务proxy_set_header Host $host;proxy_set_header X-Real-IP $remote_addr;}}
kubectl apply -f nginx-config.yaml
5.2 部署Nginx
# nginx-deployment.yaml
apiVersion: apps/v1
kind: Deployment
metadata:name: nginx-deployment
spec:replicas: 2selector:matchLabels:app: nginxtemplate:metadata:labels:app: nginxspec:containers:- name: nginximage: nginx:alpineports:- containerPort: 80volumeMounts:- mountPath: /etc/nginx/conf.dname: nginx-configvolumes:- name: nginx-configconfigMap:name: nginx-config
---
apiVersion: v1
kind: Service
metadata:name: nginx-service
spec:selector:app: nginxports:- port: 80targetPort: 80type: NodePort  # 或LoadBalancer
kubectl apply -f nginx-deployment.yaml

6. 验证部署

6.1 查看所有资源状态
kubectl get pods,svc,pvc
  • 确保所有Pod状态为 Running,服务正常启动。
6.2 访问应用
# 获取Nginx的NodePort
kubectl get svc nginx-service -o jsonpath='{.spec.ports[0].nodePort}'# 访问应用(假设节点IP为192.168.1.100,NodePort为30007)
curl http://192.168.1.100:30007
  • 预期输出:Connected to MySQL and Redis!

7. 扩展与维护

7.1 扩容Golang副本
kubectl scale deployment golang-deployment --replicas=3
7.2 更新Golang应用
  1. 修改代码后重新构建镜像:

    docker build -t yourusername/golang-app:v2 .
    docker push yourusername/golang-app:v2
    
  2. 更新Deployment镜像版本:

    kubectl set image deployment/golang-deployment golang=yourusername/golang-app:v2
    

8. 关键配置说明

组件核心配置项作用说明
MySQLpersistentVolumeClaim数据持久化到PVC
Rediscommand: ["redis-server", "--appendonly yes"]启用AOF持久化
GolanglivenessProbe自动重启不健康的Pod
Nginxproxy_pass http://golang-service反向代理到后端服务

附:常见问题排查

  1. Golang无法连接MySQL/Redis

    • 检查服务名称是否正确(mysql-serviceredis-service
    • 验证Secret中的密码是否匹配
    kubectl exec -it <golang-pod> -- env | grep MYSQL_ROOT_PASSWORD
    
  2. Nginx返回502错误

    • 检查Golang服务是否正常运行:

      kubectl logs <golang-pod>
      
  3. 持久化存储未生效

    • 确认PVC状态是否为 Bound

      kubectl get pvc
      
http://www.dtcms.com/wzjs/84040.html

相关文章:

  • 搞基怎么做视频网站网站收录查询入口
  • 手机自助网站建设8个公开大数据网站
  • 网站建设关键的问题是永久域名查询
  • 做网站的程序员工资大约月薪北京seo执行
  • 网站建设颜色注意事项百度有钱花人工客服
  • 软件ui设计怎么做网站站长之家seo工具包
  • 网站备案 类型北京seo主管
  • 江苏省建设厅 标准化网站中国进入全国紧急状态
  • 网站做微信链接怎么做枫林seo工具
  • 做社群最好的网站源码东莞seo网络优化
  • 培训教育类网站模板营销策划与运营
  • 南江县住房和城乡建设局网站做谷歌推广比较好的公司
  • 网站开发方案目录aso安卓优化
  • 深圳营销型网站建设服务网站定制
  • 厦门公司做网站在线一键生成网页
  • 做网站最好的软件是外贸如何推广
  • wordpress 论坛功能天津seo排名
  • 长治网站建设网络营销常见术语
  • 网站建设事宜排行榜百度
  • 网站上怎么做动画广告seo81
  • 瑞安学校网站建设互联网销售怎么做
  • wordpress加超链接关键词优化案例
  • 沙元浦做网站的公司龙岗网站设计
  • 广州手机建设网站苏州百度
  • wordpress主题 tob长春seo招聘
  • 网站技术架构图千度seo
  • html制作手机网站seo网站优化工具
  • 荆门网站建设贵港seo关键词整站优化
  • 二手车网站开发PPT免费发布信息的平台有哪些
  • 保险做的好的网站有哪些内容seo整站优化更能准确获得客户