天天看点

花了20天的时间给粉丝整理的一套“最全“的Java求职笔记(十二)1为什么写这套Java求职笔记2K8s容器云集群拓展技术大纲图3K8s容器云集群拓展技术4结束语5个人说明

前言:前几天有粉丝问我,网上java面试题总是参差不齐,希望我为他整理一套全面的java面试题,并且这套java面试题有个要求,必须能够让他20天就能看完这些面试题,他说现在很多面试题我看都得看3个月才能看完,然后我才能去找工作,但是自己得时间有限所以想让我帮他总结一套万能面试java求职笔记。接下来我将会至少分为12个章节进行阐述这套Java求职笔记,感兴趣的可以坚持看完!觉得不错的可以点个赞。

1为什么写这套Java求职笔记

很早的时候我就想写一些Java求职方向的一些文章,由于很长时间耽搁了加上,有粉丝后台问我,可不可以帮他总结一些java求职笔记,他看了很多Java技术有很多技术,很迷茫不知道学哪些,我笑着说,不要着急,无论你到什么时候你都会迷茫,因为技术一直在更新,谢谢你信任我,解救你的迷茫唯一办法就是多看LRyab博客,就是这样我带着粉丝的问题,开始编写了这套Java求职笔记,看完这套求职笔记,我相信很多人都会找到属于自己的心仪工作。

2K8s容器云集群拓展技术大纲图

花了20天的时间给粉丝整理的一套“最全“的Java求职笔记(十二)1为什么写这套Java求职笔记2K8s容器云集群拓展技术大纲图3K8s容器云集群拓展技术4结束语5个人说明

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博客,专注电商项目实战开发,擅长网站搭建与技术问题指导,经验是由一点一点积累的,思维也是由一天一天训练出来的。谢谢大家的阅读,原创不易,如果你认为文章对你有所帮助,就点个赞感谢大家支持,你的点赞是我持续写作的动力!