Kubernets开发环境搭建

Table of Contents

前言

Kubernets是Google开源的Google开源的一个容器编排引擎,它支持自动化部署、大规模可 伸缩、应用容器化管理。Google有着丰富的容器管理经验以及基础设施软件,曾经先后构建 3个不同的容器管理系统,分别是Borg, Omega和Kubernetes。而K8s经过近5年的演进,也已 经成为业界最重要的开源系统,并且众多云厂商都推出自己的KaaS,提供容器化服务。本文 主要是尝试对k8s系统进行剖析,深入理解k8s的系统原理。具体的介绍可以参照以下文章:

Borg, Omega, and KubernetesLessons learned from three container-management systems over a decade

系统特点

  • 可移植: 支持公有云,私有云,混合云,多重云
  • 可扩展: 模块化,插件化,可挂载,可组合
  • 自动化: 自动部署,自动重启,自动复制,自动伸缩/扩展

系统架构

虚拟机开发环境

虚拟机配置

在搭建k8s本地环境前,需要准备好基础的操作系统已经必备的工具。本文主要描述如何在 虚拟机上Ubuntu18.04进行配置,首先安装VirtualBox或者是VMware Fusion(Mac系统),下载 Ubuntu18.04系统镜像,在虚拟机中安装系统。需要配置虚拟机的CPU为4核,6G内存(内存过小 无法编译k8s)。

安装golang1.12.4

# download and install golang
cd ~/
wget https://dl.google.com/go/go1.12.4.linux-amd64.tar.gz
tar -xf go1.12.4.linux-amd64.tar.gz
sudo mv go /usr/local/go
rm go1.12.4.linux-amd64.tar.gz

# go path for k8s
mkdir gopath

# ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
#               setup env variable for non-root user
# ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
echo "export GOROOT=/usr/local/go" >> ~/.bashrc
echo "export GOPATH=/home/yourname/gopath" >> ~/.bashrc
echo "export PATH=/usr/local/go/bin:$PATH" >> ~/.bashrc

# check golang version
source ~/.bashrc
go version
# output: go version go1.12.4 linux/amd64

# ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
#               setup env variable for root user
# ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
sudo su -
echo "export GOROOT=/usr/local/go" >> /root/.bashrc
echo "export GOPATH=/home/yourname/gopath" >> /root/.bashrc
echo "export PATH=/usr/local/go/bin:$PATH" >> /root/.bashrc

# check golang version
source /root/.bashrc
go version
# output: go version go1.12.4 linux/amd64

# !!!exit root user
exit

获取K8s

mkdir -p /home/yourname/gopath/src/k8s.io
cd /home/yourname/gopath/src/k8s.io

# 1. wget下载k8s1.11.10
wget https://github.com/kubernetes/kubernetes/archive/v1.11.10.tar.gz
tar -xf v1.11.10.tar.gz && mv kubernetes-1.11.10 kubernetes && rm v1.11.10.tar.gz

# 2. git clone的方法(fork k8s)
git clone https://github.com/YOUYOU/kubernetes.git
git remote add upstream https://github.com/kubernetes/kubernetes.git
git fetch upstream
git checkout -b upstream/release-1.15

编译k8s

sudo su -
apt-get install curl -y

# install etcd
cd /home/yourname/gopath/src/kubernetes
./hack/install-etcd.sh
export PATH=/home/yourname/gopath/src/kubernetes/third_party/etcd:${PATH}

# compile and run k8s
apt-get install make docker.io gcc -y
export KUBERNETES_PROVIDER=local
./hack/local-up-cluster.sh

# build all tools
make

使用k8s

export KUBECONFIG=/var/run/kubernetes/admin.kubeconfig
./cluster/kubectl.sh

# check k8s install
./cluster/kubectl.sh cluster-info
# Kubernetes master is running at http://localhost:8080
# KubeDNS is running at http://localhost:8080/api/v1/namespaces/kube-system/services/kube-dns:dns/proxy

# To further debug and diagnose cluster problems, use 'kubectl cluster-info dump'

容器开发环境

总结

以上就基本完成kubernets单机本地部署,后续开始阅读阅读源码,先配置好编辑器,推荐 VIM或者Emacs,如果你想尝试下Emacs的强大编辑和调试功能,可以参考《从零开始配置 emacs编辑器》,已经配置好了Golang的IDE环境。