ubuntu 16.04 k8s(kubernetes) delve debug环境配置

环境说明

  • 系统:ubuntu 16.04
  • k8s版本:1.5.7
  • 内存:8GB

Docker安装

1. 卸载旧版本

sudo apt-get remove docker docker-engine docker.io

2. 配置仓库

apt-get update
apt-get -y install \
    apt-transport-https \
    ca-certificates \
    curl \
    software-properties-common
curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo apt-key add -
apt-key fingerprint 0EBFCD88
add-apt-repository \
   "deb [arch=amd64] https://download.docker.com/linux/ubuntu \
   $(lsb_release -cs) \
   stable"

3. 安装docker ce

apt-get update
apt-cache madison docker-ce
apt-get -y install docker-ce=17.06.0~ce-0~ubuntu

etcd安装

1. 安装

ETCD_VER=v3.2.5
# choose either URL
GOOGLE_URL=https://storage.googleapis.com/etcd
GITHUB_URL=https://github.com/coreos/etcd/releases/download
DOWNLOAD_URL=${GOOGLE_URL}

rm -f /tmp/etcd-${ETCD_VER}-linux-amd64.tar.gz
rm -rf /opt/etcd-${ETCD_VER} && mkdir -p /opt/etcd-${ETCD_VER}

curl -L ${DOWNLOAD_URL}/${ETCD_VER}/etcd-${ETCD_VER}-linux-amd64.tar.gz -o /tmp/etcd-${ETCD_VER}-linux-amd64.tar.gz
tar xzvf /tmp/etcd-${ETCD_VER}-linux-amd64.tar.gz -C /opt/etcd-${ETCD_VER} --strip-components=1
/opt/etcd-${ETCD_VER}/etcd --version

2. 环境变量

echo "export PATH=/opt/etcd-${ETCD_VER}:\$PATH" >> /etc/profile

go安装

1. 下载go

cd /usr/local
wget https://storage.googleapis.com/golang/go1.9rc2.linux-amd64.tar.gz
tar xf go1.9rc2.linux-amd64.tar.gz
mkdir -p /home/go

2. 环境变量

echo 'export PATH=/usr/local/go/bin:$PATH' >> /etc/profile
echo "export GOPATH=/home/go" >> /etc/profile

OpenSSL安装

apt-get -y install openssl

安装k8s

安装

apt-get -y install unzip make gccgo
cd /home/go
wget https://github.com/kubernetes/kubernetes/archive/v1.5.7.zip
unzip v1.5.7.zip 
cd kubernetes-1.5.7
. /etc/profile
make

启动

./hack/local-up-cluster.sh -O

配置

export KUBERNETES_PROVIDER=local
cluster/kubectl.sh config set-cluster local --server=https://localhost:6443 --certificate-authority=/var/run/kubernetes/apiserver.crt
cluster/kubectl.sh config set-credentials myself --username=admin --password=admin
cluster/kubectl.sh config set-context local --cluster=local --user=myself
cluster/kubectl.sh config use-context local
cluster/kubectl.sh

安装delve

go get github.com/derekparker/delve/cmd/dlv
cd /home/go/src/github.com/derekparker/delve
echo 'export >> /etc/profile
. /etc/profile

dlv debug

启动

dlv exec /home/go/kubernetes-1.5.7/_output/bin/kubectl -- run my-nginx --image=nginx --replicas=2 --port=80

设置断点

(dlv) b cmd/run.go:138
Breakpoint 1 set at 0x1c3a45b for k8s.io/kubernetes/pkg/kubectl/cmd.Run() ./kubernetes-1.5.7/_output/local/go/src/k8s.io/kubernetes/pkg/kubectl/cmd/run.go:138

前进到断点

(dlv) c
> k8s.io/kubernetes/pkg/kubectl/cmd.Run() ./kubernetes-1.5.7/_output/local/go/src/k8s.io/kubernetes/pkg/kubectl/cmd/run.go:138 (hits goroutine(1):1 total:1) (PC: 0x1c3a45b)
   133:         cmd.Flags().String("service-overrides", "", "An inline JSON override for the generated service object. If this is non-empty, it is used to override the generated object. Requires that the object supply a valid apiVersion field.  Only used if --expose is true.")
   134:         cmd.Flags().Bool("quiet", false, "If true, suppress prompt messages.")
   135:         cmd.Flags().String("schedule", "", "A schedule in the Cron format the job should be run with.")
   136: }
   137:
=> 138: func Run(f cmdutil.Factory, cmdIn io.Reader, cmdOut, cmdErr io.Writer, cmd *cobra.Command, args []string, argsLenAtDash int) error {
   139:         if len(os.Args) > 1 && os.Args[1] == "run-container" {
   140:                 printDeprecationWarning("run", "run-container")
   141:         }
   142:
   143:         // Let kubectl run follow rules for `--`, see #13004 issue
标签:KubernetesUbuntu 发布于:2019-11-13 23:55:58