入门文档:
https://my.oschina.net/jamesview/blog/2994112
k8s书:
https://kubernetes.io/zh/
https://www.kubernetes.org.cn/ingress
Docker:
一、思想
- 与git思想类似
- 与虚拟机效果类似:虚拟机提供硬件level的虚拟,更重;docker只提供app及自身所需依赖的虚拟,创建迭代快,更小,一台机器几千docker
- 通过dockerfile确定容器创建过程
- 可以与host交互
二、概念:
- Dockerfile:编写依赖和如何生成镜像的步骤定义,同一docker生成的镜像和容器是一致的(可多个)
- 镜像:build Dockerfile后(把环境装好)
- 容器:run 镜像后(启动)
- 仓库:本地镜像仓库,类似github,分版本,可以pull、push镜像
- register:远程库
客户端/服务器:
客户端通过build等命令调用服务器,与register通信
三、工作流
编写Dockerfile - 生成镜像 - 发布镜像 - run成容器
K8
参考开头的ppt
实践
一、参考
Docker: https://docs.docker.com/docker-for-mac/
K8s: https://kubernetes.io/docs/tasks/tools/install-kubectl/#install-kubectl-on-linux
Yml: https://kubernetes.io/docs/concepts/services-networking/ingress/
demo
https://github.com/huoyuxin/deploy-demo
二、调试相关
docker:
- Open bash:
// 启动前:
docker run -it --entrypoint /bin/sh image_name
// 启动后:
docker exec -it container_name /bin/sh
- Bind port
docker run -p 9000:9001 image_name
// host_port:container_port
https://runnable.com/docker/binding-docker-ports
- Vim: docker安装vim
apt-get update
apt-get install vim
- Docker build argument
https://www.jeffgeerling.com/blog/2017/use-arg-dockerfile-dynamic-image-specification
Nginx:
Dynamic path:
https://serverfault.com/questions/876659/grab-value-from-nginx-location-path
K8s: - Port\ targetPort
https://blog.51cto.com/11093860/2336934
https://matthewpalmer.net/kubernetes-app-developer/articles/kubernetes-ports-targetport-nodeport-service.html
三、 疑难
- k8s的node是可以是物理机也可以是虚拟机。Node本质上不是Kubernetes来创建的,Kubernetes只是管理Node上的资源
- k8s怎么连接多个node?kubeadm join
- jenkis & k8s怎么协作:jenkins工作流中调用k8s的deploy,指定yml文件
- 后端服务不能放云上:可以,k8s的cloud-controller-manager组件适用