kubesphere 后端调试
本地环境搭建
参考文档:
本地运行KubeSphere:https://github.com/kubesphere/community/blob/master/developer-guide/development/how-to-run-kubesphere-core.md
网真原理及调试:https://github.com/kubesphere/community/blob/master/developer-guide/development/how-telepresence-works.md
网真连接远程:https://github.com/kubesphere/community/blob/master/developer-guide/development/how-to-connect-remote-service.md
1.安装go环境
$ wget https://dl.google.com/go/go1.13.linux-amd64.tar.gz
$ tar -C /usr/local -zxvf go1.13.linux-amd64.tar.gz
$ vim /etc/profile # 在~/.profile中添加以下内容
PATH=”$HOME/bin:$HOME/.local/bin:$PATH”
export PATH=$PATH:/usr/local/go/bin
export GOROOT=/usr/local/go
export GOPATH=$HOME/go
export PATH=$PATH:$HOME/go/bin
export GOPROXY=https://goproxy.cn,direct
$ source /etc/profile #重新加载环境变量
$ mkdir /root/go #创建go目录
2. 新建运行目录并下载kubesphere代码
$ mkdir -p $GOPATH/src/kubesphere.io/
$ cd $GOPATH/src/kubesphere.io/
$ git clone https://github.com/kubesphere/kubesphere
3. 搭建Telepresence代理运行本地调试代码
Telepresence需要python3,但是平台本身有很多东西依赖于python2
所以不要随意升级,而是同时用python2和python3
如果安装pyhton3之后yum不能用了
参考
1.安装python3
# 1.安装python3
$ wget https://www.python.org/ftp/python/3.6.1/Python-3.6.1.tar.xz
$ tar -xf Python-3.6.1.tgz
$ cp -r Python-3.6.1 /usr/local/bin/
$ cd Python-3.6.1
$ ./configure
$ make
$ make install
# 设置默认使用python3
$ cd /usr/bin
$ mv python python.bak
$ ln -s /usr/local/bin/python3.6 /usr/bin/python
$ ln -sf /usr/local/bin/python3.6 /usr/bin/python3
#如果改完之后yum不能用了,修改不能用的这个文件#!/usr/bin/python为#!/usr/bin/python2
2.安装Telepresence需要的依赖
# 2.安装Telepresence需要的依赖
$ yum install -y sshfs conntrack torsocks socat git
出现找不到包的话,安装epel-release开启EPEL源,参考https://jpanj.com/2018/centos-install-epel-repo/
# 安装epel-release开启EPEL源
$ yum install epel-release
#或者
$ wget https://dl.fedoraproject.org/pub/epel/epel-release-latest-7.noarch.rpm
$ yum install epel-release-latest-7.noarch.rpm
3.在/home/下载Telepresence的二进制文件安装
# 3.在/home/下载Telepresence的二进制文件安装
$ git clone https://github.com/telepresenceio/telepresence
$ cd telepresence
4.修改telepresence代码
# 4.修改网真源码local.py 中第59行'kubenetes.deafult'引用为'baidu',以及443端口改为80
$ vim /home/telepresence/telepresence/outbound/local.py
#执行安装
$ env PREFIX=/usr/local ./install.sh
# 如果显示找不到python3,修改python3的配置文件
5.从集群拷贝配置文件
# 5.从k8s集群的master节点拷贝 /usr/local/bin/kubectl 与 /root/.kube/config 到本机相应目录
$ 这就不写了吧
6.设置KubeSphere核心的配置(官网参考)
官网的比较全,但是你的环境安装了那些就配置那些不要放多余的,比如sonarQube、devops等等redis不需要password就可以连接,对于需要key的,自行去集群查取secret,不要硬搬比如:
# 6.设置KubeSphere核心的配置
# 新建文件并键入如下基本配置信息,还安装了其他的,请参考官网一一添上
$ vim /etc/kubesphere.yaml
文件内容如下:
kubernetes:
kubeconfig: "/root/.kube/config"
master: https://[后端节点ip]:6443
qps: 1e+06
burst: 1000000ip
ldap:
host: openldap.kubesphere-system.svc:389
managerDN: cn=admin,dc=kubesphere,dc=io
managerPassword: admin
userSearchBase: ou=Users,dc=kubesphere,dc=io
groupSearchBase: ou=Groups,dc=kubesphere,dc=io
monitoring:
endpoint: http://prometheus-k8s.kubesphere-monitoring-system.svc:9090
secondaryEndpoint: http://prometheus-k8s-system.kubesphere-monitoring-system.svc:9090
redis:
host: redis.kubesphere-system.svc
port: 6379
password: ""
db: 0
在运行telepresence之前,有个大坑提前预警
运行网真时异常退出可能会造成deployment没有正常swapping回去,以至于原来的ks-apiserver的pod丢失正确退出方式见文末
# 获取生成ks-apiserver的deployment的yaml保存为ks-apiserver.yaml
$ kubectl get deployment -n kubesphere-system ks-apiserver -o yaml > ks-apiserver.yaml
# 赋权
$ chmod +x ks-apiserver.yaml
7.运行Telepresence(示例)
# 7.运行Telepresence
$ telepresence --also-proxy=[ks-apiserver的svc的ip,如下] --namespace kubesphere-system --swap-deployment ks-apiserver --expose 9090:9090 --run go run ./cmd/ks-apiserver/apiserver.go
4.常见问题
1.由Telepresence创出来的这个pod报错ErrImagePull 检查该pod镜像下载成功没有,集群中的每个节点都要检查 代理pod可能会调度到集群中的任意节点,一旦那个节点没有镜像又下载失败就会报错2.运行telepresence总是自动退出
首先检查telepresence.log3.报错telepresence invalid configuration: no configuration has been provided
检查kubesphere.yaml配置全没有4.如何退出网真代理调式 ctrl+c或者crtl+break这样会正常删除网真起的代理pod,并且将deployment swapping回去
5.如果网真异常退出怎么办?
杀掉占用9090端口进程并手动删除网真起的代理pod
去ks-installer的pod里面找到ks-apiserver deployment的yaml文件,重新执行
后端代码调试
暂时不得空玩这个……先搁着