###零、环境版本说明
1、docker 19.03.2
```
docker --version
Docker version 19.03.2, build 6a30dfc
```
2、kubectl
```
kubectl version
Client Version: version.Info{Major:"1", Minor:"14", GitVersion:"v1.14.6", GitCommit:"96fac5cd13a5dc064f7d9f4f23030a6aeface6cc", GitTreeState:"clean", BuildDate:"2019-08-19T11:13:49Z", GoVersion:"go1.12.9", Compiler:"gc", Platform:"darwin/amd64"}
Server Version: version.Info{Major:"1", Minor:"16", GitVersion:"v1.16.2", GitCommit:"c97fe5036ef3df2967d086711e6c0c405941e14b", GitTreeState:"clean", BuildDate:"2019-10-15T19:09:08Z", GoVersion:"go1.12.10", Compiler:"gc", Platform:"linux/amd64"}
```
3、minikube v1.5.2
```
minikube version
minikube version: v1.5.2
commit: 792dbf92a1de583fcee76f8791cff12e0c9440ad
```
4、Mac OS 10.14.6
###一、构建测试 docker 服务
1、为了尽量简化例子,我们要部署的服务是用 Nginx 来 serve 一个简单的 HTML 文件 html/index.html
```
mkdir dockerhello
cd dockerhello/
mkdir html
echo '<h1>Hello Docker!</h1>' > html/index.html
```
2、编写Dockerfile
在当前目录创建一个叫 Dockerfile 的新文件,包含下面的内容:
```
FROM nginx
COPY html/* /usr/share/nginx/html
```
3、构建镜像
`docker build -t dockerhello:0.1 .`
4、容器运行
Nginx 默认监听在 80 端口,所以我们把宿主机的 8090 端口映射到容器的 80 端口
`docker run --name dockerhello -d -p 8090:80 dockerhello:0.1`
我们可以在浏览器中输入 [http://127.0.0.1:8090/](http://127.0.0.1:8090/)
看到我们docker容器已经运行起来了
5、引入Kubernetes前的准备
在现实的生产环境中 Docker 本身是一个相对底层的容器引擎,在有很多服务器的集群中,不太可能以上面的方式来管理任务和资源。所以我们需要 Kubernetes 这样的系统来进行任务的编排和调度。在进入下一步前,别忘了把实验用的容器清理掉
`docker rm -f dockerhello`
###二、安装 Kubernetes
需要安装三样东西:
Kubernetes 的命令行客户端 kubctl、
一个可以在本地跑起来的 Kubernetes 环境 Minikube、
以及给 Minikube 使用的虚拟化引擎 hyperkit
```
brew install kubectl
brew install minikube
brew install docker-machine-driver-hyperkit
```
Minikube 默认的虚拟化引擎是 VirtualBox,而 hyperkit 是一个更轻量、性能更好的替代。
它需要以 root 权限运行,所以安装完要把所有者改为 root:wheel,并把 setuid 权限打开
```
sudo chown root:wheel /usr/local/opt/docker-machine-driver-hyperkit/bin/docker-machine-driver-hyperkit
sudo chmod u+s /usr/local/opt/docker-machine-driver-hyperkit/bin/docker-machine-driver-hyperkit
```
然后就可以启动 Minikube 了
`minikube start --vm-driver hyperkit`
如果你在第一次启动 Minikube 时遇到错误或被中断,后面重试仍然失败时,可以尝试运行 minikube delete 把集群删除,重新来过。
```
$ minikube delete
🔥 正在删除 hyperkit 中的“minikube”…
💔 “minikube”集群已删除。
🔥 Successfully deleted profile "minikube"
```
Minikube 启动时会自动配置 kubectl,把它指向 Minikube 提供的 Kubernetes API 服务。可以用下面的命令确认
```
$ kubectl config current-c

本文介绍了从搭建Kubernetes环境到部署应用的全过程,包括Docker环境、Kubernetes基本组件、Minikube安装、Docker服务构建、Kubernetes Pod与Service的创建和管理,以及滚动更新和版本回滚。通过实例演示了如何在Kubernetes集群中运行一个简单的Nginx服务,并展示了如何进行横向扩展和更新。

631

被折叠的 条评论
为什么被折叠?



