文章目录
helm相关概念
- Helm
Helm 是一个命令行下的客户端工具。主要用于 Kubernetes 应用程序 Chart 的创建、打包、发布以及创建和管理本地和远程的 Chart 仓库。 - Tiller
Tiller 是 Helm 的服务端,部署在 Kubernetes 集群中。Tiller 用于接收 Helm 的请求,并根据 Chart 生成 Kubernetes 的部署文件( Helm 称为 Release ),然后提交给 Kubernetes 创建应用。Tiller 还提供了 Release 的升级、删除、回滚等一系列功能。 - Chart
Helm 的软件包,采用 TAR 格式。类似于 APT 的 DEB 包或者 YUM 的 RPM 包,其包含了一组定义 Kubernetes 资源相关的 YAML 文件。 - Repoistory
Helm 的软件仓库,Repository 本质上是一个 Web 服务器,该服务器保存了一系列的 Chart 软件包以供用户下载,并且提供了一个该 Repository 的 Chart 包的清单文件以供查询。Helm 可以同时管理多个不同的 Repository。 - Release
使用 helm install 命令在 Kubernetes 集群中部署的 Chart 称为 Release。
注:需要注意的是:Helm 中提到的 Release 和我们通常概念中的版本有所不同,这里的 Release 可以理解为 Helm 使用 Chart 包部署的一个应用实例。
常用的linux命令
文件或者文件夹
将某一个文件从当前虚拟机拷贝到目的虚拟机中的某个目录下 一般为tmp目录
scp ./slwcssportal.tar kylin@10.10.133.203:/tmp/
文件复制
cp [-adfilprsu] 源文件(source) 目标文件(destination)
参数:
-a:是指archive的意思,也说是指复制所有的目录
-d:若源文件为连接文件(link file),则复制连接文件属性而非文件本身
-f:强制(force),若有重复或其它疑问时,不会询问用户,而强制复制
-i:若目标文件(destination)已存在,在覆盖时会先询问是否真的操作
-l:建立硬连接(hard link)的连接文件,而非复制文件本身
-p:与文件的属性一起复制,而非使用默认属性
-r:递归复制,用于目录的复制操作
-s:复制成符号连接文件(symbolic link),即“快捷方式”文件
-u:若目标文件比源文件旧,更新目标文件
移动文件/文件夹
mv [-fiu] source destination
参数说明:
-f:force,强制直接移动而不询问
-i:若目标文件(destination)已经存在,就会询问是否覆盖
-u:若目标文件已经存在,且源文件比较新,才会更新
删除文件或文件夹
rm [fir] 文件或目录
参数说明:
-f:强制删除
-i:交互模式,在删除前询问用户是否操作
-r:递归删除,常用在目录的删除
查看进程
top
关闭防火墙
systemctl stop firewalld
部署项目需要的东西
docker容器部署以及k8s集群管理
kubernetes之helm简介、安装、配置、使用指南
利用腾讯云平台,item.war或者是class文件和chart文件
一、文章中的字母含义
- A:部署包名
- B:项目名,一般项目名与部署包(源代码生成的项目)名称是一致的
- C:用户名,厂商名。
二、准备镜像源和系统部署包。
镜像源如:tomcat:9.2
1、将tomcat.tar镜像引入到部署环境中:
2、查看当前环境所有镜像
docker images
3、查询name带tomcat的镜像
docker image ls |grep tomcat
4、若当前环境无源镜像,需要加载一下tomcat镜像
docker load -i tomcat.tar
系统部署包。如:A(war包解压)
三、目录结构
1)mkdir /data/C/
建立一个C,该系统/厂商/用户的所有项目都放在该文件夹下面,便于管理。
2)在C下创建项目文件夹,如:B。在B文件夹下创建目录src、images、chart。
chart:所有进行chart操作的,都在该文件夹下进行。
src:源代码生成的源项目打包解压后的部署包,放在这个文件夹。
image:存放项目生成的镜像。
四、Chart文件
chart简介
chart 是 Helm 的应用打包格式。chart 由一系列文件组成,这些文件描述了 Kubernetes 部署应用时所需要的资源,比如 Service、Deployment、PersistentVolumeClaim、Secret、ConfigMap 等。
chart文件的结构
template目录下存的文件,配置文件的定义(相当于int i)
例如数据库路径{{ .values.data.datasource.url }
value文件中存的时真实的值,(相当于i=1)
chart文件的建立
1、常用的命令
Chart打包命令:
在chart.yaml 目录下执行 (注意有点)helm package .其他命令:
参考地址
2、chart上传
将打包完成后直接上传到harbor仓库上即可,这时在模板商店会生成相应的模板
五、镜像的操作
注意:到B目录下创建Dockerfile文件,创建镜像
1、打镜像,先创建Dockerfile文件
创建Dockerfile脚本文件:
touch Dockerfile
编辑Dockerfile脚本文件
命令
vim Dockerfile按i键进入编辑模式,写入如下内容:
FROM tomcat:9.2 MAINTAINER images-gateway ADD ./src/gateway.war /usr/tomcat/webapps/gateway.war ADD ./src/resolv.conf /etc/resolv.conf ENV LANG C.UTF-8 EXPOSE 8080解释:
FROM 后为tomcat镜像名称:版本号
from:依赖的东西,例如后端依赖tomcat,前端依赖nginx
Run mkdir -p 挂载路径
挂载路径 :在char中模板文件夹下develop.yaml中mountPath: /opt/AAS-V9.0/domains/mydomain/applications
Copy/ADD 路径1 路径2
路径1:复制的部署包的位置
路径2:放到创建的文件夹中
EXPOSE 8080
为tomcat暴露的端口
这个脚本是生成项目镜像的脚本,引用已经有的tomcat镜像,把部署包放置在tomcat放置镜像的文件夹中,如果有需要镜像进行别的改动的,可以添加脚本语句。
根据Dockerfile生成镜像
- 生成镜像命令注意命令中要加一个英文符号“ .”
docker build --no-cache . -t /data/C/B/images/D:1.0.0 -f Dockerfile docker build -t cssbase:V1.0 .-t:打镜像时设置标签
/data/C/B/images/D:1.0.0 Dockerfile
src/data/C/B/images:路径
D:镜像名
1.0.0:镜像版本
Dockerfile:刚创建的文件
2、标记本地镜像,将其归入某一仓库
一般情况下,在部署之前,无法得知具体的镜像名称,所以这里可以在现场部署时,进行更改
docker tag 原镜像名:版本号 新镜像名:版本号
2、运行验证镜像可正常使用
命令:利用镜像生成一个容器并启动,相当于docker start 与docker start
docker run -id --name=mytodaygogs gogs/gogs -p 3000:3000 /bin/bash/data/C/B/images:路径
D:镜像名称
1.0.0:版本号运行容器
docker start 容器id/镜像名查看所有容器的运行状态
docker ps -a重启容器
docker rstart 容器id/镜像名退出容器
docker exec -it mygogs /bin/bash
运行后,将会启动一个容器加载这个镜像,可以初步测试镜像是否功能正常
3、停止容器运行:
一定要停止容器进行了,再进行下面步骤,否则容易导致值冲突! docker ps | grep D 筛选
docker stop 容器id
docker rm 容器id
4、镜像打包
打包命令:将远程仓库中的镜像打包到本地
docker save -o /data/C/B/images/E.tar 远程仓库镜像所在路径/镜像名:版本号解释:
/data/C/B/images:镜像压缩包所生成的路径,默认为当前目录
E.tar:生成的镜像压缩包
远程仓库镜像所在路径/镜像名:版本号
5、将镜像推送到镜像仓库中
将镜像上传到虚拟机images目录中,利用xftp等软件
进入到该目录
加载镜像
docker load -i E.tar查看镜像
docker images |grep E镜像装箱(打标签将镜像推送到本地仓库)
docker tag SOURCE_IMAGE[:TAG] 远程仓库/原镜像名:TAGSOURCE_IMAGE[:TAG] : 原镜像名称:原版本号
原镜像名:TAG:原镜像名:新版本号推送镜像之前可能需要登陆harbor(密码为harbor的账户和密码)
docker login harbor地址将本地仓库中的镜像推送镜像至harbor仓库(远程仓库)
docker push 远程仓库/原镜像名[:TAG]原镜像名[:TAG]:原镜像名:新版本号(即刚刚打标签生成的)
6、镜像备份(从harbor上下载至本地)
chart备份直接下载即可- 查看本地仓库中的镜像是否存在需要备份的镜像(即容器)
- 若没有则将harbor中的镜像拉取到本地仓库
docker pull 远程仓库的地址/仓库名/镜像名:版本号 - 查看本地仓库是否已经存在需要备份的镜像
- 将本地仓库中的镜像打包成tar包save命令
- 查看tar是否已经生成
7、修改镜像版本
- dockers tag 命令将本地原镜像:新版本号上传到本地仓库
- dockers save - o 将本地仓库的新镜像保存到本地
- 或者dockers push 推送到远程仓库
删除镜像
docker rmi
K8S
查看命名空间
kubectl get namespaces
查看集群的运行状态
kubectl -n namespaces get pod appname
查看项目运行日志
kubectl -n namespaces log -f appname
删除pod,重启应用(删除后自动重启)
kubectl delete -n namespaces pod appname1[appname2]
查看节点的日志
kubectl -n namespaces describe pod appname
进入容器
kubectl -n namespaces exec -it appname /bin/bash
修改项目运行的yarn文件(可以平滑部署)
kubectl -n namespaces edit deployment appname
删除容器节点
kubectl -n namespaces delete deployment appname
k8s-yaml
pvc挂载
kubectl apply -f 01pv\ slwcssportal.yaml
kubectl get pv
kubectl apply -f 02-pvc-slwcssportal.yaml
kubectl get pvc
apiVersion: v1
kind: PersistentVolume
metadata:
name: slwcssportal-pv
namespace: default
labels:
pv: slwcssportal-pv
spec:
capacity:
storage: 1Gi
accessModes:
- ReadWriteMany
nfs:
# FIXME: use the right IP
server: 10.10.133.204
path: "/portal"
persistentVolumeReclaimPolicy: Retain
storageClassName: nfs
volumeMode: Filesystem
apiVersion: v1
kind: PersistentVolumeClaim
metadata:
name: pvc-slwcssportal-nas204
namespace: default
spec:
accessModes:
- ReadWriteMany
storageClassName: nfs
resources:
requests:
storage: 1Gi
selector:
matchLabels:
pv: slwcssportal-pv
# Please edit the object below. Lines beginning with a '#' will be ignored,
# and an empty file will abort the edit. If an error occurs while saving this file will be
# reopened with the relevant failures.
#
apiVersion: extensions/v1beta1
kind: Deployment
metadata:
annotations:
deployment.kubernetes.io/revision: "2"
creationTimestamp: "2020-06-04T05:04:46Z"
generation: 2
labels:
k8s-app: portal
name: portal
namespace: default
resourceVersion: "5426287"
selfLink: /apis/extensions/v1beta1/namespaces/default/deployments/slwcssportal
uid: 8b0989cd-fcd0-4a3e-ae90-c24add8abde0
spec:
progressDeadlineSeconds: 600
replicas: 1
revisionHistoryLimit: 10
selector:
matchLabels:
k8s-app: cssportal
strategy:
rollingUpdate:
maxSurge: 25%
maxUnavailable: 25%
type: RollingUpdate
template:
metadata:
creationTimestamp: null
labels:
k8s-app: portal
name: portal
spec:
containers:
- image: portal:V1.74
imagePullPolicy: IfNotPresent
name: portal
resources: {}
securityContext:
privileged: false
terminationMessagePath: /dev/termination-log
terminationMessagePolicy: File
volumeMounts:
- mountPath: /nfsptyf-data1/slwcssportal
name: storagegxbfulltext
dnsPolicy: ClusterFirst
restartPolicy: Always
schedulerName: default-scheduler
securityContext: {}
terminationGracePeriodSeconds: 30
volumes:
- name: storagegxbfulltext
persistentVolumeClaim:
claimName: pvc-slwcssportal-nas204
status:
availableReplicas: 1
conditions:
- lastTransitionTime: "2010-06-04T05:07:20Z"
lastUpdateTime: "2010-06-04T05:07:20Z"
message: Deployment has minimum availability.
reason: MinimumReplicasAvailable
status: "True"
type: Available
- lastTransitionTime: "2010-06-04T05:04:46Z"
lastUpdateTime: "2010-06-04T05:33:17Z"
message: ReplicaSet "portal-6b9657756f" has successfully progressed.
reason: NewReplicaSetAvailable
status: "True"
type: Progressing
observedGeneration: 2
readyReplicas: 1
replicas: 1
updatedReplicas: 1