前言:前几天有粉丝问我,网上java面试题总是参差不齐,希望我为他整理一套全面的java面试题,并且这套java面试题有个要求,必须能够让他20天就能看完这些面试题,他说现在很多面试题我看都得看3个月才能看完,然后我才能去找工作,但是自己得时间有限所以想让我帮他总结一套万能面试java求职笔记。接下来我将会至少分为12个章节进行阐述这套Java求职笔记,感兴趣的可以坚持看完!觉得不错的可以点个赞。
1为什么写这套Java求职笔记
很早的时候我就想写一些Java求职方向的一些文章,由于很长时间耽搁了加上,有粉丝后台问我,可不可以帮他总结一些java求职笔记,他看了很多Java技术有很多技术,很迷茫不知道学哪些,我笑着说,不要着急,无论你到什么时候你都会迷茫,因为技术一直在更新,谢谢你信任我,解救你的迷茫唯一办法就是多看LRyab博客,就是这样我带着粉丝的问题,开始编写了这套Java求职笔记,看完这套求职笔记,我相信很多人都会找到属于自己的心仪工作。
2K8s容器云集群拓展技术大纲图
3K8s容器云集群拓展技术
k8s是什么,K8s是管理容器状态的一款容器治理软件,集群中启动的容器全部跑在了K8s的集群节点上,如果其中一个节点挂了另外一个就会自动启动。
3.1K8s集群环境搭建
准备4台虚拟主机
安装docker环境
检查docker安装
准备K8s环境工具:Rancher+Docker
使用Docker工具安装rancher
检测rancher是否安装成功
启动访问rancher
添加K8s节点
配置节点服务器
3.2K8s集群部署jenkins容器镜像
3.3K8s部署tomcat镜像应用
1、准备tomcat镜像
2、编写部署tomcat镜像的yaml编写
vim k8s-tomcat7.yamlapiVersion: apps/v1beta2 #当前配置格式版本
kind: Deployment #创建资源类型
metadata: #资源元数据,name是必须项
name: tomcat7-deployment
namespace: kube-system
spec: #资源规格说明
replicas: 1 #副本数量
selector:
matchLabels:
k8s-app: web-tomcat7
template: #定义pod模板
metadata: #pod元数据,至少一个label
labels:
k8s-app: web-tomcat7
spec: #pod规格说明
containers:
- name: tomcat7
image: java8tomcat7:1.0
ports:
- containerPort: 8080
apiVersion: v1
kind: Service
metadata:
name: web-tomcat7
namespace: kube-system
spec:
ports:
- port: 8099
targetPort: 8080
nodePort: 30899 #浏览器访问的端口
selector:
k8s-app: web-tomcat7
type: NodePort
3启动部署k8s
运行:kubectl apply -f k8s-tomcat7.yaml
删除:kubectl delete -f k8s-tomcat7.yaml
查看所有节点:kubectl get pods --all-namespaces -o wide
查看某个节点的情况:kubectl description tomcat7-deployment-87f87c9ff-mks5t get pods
3.4k8s yaml文件详解
apiVersion: v1 #必选,版本号,例如v1
kind: Pod #必选,Pod
metadata: #必选,元数据
name: string #必选,Pod名称
namespace: string #必选,Pod所属的命名空间
labels: #自定义标签
- name: string #自定义标签名字
annotations: #自定义注释列表
- name: string
spec: #必选,Pod中容器的详细定义
containers: #必选,Pod中容器列表
- name: string #必选,容器名称
image: string #必选,容器的镜像名称
imagePullPolicy: [Always | Never | IfNotPresent] #获取镜像的策略 Alawys表示下载镜像 IfnotPresent表示优先使用本地镜像,否则下载镜像,Nerver表示仅使用本地镜像
command: [string] #容器的启动命令列表,如不指定,使用打包时使用的启动命令
args: [string] #容器的启动命令参数列表
workingDir: string #容器的工作目录
volumeMounts: #挂载到容器内部的存储卷配置
- name: string #引用pod定义的共享存储卷的名称,需用volumes[]部分定义的的卷名
mountPath: string #存储卷在容器内mount的绝对路径,应少于512字符
readOnly: boolean #是否为只读模式
ports: #需要暴露的端口库号列表
- name: string #端口号名称
containerPort: int #容器需要监听的端口号
hostPort: int #容器所在主机需要监听的端口号,默认与Container相同
protocol: string #端口协议,支持TCP和UDP,默认TCP
env: #容器运行前需设置的环境变量列表
- name: string #环境变量名称
value: string #环境变量的值
resources: #资源限制和请求的设置
limits: #资源限制的设置
cpu: string #Cpu的限制,单位为core数,将用于docker run --cpu-shares参数
memory: string #内存限制,单位可以为Mib/Gib,将用于docker run --memory参数
requests: #资源请求的设置
cpu: string #Cpu请求,容器启动的初始可用数量
memory: string #内存清楚,容器启动的初始可用数量
livenessProbe: #对Pod内个容器健康检查的设置,当探测无响应几次后将自动重启该容器,检查方法有exec、httpGet和tcpSocket,对一个容器只需设置其中一种方法即可
exec: #对Pod容器内检查方式设置为exec方式
command: [string] #exec方式需要制定的命令或脚本
httpGet: #对Pod内个容器健康检查方法设置为HttpGet,需要制定Path、port
path: string
port: number
host: string
scheme: string
HttpHeaders:
- name: string
value: string
tcpSocket: #对Pod内个容器健康检查方式设置为tcpSocket方式
port: number
initialDelaySeconds: 0 #容器启动完成后首次探测的时间,单位为秒
timeoutSeconds: 0 #对容器健康检查探测等待响应的超时时间,单位秒,默认1秒
periodSeconds: 0 #对容器监控检查的定期探测时间设置,单位秒,默认10秒一次
successThreshold: 0
failureThreshold: 0
securityContext:
privileged:false
restartPolicy: [Always | Never | OnFailure]#Pod的重启策略,Always表示一旦不管以何种方式终止运行,kubelet都将重启,OnFailure表示只有Pod以非0退出码退出才重启,Nerver表示不再重启该Pod
nodeSelector: obeject #设置NodeSelector表示将该Pod调度到包含这个label的node上,以key:value的格式指定
imagePullSecrets: #Pull镜像时使用的secret名称,以key:secretkey格式指定
- name: string
hostNetwork:false #是否使用主机网络模式,默认为false,如果设置为true,表示使用宿主机网络
volumes: #在该pod上定义共享存储卷列表
- name: string #共享存储卷名称 (volumes类型有很多种)
emptyDir: {} #类型为emtyDir的存储卷,与Pod同生命周期的一个临时目录。为空值
hostPath: string #类型为hostPath的存储卷,表示挂载Pod所在宿主机的目录
path: string #Pod所在宿主机的目录,将被用于同期中mount的目录
secret: #类型为secret的存储卷,挂载集群与定义的secre对象到容器内部
scretname: string
items:
- key: string
path: string
configMap: #类型为configMap的存储卷,挂载预定义的configMap对象到容器内部
name: string
items:
- key: string
3.5K8s常用命令
1创建资源对象根据yaml配置文件创建资源对象:kubectl create -f ***.yaml
2查看资源对象
查看资源版本标签:kubectl api-versions
查看集群状态:kubectl get cs
查看集群节点信息:kubectl get nodes
查看所有Pod列表:kubectl get pods
查看deployment:kubectl get deploy
查看端口映射:kubectl get svc
查看指定命名空间的服务:kubectl get svc -n kubectl-system
显示运行中的Pod、Service、Deployment以及ReplicaSet的关键信息:kubectl get all
查看所有的命名空间:kubectl get all --all-namespace
3描述资源对象
显示Node的详细信息:kubectl describe nodes <node-name>
显示Pod的详细信息:kubectl describe pods <pod-name>
显示由RC管理的Pod的信息:kubectl describe pods <rc-name>
4删除资源对象
基于pod.yaml定义的名称删除Pod:kubectl delete -f pod.yaml
删除所有Pod:kubectl delete pods --all
于删除名称为my_pod的Pod:kubectl delete pod my_pod
5执行容器命令
执行Pod的date命令:kubectl exec <pod-name> date
指定Pod中某个容器执行date命令:kubectl exec <pod-name> -c <container-name> date
通过bash进入容器:kubectl exec -it <pod-name> -c <container-name> /bin/bash
kubectl exec -it container-name /bin/bash
6查看容器日志
查看容器输出到stdout的日志:kubectl logs <pod-name>
跟踪查看容器的日志,相当于tail -f命令的结果:kubectl logs -f <pod-name> -c
4结束语
LRyab博客Java求职笔记系列,到目前更新完毕,大家可以根据需要去自行掌握前10个章节推荐大家掌握后2个章节大家可以根据需要进行了解,还是那句话,围绕着自己擅长的技术去学习,关键是学以致用能够在工作中应用,任何技术知识最终都是为了变现,如果学习技术不能赚钱,即使这门技术再好也不推荐大家学习。
5个人说明
我是LRyab博客,专注电商项目实战开发,擅长网站搭建与技术问题指导,经验是由一点一点积累的,思维也是由一天一天训练出来的。谢谢大家的阅读,原创不易,如果你认为文章对你有所帮助,就点个赞感谢大家支持,你的点赞是我持续写作的动力!