暂无图片
暂无图片
暂无图片
暂无图片
暂无图片

k8s部署应用包步骤流程

IT那活儿 2022-02-14
4722

点击上方“IT那活儿”,关注后了解更多精彩内容!!!


—  k8s部署应用包步骤  


部署主要步骤


新建镜像,将应用包打入镜像内。


将镜像上传至远程仓库。


新建pod,并引用远程仓库中的镜像并运行pod。

step1. 新建dockerfile,在dockerfile中将应用包添加进来(此处以start.sh为例)。

--新建dockerfile:
FROM IP/test/mydocker:123456789RUN rm -rf /home/*RUN mkdir -p /home/ADD start.sh /home/test/start.shRUN sed -i 's/*/#*/g' /var/spool/cron/tabs/rootRUN rm /var/spool/cron/tabs/configagentENV PATH=.:$ORACLE_HOME/bin:/usr/jre1.8.0_191/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/binENV SHLIB_PATH=$ORACLE_HOME/libENV LD_LIBRARY_PATH=$ORACLE_HOME/libENTRYPOINT ["/bin/sh","/home/test/start.sh"]

step2. 将dockerfile转化为镜像,并上传到远程仓库。

docker build -t test:123456789docker tag 1736b9847575 IP/test/test:123456789docker push IP/test/test:123456789

step3. 新建yaml,在yaml文件中引用远程仓库中的镜像。

--新建yaml:
apiVersion: apps/v1kind: Deploymentmetadata:name: testnamespace: testspec:selector:matchLabels:app: testreplicas: 1template:metadata:labels:app: atestspec:containers:- name: testimage: IP/test/test:123456789volumeMounts:- name: host-timemountPath: /etc/localtimeenv:resources:limits:cpu: "1"memory: 2000Mirequests:cpu: 500mmemory: 1000Mi

step4. 运行yaml文件,新建pod承载应用包。

--运行yaml,新建pod:
kubectl apply -f test.yaml
--查看pod是否运行成功:
kubectl get pod -A -o wide |grep test

至此,已经将应用包(本文以start.sh文件为例)步骤到k8s容器内并运行。

—  以下为k8s基本介绍  —

1. K8s的组件介绍

组件一:Master组件
(1)kube-apiserver
对外提供API接口,处理所有资源的增删改查和监听操作,并将数据保存在Etcd。所有服务访问统一入口。
(2)kube-controller-manager --控制器
ControllerManager负责管理各个资源对应的控制器。维持副本期望数目。
(3)kube-scheduler --调度器
负责介绍任务,选择合适的节点进行分配任务,根据调度算法为新创建的Pod选择一个合适节点部署。
(4)etcd
分布式键值存储系统。用于保存k8s资源数据,比如集群状态数据,Pod、Service等API对象,储存K8S集群所有重要信息。
组件二:Node组件
(1)kubelet
kubelet管理本机运行的容器,可以创建容器、为Pod挂载数据卷、获取容器和节点状态等功能。直接跟容器引擎交互实现容器的生命周期管理。
(2)kube-proxy
负责写入规则至 IPTABLES、IPVS 实现服务映射访问的,具有一定的四层负载均衡功能。

2. K8s命令介绍

Kubernetes常用命令:资源操作
形式kubectl +子命令+参数
子命令:create、delete、get、describe、edit
资源:node、pod、configmap、deploy等
--举例:
(1)查看资源
kubectl get nodes #查看节点列表;
kubectl get deployment #查看deployment;
kubectl get pods  -n kube-system #查看kube-system空间下的pod。
(2)创建资源
kubectl create -f ./my-manifest.yaml #从文件创建资源;
kubectl create  -f ./dir # 使用目录下的所有清单文件来创建资源。
(3)编辑资源
kubectl edit configmapkubectl edit deploy
(4)删除资源
  • kubectl delete pod pod-name
  • Kubectl  delete -f ./my-manifest.yaml
  • kubectl logs my-pod # 输出 pod 的日志(stdout)
  • kubectl exec my-pod -- ls / # 在已存在的容器中执行命令(只有一个容器的情况下)
  • kubectl exec my-pod -c my-container -- ls / # 在已存在的容器中执行命令(pod 中有多个容器的情况下)
  • kubectl top pod POD_NAME --containers # 显示指定 pod 和容器的指标度量
  • kubectl top node my-node # 显示 my-node 的指标度量
  • kubectl cordon my-node # 标记 my-node 不可调度
  • kubectl drain my-node # 清空 my-node 以待维护
  • kubectl uncordon my-node # 标记 my-node 可调度
  • kubectl cluster-info # 显示 master 和服务的地址
  • kubectl taint nodes foo dedicated=special-user:NoSchedule
  • kubectl logs my-pod # 输出 pod 的日志(stdout)
  • kubectl exec my-pod -- ls / # 在已存在的容器中执行命令(只有一个容器的情况下)
  • kubectl exec my-pod -c my-container -- ls / # 在已存在的容器中执行命令(pod 中有多个容器的情况下)
  • kubectl top pod POD_NAME --containers # 显示指定 pod 和容器的指标度量
  • kubectl top node my-node # 显示 my-node 的指标度量
  • kubectl cordon my-node # 标记 my-node 不可调度
  • kubectl drain my-node # 清空 my-node 以待维护
  • kubectl uncordon my-node # 标记 my-node 可调度
  • kubectl cluster-info # 显示 master 和服务的地址
  • kubectl taint nodes foo dedicated=special-user:NoSchedule

本文作者:李伟业

本文来源:IT那活儿(上海新炬王翦团队)

分享

收藏

点赞

在看

文章转载自IT那活儿,如果涉嫌侵权,请发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

评论