# k8s部署应用包步骤流程

> 作者/来源: UCloud 运营管理员
> 发布时间: 2023-01-11T05:20:00.000Z
> 分类: 解决方案
> 标签: AI, Kubernetes, Docker
> 原文链接: http://117.50.162.249:3000/yun/articles/1260

---

# k8s部署应用包步骤流程

> 来源: https://www.ucloud.cn/yun/129664.html
> 作者: IT那活儿
> 发布日期: 发布于2023-01-11 13:20

k8s部署应用包步骤流程

## **点击上方“IT那活儿”，关注后了解更多精彩内容！！！**

### **—****k8s部署应用包步骤****—**

**部署主要步骤**

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

将镜像上传至远程仓库。

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

#### **step1.** 新建dockerfile，在dockerfile中将应用包添加进来（此处以start.sh为例）。

![](https://ucloud-blog.cn-bj.ufileos.com/articles/129664/images/129664_000.png)

--新建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"]
```

#### **step****2.** 将dockerfile转化为镜像，并上传到远程仓库。

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

#### **step****3.** 新建yaml，在yaml文件中引用远程仓库中的镜像。

![](https://ucloud-blog.cn-bj.ufileos.com/articles/129664/images/129664_001.png)

--新建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
```

#### **step****4.** 运行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组件**

![](https://ucloud-blog.cn-bj.ufileos.com/articles/129664/images/129664_002.png)

###### （1）kube-apiserver

对外提供API接口，处理所有资源的增删改查和监听操作，并将数据保存在Etcd。所有服务访问统一入口。

###### （2）kube-controller-manager --控制器

ControllerManager负责管理各个资源对应的控制器。维持副本期望数目。

###### （3）kube-scheduler --调度器

负责介绍任务，选择合适的节点进行分配任务,根据调度算法为新创建的Pod选择一个合适节点部署。

###### （4）etcd

分布式键值存储系统。用于保存k8s资源数据，比如集群状态数据，Pod、Service等API对象,储存K8S集群所有重要信息。

##### **组件二：Node组件**

![](https://ucloud-blog.cn-bj.ufileos.com/articles/129664/images/129664_003.png)

###### （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。

![](https://ucloud-blog.cn-bj.ufileos.com/articles/129664/images/129664_004.png)

##### （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

![](https://ucloud-blog.cn-bj.ufileos.com/articles/129664/images/129664_005.png)

## 本文作者：李伟业

## 本文来源：IT那活儿（上海新炬王翦团队）

![](https://ucloud-blog.cn-bj.ufileos.com/articles/129664/images/129664_006.png)

![](https://ucloud-blog.cn-bj.ufileos.com/articles/129664/images/129664_007.png)

分享

![](https://ucloud-blog.cn-bj.ufileos.com/articles/129664/images/129664_008.png)

收藏

![](https://ucloud-blog.cn-bj.ufileos.com/articles/129664/images/129664_009.png)

点赞

![](https://ucloud-blog.cn-bj.ufileos.com/articles/129664/images/129664_010.png)

在看