Kubernetes部署篇:本地开发测试环境搭建
本文侧重于入门Kubernetes时的本地开发测试环境搭建,及minikube的使用.
尤其在国内使用时需要开启网络代理,否则会因为访问Google的一些服务失败而造成各种运行失败的问题.
Mac单节点体验
先安装相应的几个工具:
- 下载Minikube: minikube-darwin-amd64
- kuberctl
后续命令:
chmod +x minikube-darwin-amd64
mv minikube-darwin-amd64 /usr/local/bin/minikube
brew install kubectl
验证环境正确:
注: 进行前需梯子,否则第一步下载localkube可能失败,产生如下错误
Error creating localkube asset from url: Error opening file asset: open /Users/xulz/.minikube/cache/localkube/localkube-v1.8.0: no such file or directory
进而导致之后Pod的状态一直是ContainerCreating
# 确保本机已安装VirtualBox
minikube start
kubectl run hello-minikube --image=gcr.io/google_containers/echoserver:1.4 --port=8080
# 检查Pod是否已运行, 需要从ContainerCreating更新为Running
kubectl get pod
# 如果一直是ContainerCreating, 检查错误原因
kubectl describe pods
# 页面应该可访问
curl $(minikube service hello-minikube --url)
# 查看Dashboard
minikube dashboard
# 不用时清除
kubectl delete deployment hello-minikube
minikube stop
Ubuntu多节点
使用工具conjure-up搭建本地测试/开发环境, 本身基于juju部署工具.
官方支持2种部署模式:
-
kubernetes-core : (Staging环境) 1个Master节点+1个Worker节点
-
canonical-kubernetes: (生产环境) 2 masters, 3 workers, 3 etc nodes 及API Load Balance
# 本地安装使用kubectl
sudo snap install kubectl --classic
# 准备阶段
sudo snap install conjure-up --classic
sudo snap install lxd
newgrp lxd
sudo usermod -a -G lxd xulz
/snap/bin/lxd init
# 需要重启机器
sudo reboot
# 禁用IPv6, conjure-up基于的juju暂时不支持
lxc network set lxdbr0 ipv6.address none
使用图像界面安装
conjure-up kubernetes
# 对于Docker的虚拟网络插件,这里选择默认的Flannel
# 安装过程需开启梯子, gcr.io 不可访问
Kubernetes常用网络插件: flannel, calico, weave
这里的网络也称作SDN(软件定义网络), 通常基于CNI: Container Network Interface/容器网络接口
juju常用命令
在查看运行环境及问题排查时常会用到的命令.
juju controllers
# Models 有2个是因为包含内置的管理模块default
# 查看当前的 Controller, Model, User
juju whoami
# 显示当前应用状态
juju status
# 远程登录到master
# 日志存放在 /var/log/juju/
juju ssh kubernetes-master/0
# 获取当前controller名称
juju switch
# 卸载停止controller
juju destroy-controller <上一步得到的名字> --destroy-all-models
# 单独卸载 model
juju destroy-model <model_name>
资源
注: gcr(Google Container Registry)的URL结构是gcr.io/{PROJECT_ID}/{image}:tag,在国内不可访问,请使用以上镜像.