云原生的概念和理论体系非常的完备,but talk is cheap , show me the code ! 但是作为一名程序员,能动手的咱绝对不多BB,虽然talk并不cheap , 能跟不同层次的人讲明白一件事情,本身就不是一件容易的事情。<br />
<br />引题用的图的意思: hello world ! <br />即部署你的第一个k8s应用。
部署步骤
- 准备你的应用程序;
- 编写Dockerfile,制作镜像,并测试;
- 编写yaml文件,找一个k8s资源,部署上线;
<br />
<br />初略的步骤,实际每个步骤做到都不简单,可以进一步拆分成很多二级步骤;后面安排单独的一篇来介绍。<br />
<br />为了节约时间,这里直接放一个nginx的例子。<br />
apiVersion: apps/v1
kind: Deployment
metadata:
name: nginx-deployment
spec:
selector:
matchLables:
app: nginx
replicas: 2
template:
metadata:
labels:
app: nginx
spec:
containers:
- name: nginx
image: nginx:1.7.9
ports:
- containerPort: 80
volumeMounts:
- mountPath: "/usr/share/nginx/html"
name: nginx-vol
volumes:
- name: nginx-vol
emptyDir: {}
<br />
k8s相关指令
执行指令
kubectl apply -f you.yaml
按照标签筛选pod
kubectl get pods -l app=xxx
查看pod对象定义
kubectl describe pod youpodname
进入容器内部
kubectl exec -it youpodname -- /bin/bash
<br />
删除对象
kubectl delete -f you.yaml
kubectl delete deployments/youdeploymentname
<br />
<br />
k8s相关概念
deployment
<br />定义多副本的对象,当pod的定义发生变化的时候,滚动升级<br />
pod
<br />k8s世界中的应用,对应容器组,容器组里面有多个<br />
metadata
<br />元数据, 分为面向用户的label 和面向内部对象的annotation ;<br />
spec
<br />即定义,每个对象的元素不一样,比如deployment 和 pod ; <br />
volume
<br />即数据卷。 相对于pod来说,有两种数据卷、<br />
<br />emptyDir: 宿主机上的默认目录<br />hostPath: 显示指定的宿主机的目录;<br />
devops思考
<br />
<br />
<br />开发人员开发完程序之后,提供两个文件跟运维对接,提高devops体验;<br />
<br />Dockerfile : 制作镜像,标准化开发和部署环境;<br />app.yaml: k8s的部署配置文件,标准化部署配置参数;<br />
<br />
<br />
小结
<br /> 第一个k8s容器化应用.png<br />
原创不易,关注诚可贵,转发价更高!转载请注明出处,让我们互通有无,共同进步,欢迎沟通交流。
我会持续分享Java软件编程知识和程序员发展职业之路,欢迎关注!
网友评论