k3s 搭建使用指南

k3s 搭建使用指南

参考资料

k8s入门教程:

k8s的官网

https://zhuanlan.zhihu.com/p/584076089

新建标签页 (eastjun.top)

云上测试工具:

github.com/cdk-team/CDK

kubernets 靶场:

kubernetes-goat

搭建思路

1.写个镜像dockerfile/docker-compose,本地测试通过后->转pod

2.如果需要暴露端口/挂载文件,则写个deployment

3.如果需要外部访问,写个service

4.如果需要实现代理转发功能(如子域名自动解析对应服务),则写个ingress

5.如果需要实现权限管理,则写个角色访问控制(这个我也玩不明白)

pod

pod示例

类似于这样,可以创建一个alist服务

apiVersion: v1
kind: Pod
metadata:
  name: alist
spec:
  containers:
  - name: alist
    image: xhofe/alist:latest
    env:
    #- PUID=0
    - name: PGID
      value: "0"
    #- PGID=0
    - name: PGID
      value: "0"
    #- UMASK=022
    - name: UMASK
      value: "022"
    ports:
    - containerPort: 5244

containers里面的内容基本上就等于你dockerfile的内容

deployment

deployment示例

这里从功能上看,多了个挂载

apiVersion: apps/v1
kind: Deployment
metadata:
  name: alist-service
spec:
  selector:
    matchLabels:
      app: alist
  replicas: 1
  template:
    metadata:
      labels:
        app: alist
    spec:
      containers:
      - name: alist
        image: xhofe/alist:latest
        env:
        #- PUID=0
        - name: PUID
          value: "0"
        #- PGID=0
        - name: PGID
          value: "0"
        #- UMASK=022
        - name: UMASK
          value: "022"
        ports:
        - containerPort: 5244
        volumeMounts:
        - mountPath: /etc/alist
          name: src
      volumes:
      - name: src
        hostPath:
          path: /home/thai/docker_service/alist/data

service

这里多了个外部网络/端口暴露

apiVersion: v1
kind: Service
metadata:
  name: alist-service
spec:
  selector:
    app: alist
  loadBalancerIP: 192.168.239.22    #外部ip
  ports:
  - name: http
    port: 5244                      #外部端口
    targetPort: 5244                #对应pod中开启的端口
  # type: ClusterIP
  type: LoadBalancer

ingress

首先去域名解析那里添加自己的解析纪录

把A解析纪录指向自己k3s的ip

xxx.yourdomain.com

*.xxx.yourdomain.com

#添加上以上两个

ingress配置示例如下

apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
  name: my-ingress
spec:
  rules:
  - host: alist.mi3aka.viewofthai.link  # 子域名1
    http:
      paths:
      - path: /
        pathType: Prefix
        backend:
          service:
            name: alist-service  # 替换为您的服务名称
            port:
              number: 5244

  - host: hedge.mi3aka.viewofthai.link  # 子域名2
    http:
      paths:
      - path: /
        pathType: Prefix
        backend:
          service:
            name: hedgedoc-service  # 替换为您的服务名称
            port:
              number: 80

访问控制

这块比较复杂,笔者也没完全明白

只知道里面的权限是由用户和命名空间决定的

一些坑

多容器连接问题

比如说hedge需要一个数据库

image-20231022180831716

image-20231022180940416

wordpress静态ip问题

总所周知wordpress的url是静态的

第一次创建wordpress时,url为初次访问的url,当然可以进入后台修改

image-20231022174027546

在这里

image-20231022174135066

但是假如把容器创建好,后续需要对Url进行一些更改(如添加一个通过子域名访问 ,比如 a.xxx.com),在这里进行修改,会发现虽然可以访问,但是:

1.很大一部分图片加载不出来,显示的仍然是旧的url/url+port

2.有些界面跳转的时候仍然会改变url/url+port

解决方法是:

  • 针对url+port的问题,也就是说咱们原本是ip:1988可以访问到容器,但是ingress添加了a.xxx.com解析到ip:1988,直接访问a.xxx.com却会出现加载某些a.xxx.com:1988的情况,那么当时暴露端口的时候,应该都设置为80端口,比如说红框上面的port:8083应该改为80

image-20231022174431965

但其实不这么设置也可以

  • 有些界面跳转的时候仍然会改变url/url+port

(有时候你设置完80端口后,你会发现没有这种问题了,但是我要是就不设置80端口呢,可以这样解决:)

这个就是咱在后台修改完静态url后(a.xxx.com)

image-20231022175348111

还需要进数据库修改

1.wp_users 这个表的 user_url 需要修改
2.wp_options 表的 option_name == siteurl 或者 option_name == home的option_value 需要修改
暂无评论

发送评论 编辑评论


				
|´・ω・)ノ
ヾ(≧∇≦*)ゝ
(☆ω☆)
(╯‵□′)╯︵┴─┴
 ̄﹃ ̄
(/ω\)
∠( ᐛ 」∠)_
(๑•̀ㅁ•́ฅ)
→_→
୧(๑•̀⌄•́๑)૭
٩(ˊᗜˋ*)و
(ノ°ο°)ノ
(´இ皿இ`)
⌇●﹏●⌇
(ฅ´ω`ฅ)
(╯°A°)╯︵○○○
φ( ̄∇ ̄o)
ヾ(´・ ・`。)ノ"
( ง ᵒ̌皿ᵒ̌)ง⁼³₌₃
(ó﹏ò。)
Σ(っ °Д °;)っ
( ,,´・ω・)ノ"(´っω・`。)
╮(╯▽╰)╭
o(*////▽////*)q
>﹏<
( ๑´•ω•) "(ㆆᴗㆆ)
😂
😀
😅
😊
🙂
🙃
😌
😍
😘
😜
😝
😏
😒
🙄
😳
😡
😔
😫
😱
😭
💩
👻
🙌
🖕
👍
👫
👬
👭
🌚
🌝
🙈
💊
😶
🙏
🍦
🍉
😣
Source: github.com/k4yt3x/flowerhd
颜文字
Emoji
小恐龙
花!
上一篇
下一篇