资讯专栏INFORMATION COLUMN

k8s部署应用包步骤流程

IT那活儿 / 3584人阅读
k8s部署应用包步骤流程

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


—  k8s部署应用包步骤  


部署主要步骤


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


将镜像上传至远程仓库。


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

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

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

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

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

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

--新建yaml:
apiVersion: apps/v1
kind: Deployment
metadata:
name: test
namespace: test
spec:
selector:
matchLabels:
app: test
replicas: 1
template:
metadata:
labels:
app: atest
spec:
containers:
- name: test
image: IP/test/test:123456789
volumeMounts:
- name: host-time
mountPath: /etc/localtime
env:
resources:
limits:
cpu: "1"
memory: 2000Mi
requests:
cpu: 500m
memory: 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 configmap
kubectl 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那活儿(上海新炬王翦团队)


分享

收藏

点赞

在看

文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。

转载请注明本文地址:https://www.ucloud.cn/yun/129664.html

相关文章

  • 基于drone的CI/CD,对接kubernetes,见证灵活与自由,CI/CD对接kubernet

    摘要:所以我们选一个仓库仓库比较多,我这里选用,都行,根据需求自行选择访问端口,然后就没有然后了功能没有那么强大,不过占用资源少,速度快,我们稳定运行了几年了。 kubernetes集群三步安装 CI 概述 用一个可描述的配置定义整个工作流 程序员是很懒的动物,所以想各种办法解决重复劳动的问题,如果你的工作流中还在重复一些事,那么可能就得想想如何优化了 持续集成就是可以帮助我们解决重复的代码...

    iOS122 评论0 收藏0
  • 构建与定制:唯品会 PaaS 基于 Kubernetes 的实践

    摘要:基于年底或年初没有推广的现状,唯品会部门目前已经做了两年的时间。唯品会现状唯品会目前线上有一千多个域,每个域之间相互的依赖比较复杂,每次的部署发布困难。这是唯品会的架构,主要包含持续集成和持续部署。 数人云上海&深圳两地容器之Mesos/K8S/Swarm三国演义的嘉宾精彩实录第三更来啦。唯品会是数人云Meetup的老朋友,去年曾做过RPC服务框架和Mesos容器化的分享。本次分享中,...

    JackJiang 评论0 收藏0
  • 如何在K8S平台部署微服务

    摘要:本文将介绍如何使用部署微服务,包括服务发现,监控,路由,日志。如何查看二进制文件的动态依赖动态依赖库动态依赖库编译使用,而使用的是所以在下编译的文件一般不能直接使用在环境。 Deploying Micro-services on Kubernetes 本文将介绍如何使用 kubernetes 部署微服务,包括 服务发现,监控,路由,日志。用实际的例子来演示自动化流程。主要分为以下几个部...

    blastz 评论0 收藏0
  • 如何在K8S平台部署微服务

    摘要:本文将介绍如何使用部署微服务,包括服务发现,监控,路由,日志。如何查看二进制文件的动态依赖动态依赖库动态依赖库编译使用,而使用的是所以在下编译的文件一般不能直接使用在环境。 Deploying Micro-services on Kubernetes 本文将介绍如何使用 kubernetes 部署微服务,包括 服务发现,监控,路由,日志。用实际的例子来演示自动化流程。主要分为以下几个部...

    xingqiba 评论0 收藏0
  • k8s与CICD--利用helm部署应用到kubernetes

    摘要:本节主要介绍利用部署应用到中。利用部署一个应用,需要原生资源文件如或等。最后一般都会引用通知插件,将构建结果通知部署人员。说到部署策略,不得不说,实现的功能很多,但是足够的复杂,目前来看,国内只有小红书用起来了。 前言 本小节应该是这个系列剩下的两个小节之一了。剩下一个是之前承诺好的drone-wechart插件。本节主要介绍利用helm部署应用到kubernetes中。至于helm,...

    joyqi 评论0 收藏0
  • k8s与CICD--利用helm部署应用到kubernetes

    摘要:本节主要介绍利用部署应用到中。利用部署一个应用,需要原生资源文件如或等。最后一般都会引用通知插件,将构建结果通知部署人员。说到部署策略,不得不说,实现的功能很多,但是足够的复杂,目前来看,国内只有小红书用起来了。 前言 本小节应该是这个系列剩下的两个小节之一了。剩下一个是之前承诺好的drone-wechart插件。本节主要介绍利用helm部署应用到kubernetes中。至于helm,...

    邹立鹏 评论0 收藏0

发表评论

0条评论

IT那活儿

|高级讲师

TA的文章

阅读更多
最新活动
阅读需要支付1元查看
<