2021-06-19

另辟蹊径打入kubernetes网络内访问服务

我们知道kubernetes外部访问服务只有四种:port-forward、Ingress、LoadBalancer、NodePort,那有没有一种直接进入到集群内访问服务?当然有,这里为大家提供一个思路及一个方法,大家可以尝试做做,该方法可以为你的工作提效。

        我们知道kubernetes外部访问服务只有四种:port-forward、Ingress、LoadBalancer、NodePort,那有没有一种直接进入到集群内访问服务?当然有,这里为大家提供一个思路及一个方法,大家可以尝试做做,该方法可以为你的工作提效。

        我们知道kubernetes外部访问服务只有四种:port-forward、Ingress、LoadBalancer、NodePort,那有没有一种直接进入到集群内访问服务?当然有,这里为大家提供一个思路及一个方法,大家可以尝试玩玩,该方法可以为你的工作提效。

        场景一:大家在k8s中是不是遇到,想到群集的应用导入数据时,发该服务没有暴露端口,想要导数据得先将服务暴露出来,这时需要先在k8s里创建LoadBalancer或NodePort,或者将原来ClusterIP改为LoadBalancer或NodePort才可以外部访问,或者使用port-forward。ingress这时更不好实现,ingress本身就是一个LoadBalancer,对TCP和UDP实现比较麻烦,端口多的时候无法招架。

image

 

image

 

        场景二:我们想知道k8s集群内部各容器是否互访及内部域名是否互通,通常的做法是进入pod里面去ping、curl等操作,比较麻烦。

 

        说明一下:场景一是外部访问问题,场景二是集群内部之间访问问题。

 

        这种场景我是怎么解决的呢,思路很简单,就是将集群的流量代理出来,如http、vpn、socks等,这里举一个非常实用且简单的方法:跑一个能连sshd的pod就可以了。注意:使用sshd代理上网可能会遇到证书问题,所以大家不要用来代理上网。

 

ssh.yaml

 1 apiVersion: apps/v1 2 kind: Deployment 3 metadata: 4  name: ssh 5  namespace: javalittleman 6 # labels: 7 # app: ssh 8 spec: 9 replicas: 110  template:11  metadata:12   labels:13   app: ssh14  spec:15   containers:16   - name: ssh17   image: panubo/sshd18    env:19    - name: SSH_ENABLE_ROOT20    value: "true"21    - name: SSH_ENABLE_PASSWORD_AUTH22    value: "true"23    - name: MOTD24    value: "欢迎登录"25 #   - name: DISABLE_SFTP26 #    value: "false"27    - name: SSH_USERS28    value: "userr:1000:1000,admin:48:48,root"29    - name: GATEWAY_PORTS30    value: "true"31    - name: TCP_FORWARDING32    value: "true"33 #   - name: SFTP_MODE34 #    value: "true"35 #   - name: SFTP_CHROOT36 #    value: "/data"37 #   - name: SCP_MODE38 #    value: "true"39 #   - name: RSYNC_MODE40 #    value: "true"41    ports:42    - containerPort: 2243     protocol: TCP44 #   tty: true45    volumeMounts:46    - mountPath: /etc/entrypoint.d/47    name: ssh-storage48     subPath: entrypoint.d49    - mountPath: /root/.ssh/50    name: ssh-storage51     subPath: .ssh52 #   - mountPath: /etc/ssh/keys53 #    name: ssh-storage54 #    subPath: keys55    - mountPath: /data56    name: ssh-storage57     subPath: data58    - mountPath: /etc/ssh/59    name: ssh-storage60     subPath: ssh61   volumes:62   - name: ssh-storage63    persistentVolumeClaim:64    claimName: ssh-pvc65  selector:66  matchLabels:67   app: ssh68 ---69 apiVersion: v170 kind: Service71 metadata:72  namespace: javalittleman73  name: ssh74  labels:75  app: ssh76 spec:77  type: LoadBalancer78  ports:79  - port: 2280  targetPort: 2281   protocol: TCP82  selector:83  app: ssh84 85 ---86 apiVersion: v187 kind: PersistentVolumeClaim88 metadata:89 name: ssh-pvc90  namespace: javalittleman91 spec:92 # storageClassName: nfs-client-provisioner193  accessModes:94  - ReadWriteMany95  resources:96  requests:97  storage: 1Mi

 

  以上yaml自己根据自己的情况去配置,我这里使用了存储、LoadBalancer,这些先要准备好

  这个脚本我加了一个对xshell兼容的代码,至于用户密码你可以选择密文或者明文都可以了,这个脚本是放在/etc/entrypoint.d/下的,需要对此加可执行权限chmod。

setpasswd.sh

 1 #!/usr/bin/env bash 2  3 set -e 4 #docker run --rm -it --entrypoint /usr/bin/env docker.io/panubo/sshd:1.3.0 mkpasswd 5 #echo 'root:$6$1yzDg4xFmQMecjlV$ddBMEcWZaHGkyki1aJ67ZavSOJaPVXj8v03PQc5n08Pb6ilplthzrBr/prmcEJ5uplaIvgtMpzDF0pijtCEi01' | chpasswd --encrypted 6  7 # Or if you don't pre-hash the password remove the line above and uncomment the line below. 8 echo "userr:userrpassword" | chpasswd 9 echo "admin:adminpassword" | chpasswd10 11 # 解决xshell报错:服务器发送了一个意外的数据包。received:3,expected:2012 13 sshd_config=/etc/ssh/sshd_config14 findstr='KexAlgorithms1'15 16 if [ `grep -c $findstr $sshd_config` -eq '0' ]; then17 echo "KexAlgorithms curve25519-sha256@libssh.org,ecdh-sha2-nistp256,ecdh-sha2-nistp384,ecdh-sha2-nistp521,diffie-hellman-group14-sha1" >> /etc/ssh/sshd_config18 else19 echo "已经存在"20 fi

 

 

image

 

image

 

效果如下:

image

 

先讲场景二:可以直接在这里ping服务名,如果要跨namespace访问,就可以通过k8s的访问规则去尝试访问,如果访问不了,就证明该服务有问题。

 

image

场景一:接下来就是要把这个192.168.109.125的流量代理出来,这样就可以像把电脑搬到k8s内部网络里访问服务了。下图是通过xshell的隧道方式实现socks代理,当然大家可以使用其它工具。

image

IE代理设置,使用socks5(套节字),当然你可以使用chrome,chrome需要安装插件。

image

 

 

我们来试试如果访问,其它服务这里就不列举了:

直接访问k8s内部IP:如访问Kunsul

image

image

 

 

通过navicat查询或导入导出数据

 

 

 

 

 

 

 









原文转载:http://www.shaoqun.com/a/813664.html

跨境电商:https://www.ikjzd.com/

老师你的奶好大又圆 老师让我解开蕾丝胸罩:http://lady.shaoqun.com/a/247356.html

扛老师那雪白的两条玉腿 巨大在她腿间进进出出:http://lady.shaoqun.com/a/248356.html

口述实录:性欲难耐出轨4次 高潮缠绵爱难忘:http://lady.shaoqun.com/m/a/251596.html

女人喂男人吃私人部位 女人下面被吃有多爽:http://lady.shaoqun.com/m/a/247713.html


我们知道kubernetes外部访问服务只有四种:port-forward、Ingress、LoadBalancer、NodePort,那有没有一种直接进入到集群内访问服务?当然有,这里为大家提供一个思路及一个方法,大家可以尝试做做,该方法可以为你的工作提效。我们知道kubernetes外部访问服务只有四种:port-forward、Ingress、LoadBalancer、NodePort,那有
佛山到中山悦来亲子王国怎么走?悦来亲子王国乘车路线?:http://www.30bags.com/a/422799.html
佛山端午节活动?2021端午节佛山什么地方有活动?:http://www.30bags.com/a/421212.html
佛山二月花展介绍?佛山梦里水乡百花园赏花攻略?:http://www.30bags.com/a/424181.html
澳门圣诞节哪里好玩?有什么好玩的?:http://www.30bags.com/a/404634.html
希腊博物馆系列—奥林匹亚博物馆 - :http://www.30bags.com/a/408322.html
他JJ又粗又长的查插我 乱伦悲剧,黑夜里与小叔子疯狂缠绵:http://www.30bags.com/a/255212.html
扒开屁股自己坐上来 男领导把我下面摸出水了:http://lady.shaoqun.com/a/248374.html
故事:43岁初婚大叔遇到37岁二婚撒娇少女|中年迷失:http://www.30bags.com/a/441881.html
行长将她双腿分得更开 少妇从反抗到迎合:http://lady.shaoqun.com/m/a/248343.html
我和老外真实刺激的交换 老外拿粗大征服了我:http://www.30bags.com/m/a/249801.html
关于性和爱,青春期男生最想知道的五个问题:http://www.30bags.com/a/441879.html
两性有什么区别?女人的原因和男人的不同:http://www.30bags.com/a/441880.html

No comments:

Post a Comment