安装docker-compose

# ubuntu
apt-get install docker-compose# centos
yum install docker-compose

下载kompose

由于官网仅提供了docker-compose安装方式,没有提供k8s部署的yaml文件,所以需要根据docker-compose文件转化k8s部署的yaml文件。
这里发现了一个好用的工具: kompose

kompose官网:https://kompose.io/
github地址:https://github.com/kubernetes/kompose

下载命令:

# Linux
curl -L https://github.com/kubernetes/kompose/releases/download/v1.23.0/kompose-linux-amd64 -o kompose# macOS
curl -L https://github.com/kubernetes/kompose/releases/download/v1.23.0/kompose-darwin-amd64 -o kompose# Windows
curl -L https://github.com/kubernetes/kompose/releases/download/v1.23.0/kompose-windows-amd64.exe -o kompose.exechmod +x kompose
sudo mv ./kompose /usr/local/bin/kompose

这里根据自己的平台选择就好,由于我的集群版本安装的是1.23.6,所以kompose选择的1.23.0版本。

下载syncthing

官方资料

官网:https://syncthing.net/
github地址:https://github.com/syncthing/syncthing

生成docker-compose文件

根据官方叙述,是使用docker直接运行syncthing,这里是官方docker-compose

version: "3"
services:syncthing:image: syncthing/syncthingcontainer_name: syncthinghostname: my-syncthingenvironment:- PUID=1000- PGID=1000volumes:- /wherever/st-sync:/var/syncthingports:- 8384:8384 # Web UI- 22000:22000/tcp # TCP file transfers- 22000:22000/udp # QUIC file transfers- 21027:21027/udp # Receive local discovery broadcastsrestart: unless-stopped

有了docker-compose就可以按照自己的需要进行容器编排。

生成kubenetes yaml文件

我目标是使用k8s部署,所以这里生成个对应的yaml文件。
使用kompose进行转换

kompose convert -f syncthing.yml

执行完成后进行优化整合为一个大的kubenetes部署配置文件。

apiVersion: v1
kind: PersistentVolumeClaim
metadata:creationTimestamp: nulllabels:io.kompose.service: syncthingpvcname: syncthingpvc
spec:accessModes:- ReadWriteOncestorageClassName: manualresources:requests:storage: 2048Gi---
apiVersion: apps/v1
kind: Deployment
metadata:annotations:kompose.cmd: kompose convert -f syncthing/syncthing.ymlkompose.version: 1.23.0 (bc7d9f4f)creationTimestamp: nulllabels:io.kompose.service: syncthingname: syncthing
spec:replicas: 1selector:matchLabels:io.kompose.service: syncthingstrategy:type: Recreatetemplate:metadata:annotations:kompose.cmd: kompose convert -f syncthing/syncthing.ymlkompose.version: 1.23.0 (bc7d9f4f)creationTimestamp: nulllabels:io.kompose.service: syncthingspec:containers:- env:- name: PGIDvalue: "1000"- name: PUIDvalue: "1000"- name: TZvalue: '"Asia/Shanghai"'image: linuxserver/syncthing:1.23.2name: syncthingports:- containerPort: 8384- containerPort: 22000- containerPort: 22000protocol: UDP- containerPort: 21027protocol: UDPresources: {}volumeMounts:- mountPath: /var/syncthingname: syncthingpvchostname: syncthing-hostnamerestartPolicy: Alwaysvolumes:- name: syncthingpvcpersistentVolumeClaim:claimName: syncthingpvc---
apiVersion: v1
kind: Service
metadata:annotations:kompose.cmd: kompose convert -f syncthing/syncthing.ymlkompose.version: 1.23.0 (bc7d9f4f)creationTimestamp: nulllabels:io.kompose.service: syncthingname: syncthing
spec:ports:- name: "8384"port: 8384targetPort: 8384- name: "22000"port: 22000targetPort: 22000- name: 22000-udpport: 22000protocol: UDPtargetPort: 22000- name: "21027"port: 21027protocol: UDPtargetPort: 21027selector:io.kompose.service: syncthing

执行部署命令:

kubectl apply -f syncthing-k8s.yaml

然后等待pod运行。

# kubectl get pod
NAME                         READY   STATUS    RESTARTS   AGE
syncthing-85f46699c5-hljqz   1/1     Running   0          83m

外部访问

查看创建的service:

# kubectl get service -A
NAMESPACE     NAME             TYPE        CLUSTER-IP      EXTERNAL-IP   PORT(S)                                  AGE
default       kubernetes       ClusterIP   10.96.0.1       <none>        443/TCP                                  24d
default       syncthing        ClusterIP   10.96.221.138   <none>        8384/TCP,22000/TCP,22000/UDP,21027/UDP   3h7m
kube-system   kube-dns         ClusterIP   10.96.0.10      <none>        53/UDP,53/TCP,9153/TCP                   24d
kube-system   metrics-server   ClusterIP   10.96.9.211     <none>        443/TCP                                  22d

很明显集群ip是10.96.221.138,在浏览器使用10.96.221.138:8384访问syncthing,发现访问不了。这是因为这个ip是在集群间互相识别使用的,此时无论从物理机浏览器还是跳板机curl等都无法通过这个IP直接访问,想实现集群外部访问(跳板机或者同局域网下的机器),要安装下Ingress组件实现。

部署Ingress

k8s集群以外访问k8s集群要借助ingress进行

下载ingress

可以参考官方文档:https://github.com/kubernetes/ingress-nginx/blob/main/docs/deploy/index.md
官方文档提示可以使用下面的命令直接apply:

kubectl apply -f https://raw.githubusercontent.com/kubernetes/ingress-nginx/controller-v1.6.4/deploy/static/provider/cloud/deploy.yaml

我这里将yaml保存下来:

apiVersion: v1
kind: Namespace
metadata:name: ingress-nginxlabels:app.kubernetes.io/name: ingress-nginxapp.kubernetes.io/instance: ingress-nginx---
# Source: ingress-nginx/templates/controller-serviceaccount.yaml
apiVersion: v1
kind: ServiceAccount
metadata:labels:helm.sh/chart: ingress-nginx-4.0.15app.kubernetes.io/name: ingress-nginxapp.kubernetes.io/instance: ingress-nginxapp.kubernetes.io/version: 1.1.1app.kubernetes.io/managed-by: Helmapp.kubernetes.io/component: controllername: ingress-nginxnamespace: ingress-nginx
automountServiceAccountToken: true
---
# Source: ingress-nginx/templates/controller-configmap.yaml
apiVersion: v1
kind: ConfigMap
metadata:labels:helm.sh/chart: ingress-nginx-4.0.15app.kubernetes.io/name: ingress-nginxapp.kubernetes.io/instance: ingress-nginxapp.kubernetes.io/version: 1.1.1app.kubernetes.io/managed-by: Helmapp.kubernetes.io/component: controllername: ingress-nginx-controllernamespace: ingress-nginx
data:allow-snippet-annotations: 'true'
---
# Source: ingress-nginx/templates/clusterrole.yaml
apiVersion: rbac.authorization.k8s.io/v1
kind: ClusterRole
metadata:labels:helm.sh/chart: ingress-nginx-4.0.15app.kubernetes.io/name: ingress-nginxapp.kubernetes.io/instance: ingress-nginxapp.kubernetes.io/version: 1.1.1app.kubernetes.io/managed-by: Helmname: ingress-nginx
rules:- apiGroups:- ''resources:- configmaps- endpoints- nodes- pods- secrets- namespacesverbs:- list- watch- apiGroups:- ''resources:- nodesverbs:- get- apiGroups:- ''resources:- servicesverbs:- get- list- watch- apiGroups:- networking.k8s.ioresources:- ingressesverbs:- get- list- watch- apiGroups:- ''resources:- eventsverbs:- create- patch- apiGroups:- networking.k8s.ioresources:- ingresses/statusverbs:- update- apiGroups:- networking.k8s.ioresources:- ingressclassesverbs:- get- list- watch
---
# Source: ingress-nginx/templates/clusterrolebinding.yaml
apiVersion: rbac.authorization.k8s.io/v1
kind: ClusterRoleBinding
metadata:labels:helm.sh/chart: ingress-nginx-4.0.15app.kubernetes.io/name: ingress-nginxapp.kubernetes.io/instance: ingress-nginxapp.kubernetes.io/version: 1.1.1app.kubernetes.io/managed-by: Helmname: ingress-nginx
roleRef:apiGroup: rbac.authorization.k8s.iokind: ClusterRolename: ingress-nginx
subjects:- kind: ServiceAccountname: ingress-nginxnamespace: ingress-nginx
---
# Source: ingress-nginx/templates/controller-role.yaml
apiVersion: rbac.authorization.k8s.io/v1
kind: Role
metadata:labels:helm.sh/chart: ingress-nginx-4.0.15app.kubernetes.io/name: ingress-nginxapp.kubernetes.io/instance: ingress-nginxapp.kubernetes.io/version: 1.1.1app.kubernetes.io/managed-by: Helmapp.kubernetes.io/component: controllername: ingress-nginxnamespace: ingress-nginx
rules:- apiGroups:- ''resources:- namespacesverbs:- get- apiGroups:- ''resources:- configmaps- pods- secrets- endpointsverbs:- get- list- watch- apiGroups:- ''resources:- servicesverbs:- get- list- watch- apiGroups:- networking.k8s.ioresources:- ingressesverbs:- get- list- watch- apiGroups:- networking.k8s.ioresources:- ingresses/statusverbs:- update- apiGroups:- networking.k8s.ioresources:- ingressclassesverbs:- get- list- watch- apiGroups:- ''resources:- configmapsresourceNames:- ingress-controller-leaderverbs:- get- update- apiGroups:- ''resources:- configmapsverbs:- create- apiGroups:- ''resources:- eventsverbs:- create- patch
---
# Source: ingress-nginx/templates/controller-rolebinding.yaml
apiVersion: rbac.authorization.k8s.io/v1
kind: RoleBinding
metadata:labels:helm.sh/chart: ingress-nginx-4.0.15app.kubernetes.io/name: ingress-nginxapp.kubernetes.io/instance: ingress-nginxapp.kubernetes.io/version: 1.1.1app.kubernetes.io/managed-by: Helmapp.kubernetes.io/component: controllername: ingress-nginxnamespace: ingress-nginx
roleRef:apiGroup: rbac.authorization.k8s.iokind: Rolename: ingress-nginx
subjects:- kind: ServiceAccountname: ingress-nginxnamespace: ingress-nginx
---
# Source: ingress-nginx/templates/controller-service-webhook.yaml
apiVersion: v1
kind: Service
metadata:labels:helm.sh/chart: ingress-nginx-4.0.15app.kubernetes.io/name: ingress-nginxapp.kubernetes.io/instance: ingress-nginxapp.kubernetes.io/version: 1.1.1app.kubernetes.io/managed-by: Helmapp.kubernetes.io/component: controllername: ingress-nginx-controller-admissionnamespace: ingress-nginx
spec:type: ClusterIPports:- name: https-webhookport: 443targetPort: webhookappProtocol: httpsselector:app.kubernetes.io/name: ingress-nginxapp.kubernetes.io/instance: ingress-nginxapp.kubernetes.io/component: controller
---
# Source: ingress-nginx/templates/controller-service.yaml
apiVersion: v1
kind: Service
metadata:annotations:labels:helm.sh/chart: ingress-nginx-4.0.15app.kubernetes.io/name: ingress-nginxapp.kubernetes.io/instance: ingress-nginxapp.kubernetes.io/version: 1.1.1app.kubernetes.io/managed-by: Helmapp.kubernetes.io/component: controllername: ingress-nginx-controllernamespace: ingress-nginx
spec:type: LoadBalancerexternalTrafficPolicy: LocalipFamilyPolicy: SingleStackipFamilies:- IPv4ports:- name: httpport: 80protocol: TCPtargetPort: httpappProtocol: http- name: httpsport: 443protocol: TCPtargetPort: httpsappProtocol: httpsselector:app.kubernetes.io/name: ingress-nginxapp.kubernetes.io/instance: ingress-nginxapp.kubernetes.io/component: controller
---
# Source: ingress-nginx/templates/controller-deployment.yaml
apiVersion: apps/v1
kind: Deployment
metadata:labels:helm.sh/chart: ingress-nginx-4.0.15app.kubernetes.io/name: ingress-nginxapp.kubernetes.io/instance: ingress-nginxapp.kubernetes.io/version: 1.1.1app.kubernetes.io/managed-by: Helmapp.kubernetes.io/component: controllername: ingress-nginx-controllernamespace: ingress-nginx
spec:selector:matchLabels:app.kubernetes.io/name: ingress-nginxapp.kubernetes.io/instance: ingress-nginxapp.kubernetes.io/component: controllerrevisionHistoryLimit: 10minReadySeconds: 0template:metadata:labels:app.kubernetes.io/name: ingress-nginxapp.kubernetes.io/instance: ingress-nginxapp.kubernetes.io/component: controllerspec:dnsPolicy: ClusterFirstcontainers:- name: controllerimage: registry.cn-hangzhou.aliyuncs.com/google_containers/nginx-ingress-controller:v1.1.1imagePullPolicy: IfNotPresentlifecycle:preStop:exec:command:- /wait-shutdownargs:- /nginx-ingress-controller- --publish-service=$(POD_NAMESPACE)/ingress-nginx-controller- --election-id=ingress-controller-leader- --controller-class=k8s.io/ingress-nginx- --configmap=$(POD_NAMESPACE)/ingress-nginx-controller- --validating-webhook=:8443- --validating-webhook-certificate=/usr/local/certificates/cert- --validating-webhook-key=/usr/local/certificates/keysecurityContext:capabilities:drop:- ALLadd:- NET_BIND_SERVICErunAsUser: 101allowPrivilegeEscalation: trueenv:- name: POD_NAMEvalueFrom:fieldRef:fieldPath: metadata.name- name: POD_NAMESPACEvalueFrom:fieldRef:fieldPath: metadata.namespace- name: LD_PRELOADvalue: /usr/local/lib/libmimalloc.solivenessProbe:failureThreshold: 5httpGet:path: /healthzport: 10254scheme: HTTPinitialDelaySeconds: 10periodSeconds: 10successThreshold: 1timeoutSeconds: 1readinessProbe:failureThreshold: 3httpGet:path: /healthzport: 10254scheme: HTTPinitialDelaySeconds: 10periodSeconds: 10successThreshold: 1timeoutSeconds: 1ports:- name: httpcontainerPort: 80protocol: TCP- name: httpscontainerPort: 443protocol: TCP- name: webhookcontainerPort: 8443protocol: TCPvolumeMounts:- name: webhook-certmountPath: /usr/local/certificates/readOnly: trueresources:requests:cpu: 100mmemory: 90MinodeSelector:kubernetes.io/os: linuxserviceAccountName: ingress-nginxterminationGracePeriodSeconds: 300volumes:- name: webhook-certsecret:secretName: ingress-nginx-admission
---
# Source: ingress-nginx/templates/controller-ingressclass.yaml
# We don't support namespaced ingressClass yet
# So a ClusterRole and a ClusterRoleBinding is required
apiVersion: networking.k8s.io/v1
kind: IngressClass
metadata:labels:helm.sh/chart: ingress-nginx-4.0.15app.kubernetes.io/name: ingress-nginxapp.kubernetes.io/instance: ingress-nginxapp.kubernetes.io/version: 1.1.1app.kubernetes.io/managed-by: Helmapp.kubernetes.io/component: controllername: nginxnamespace: ingress-nginx
spec:controller: k8s.io/ingress-nginx
---
# Source: ingress-nginx/templates/admission-webhooks/validating-webhook.yaml
# before changing this value, check the required kubernetes version
# https://kubernetes.io/docs/reference/access-authn-authz/extensible-admission-controllers/#prerequisites
apiVersion: admissionregistration.k8s.io/v1
kind: ValidatingWebhookConfiguration
metadata:labels:helm.sh/chart: ingress-nginx-4.0.15app.kubernetes.io/name: ingress-nginxapp.kubernetes.io/instance: ingress-nginxapp.kubernetes.io/version: 1.1.1app.kubernetes.io/managed-by: Helmapp.kubernetes.io/component: admission-webhookname: ingress-nginx-admission
webhooks:- name: validate.nginx.ingress.kubernetes.iomatchPolicy: Equivalentrules:- apiGroups:- networking.k8s.ioapiVersions:- v1operations:- CREATE- UPDATEresources:- ingressesfailurePolicy: FailsideEffects: NoneadmissionReviewVersions:- v1clientConfig:service:namespace: ingress-nginxname: ingress-nginx-controller-admissionpath: /networking/v1/ingresses
---
# Source: ingress-nginx/templates/admission-webhooks/job-patch/serviceaccount.yaml
apiVersion: v1
kind: ServiceAccount
metadata:name: ingress-nginx-admissionnamespace: ingress-nginxannotations:helm.sh/hook: pre-install,pre-upgrade,post-install,post-upgradehelm.sh/hook-delete-policy: before-hook-creation,hook-succeededlabels:helm.sh/chart: ingress-nginx-4.0.15app.kubernetes.io/name: ingress-nginxapp.kubernetes.io/instance: ingress-nginxapp.kubernetes.io/version: 1.1.1app.kubernetes.io/managed-by: Helmapp.kubernetes.io/component: admission-webhook
---
# Source: ingress-nginx/templates/admission-webhooks/job-patch/clusterrole.yaml
apiVersion: rbac.authorization.k8s.io/v1
kind: ClusterRole
metadata:name: ingress-nginx-admissionannotations:helm.sh/hook: pre-install,pre-upgrade,post-install,post-upgradehelm.sh/hook-delete-policy: before-hook-creation,hook-succeededlabels:helm.sh/chart: ingress-nginx-4.0.15app.kubernetes.io/name: ingress-nginxapp.kubernetes.io/instance: ingress-nginxapp.kubernetes.io/version: 1.1.1app.kubernetes.io/managed-by: Helmapp.kubernetes.io/component: admission-webhook
rules:- apiGroups:- admissionregistration.k8s.ioresources:- validatingwebhookconfigurationsverbs:- get- update
---
# Source: ingress-nginx/templates/admission-webhooks/job-patch/clusterrolebinding.yaml
apiVersion: rbac.authorization.k8s.io/v1
kind: ClusterRoleBinding
metadata:name: ingress-nginx-admissionannotations:helm.sh/hook: pre-install,pre-upgrade,post-install,post-upgradehelm.sh/hook-delete-policy: before-hook-creation,hook-succeededlabels:helm.sh/chart: ingress-nginx-4.0.15app.kubernetes.io/name: ingress-nginxapp.kubernetes.io/instance: ingress-nginxapp.kubernetes.io/version: 1.1.1app.kubernetes.io/managed-by: Helmapp.kubernetes.io/component: admission-webhook
roleRef:apiGroup: rbac.authorization.k8s.iokind: ClusterRolename: ingress-nginx-admission
subjects:- kind: ServiceAccountname: ingress-nginx-admissionnamespace: ingress-nginx
---
# Source: ingress-nginx/templates/admission-webhooks/job-patch/role.yaml
apiVersion: rbac.authorization.k8s.io/v1
kind: Role
metadata:name: ingress-nginx-admissionnamespace: ingress-nginxannotations:helm.sh/hook: pre-install,pre-upgrade,post-install,post-upgradehelm.sh/hook-delete-policy: before-hook-creation,hook-succeededlabels:helm.sh/chart: ingress-nginx-4.0.15app.kubernetes.io/name: ingress-nginxapp.kubernetes.io/instance: ingress-nginxapp.kubernetes.io/version: 1.1.1app.kubernetes.io/managed-by: Helmapp.kubernetes.io/component: admission-webhook
rules:- apiGroups:- ''resources:- secretsverbs:- get- create
---
# Source: ingress-nginx/templates/admission-webhooks/job-patch/rolebinding.yaml
apiVersion: rbac.authorization.k8s.io/v1
kind: RoleBinding
metadata:name: ingress-nginx-admissionnamespace: ingress-nginxannotations:helm.sh/hook: pre-install,pre-upgrade,post-install,post-upgradehelm.sh/hook-delete-policy: before-hook-creation,hook-succeededlabels:helm.sh/chart: ingress-nginx-4.0.15app.kubernetes.io/name: ingress-nginxapp.kubernetes.io/instance: ingress-nginxapp.kubernetes.io/version: 1.1.1app.kubernetes.io/managed-by: Helmapp.kubernetes.io/component: admission-webhook
roleRef:apiGroup: rbac.authorization.k8s.iokind: Rolename: ingress-nginx-admission
subjects:- kind: ServiceAccountname: ingress-nginx-admissionnamespace: ingress-nginx
---
# Source: ingress-nginx/templates/admission-webhooks/job-patch/job-createSecret.yaml
apiVersion: batch/v1
kind: Job
metadata:name: ingress-nginx-admission-createnamespace: ingress-nginxannotations:helm.sh/hook: pre-install,pre-upgradehelm.sh/hook-delete-policy: before-hook-creation,hook-succeededlabels:helm.sh/chart: ingress-nginx-4.0.15app.kubernetes.io/name: ingress-nginxapp.kubernetes.io/instance: ingress-nginxapp.kubernetes.io/version: 1.1.1app.kubernetes.io/managed-by: Helmapp.kubernetes.io/component: admission-webhook
spec:template:metadata:name: ingress-nginx-admission-createlabels:helm.sh/chart: ingress-nginx-4.0.15app.kubernetes.io/name: ingress-nginxapp.kubernetes.io/instance: ingress-nginxapp.kubernetes.io/version: 1.1.1app.kubernetes.io/managed-by: Helmapp.kubernetes.io/component: admission-webhookspec:containers:- name: createimage: registry.cn-hangzhou.aliyuncs.com/google_containers/kube-webhook-certgen:v1.1.1imagePullPolicy: IfNotPresentargs:- create- --host=ingress-nginx-controller-admission,ingress-nginx-controller-admission.$(POD_NAMESPACE).svc- --namespace=$(POD_NAMESPACE)- --secret-name=ingress-nginx-admissionenv:- name: POD_NAMESPACEvalueFrom:fieldRef:fieldPath: metadata.namespacesecurityContext:allowPrivilegeEscalation: falserestartPolicy: OnFailureserviceAccountName: ingress-nginx-admissionnodeSelector:kubernetes.io/os: linuxsecurityContext:runAsNonRoot: truerunAsUser: 2000
---
# Source: ingress-nginx/templates/admission-webhooks/job-patch/job-patchWebhook.yaml
apiVersion: batch/v1
kind: Job
metadata:name: ingress-nginx-admission-patchnamespace: ingress-nginxannotations:helm.sh/hook: post-install,post-upgradehelm.sh/hook-delete-policy: before-hook-creation,hook-succeededlabels:helm.sh/chart: ingress-nginx-4.0.15app.kubernetes.io/name: ingress-nginxapp.kubernetes.io/instance: ingress-nginxapp.kubernetes.io/version: 1.1.1app.kubernetes.io/managed-by: Helmapp.kubernetes.io/component: admission-webhook
spec:template:metadata:name: ingress-nginx-admission-patchlabels:helm.sh/chart: ingress-nginx-4.0.15app.kubernetes.io/name: ingress-nginxapp.kubernetes.io/instance: ingress-nginxapp.kubernetes.io/version: 1.1.1app.kubernetes.io/managed-by: Helmapp.kubernetes.io/component: admission-webhookspec:containers:- name: patchimage: registry.cn-hangzhou.aliyuncs.com/google_containers/kube-webhook-certgen:v1.1.1imagePullPolicy: IfNotPresentargs:- patch- --webhook-name=ingress-nginx-admission- --namespace=$(POD_NAMESPACE)- --patch-mutating=false- --secret-name=ingress-nginx-admission- --patch-failure-policy=Failenv:- name: POD_NAMESPACEvalueFrom:fieldRef:fieldPath: metadata.namespacesecurityContext:allowPrivilegeEscalation: falserestartPolicy: OnFailureserviceAccountName: ingress-nginx-admissionnodeSelector:kubernetes.io/os: linuxsecurityContext:runAsNonRoot: truerunAsUser: 2000

部署ingress-nginx-controller

接下来apply配置文件。

# kubectl get pod -n ingress-nginx
NAME                                        READY   STATUS      RESTARTS   AGE
ingress-nginx-admission-create-nxq97        0/1     Completed   0          31s
ingress-nginx-admission-patch-g2tn4         0/1     Completed   0          31s
ingress-nginx-controller-74c6bcdc65-qdwct   1/1     Running     0          31s

syncthing域名访问

apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:name: ingress-host-bar
spec:ingressClassName: nginx       #默认就写Nginxrules:- host: "xxxxx"           #服务的域名http:paths: - pathType: Prefix        #表示以前缀的方式进行匹配path: "/"               #前缀必须有个"/",才可以成功匹配backend:service:              #规定Ingress后端的Servicename: syncthing      #后端Service的名称port:  number: 8384      #后端Service监听的端口

使用下面的命令apply:

kubectl apply -f ingress-syncthing.yaml

访问Ingress:

# kubectl get svc -n ingress-nginx
NAME                                 TYPE        CLUSTER-IP     EXTERNAL-IP   PORT(S)                      AGE
ingress-nginx-controller             NodePort    10.96.252.85   <none>        80:31465/TCP,443:31816/TCP   27m
ingress-nginx-controller-admission   ClusterIP   10.96.210.66   <none>        443/TCP                      27m

但是此时的域名还不能直接用于访问,需要在本地配置下域名映射,例如在linux的/etc/hosts文件内增加woker阶段和自定义域名的解析。
也可以去买个域名,我是购买了一个阿里云的域名,然后配置解析woker节点的ip(192网段),这样在局域网内直接访问域名+端口就可以访问后端了

例如:域名xxx:31465/
这个根path “/” 一定要带。。。

K8S篇-安装Syncthing相关推荐

  1. K8S篇-安装nfs插件

    前言 有关k8s的搭建可以参考:http://t.csdn.cn/H84Zu 有关过程中使用到的nfs相关的nas,可以参考: http://t.csdn.cn/ACfoT http://t.csdn ...

  2. 容器云之K8s自动化安装方式的选择

    目前kubernetes 已经发展到1.5的时代,但在这之前学习和使用kubernetes还是走了不少弯路,第一个问题就是安装,也许你会说安装很简单.照着官网或网上抄一篇就可以装上了-- 而我们使用k ...

  3. 废旧手机安装Syncthing作为文件服务器

    本人非软件专业人士,因为平时喜欢网络,故凭借三脚猫的功夫边学变卖完成了这一篇用废旧手机通过安装synthing后用作文件服务器的文章. 上次安装的Aidlux文件太大后来没用,换成了Termux,这个 ...

  4. k8s上安装并初始化Helm。minikube

    helm简介 Helm 可以理解为 Kubernetes 的包管理工具,可以方便地发现.共 享和使用为Kubernetes构建的应用. Helm 采用客户端/服务器架构,有如下组件组成: Helm C ...

  5. k8s上安装并初始化Helm,helm基础使用教程

    全栈工程师开发手册 (作者:栾鹏) 架构系列文章 helm的github地址:https://github.com/helm/helm?spm=a2c4g.11186623.2.7.Qr9c2B he ...

  6. 【NodeJs-5天学习】第四天存储篇① ——安装使用mysql 8.0

    [NodeJs-5天学习]第四天篇① --安装mysql 8.0 1. 前言 2. MySql 8.0 2.1 下载 2.2 安装 2.3 常用命令 2.3.1 MySQL服务的启动和停止 2.3.2 ...

  7. DockerK8s---跟我一步步部署K8s(二进制安装部署)

    文章目录 Docker&K8s---跟我一步步部署K8s(二进制安装部署) Kubernetes(K8s)概述 Kubernetes快速入门 四组基本概念 常见的K8s安装部署方式 准备工作 ...

  8. 废旧手机安装Syncthing作为文件服务器之2-文件同步

    上次说到通过termux用废旧手机做文件服务器,如下文 ss​​​​​​​废旧手机安装Syncthing作为文件服务器_m0_59677938的博客-CSDN博客 最后发现OTG U盘映射不进来,所以 ...

  9. 树莓派 安装 Syncthing 自建私有云盘 照片备份 备份手机相册

    手机上存着不少照片,自己又时常折腾手机,总有数据丢失的问题,又对市面上的云盘不怎么放心,所以打算在家里利用树莓派搭建一个私有云.一番查找之后,发现了 syncthing.Syncthing 是一个跨平 ...

最新文章

  1. 《课程的反思与重建--我们需要什么样的课程观》之心得体会
  2. linux 查看整个根目录下各个文件占用情况
  3. 安卓手机浏览器排行_安卓手机双11性价比排行发布|拯救者手机发透明版|小米发大光圈手机镜头...
  4. 2020 Jiangsu Collegiate Programming Contest
  5. Tensorflow Object detection API 在 Windows10 配置
  6. java里面super(),Java中super
  7. 【XSY2307】树的难题
  8. 突破信息封锁,快速建立镜像网站
  9. PDF文件不支持直接编辑 PDF如何转化为可以编辑的Word文档
  10. 直线旋转动画html5,多视角3D可旋转的HTML5 Logo动画
  11. (转)独家| ICO被定性为涉嫌非法集资 一夜暴富梦碎
  12. 区块链发展迎来新机遇
  13. python中open函数打开文件_Python中open函数怎么操作文件--9
  14. Android系统权限和root权限
  15. WebRTC源码分析四:视频模块结构
  16. 计算机网络第三章数据链路层习题答案
  17. mysql数据库状态如何监控数据库_MySQL数据库之zabbix3.2监控MYSQL状态
  18. vue小项目整理—main.js(一)
  19. java list分组聚合
  20. ossec日志文件的安装

热门文章

  1. 好乐买总裁李树斌:10亿,突破技术瓶颈
  2. 电子商务电子支付实训二
  3. 计算机视觉的主要技术有哪些?计算机视觉应用领域盘点
  4. mysql查找删除重复数据并只保留一条
  5. 单片机检测信号通断通用电路(3.3V/5V直流信号,24V+直流信号,220V交流信号)
  6. PyCharm 安装 订制模板
  7. D435i相机标定(不同标定方法总结)
  8. html 让其中一个div浮在另一个div上面
  9. 单点登录之CAS SSO从入门到精通(第三天)
  10. 使用Ngrok配置免费的外网域名