环境说明
- 系统: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