Helm Chart kubectl
K8s
Promethues
Grafana
helm
专业的容器服务除了收集容器性能指标以外(如cadvisor、promethues),还需要重点保留现场的容器拓扑快照(如kur8),以方便进行问题场景还原
离线安装Chart,需要在外网的情况下下载镜像和chart文件,以及依赖的Chart文件和镜像,
注意: 使用Kind的时候,注意 kind load docker-image nginx nginx:test 通过 kind load 将客户机上的镜像加载到 K8S 环境中去,
否则,在kubectl get pods 会 显示 生成的Pod 处于这种状态 ErrImageNeverPull 策略禁止拉取镜像
Helm
Helm 运行这个install时候,
最少要传俩参数,你要定一个release name,以及你要装的chart是啥。
自定义配置选项
安装过程中有两种方法可以传递配置数据:
--values(或-f):指定带有覆盖的YAML文件。这可以多次指定,最右边的文件优先 --values使用,先将修改的变量写到一个文件中
--set:在命令行上指定替代。如果两者都用,--set优先级高
--set 选项使用 0 或多个 name/value 对。最简单的用法类似于:--set name=value,等价于如下 YAML 格式:
$ helm install happy-panda stable/mariadb
helm dependency update .
helm install my-spark .
helm dependency update
该命令验证存储在'charts/'目录中的'Chart.yaml'文件描述的所需chart以及所需版本。 它会拉取满足依赖的最新chart并清理旧依赖
helm
-n, --namespace string namespace scope for this request
Chart格式说明
Chart.yaml 文件包含了该chart的描述。
charts/目录 可以 包含其他的chart(称之为 子chart)
1.Chart.yaml
apiVersion name version
chart 的名称、版本、维护者、依赖(即子 chart
A chart can be either an 'application' or a 'library' chart.
type : application library
声明了 dependencies 的 chart 中
执行helm dependency update或helm dependency build将会自动生成一个 Chart.lock 文件,
且如果设置了依赖项的 repository,会到仓库中查找并打包为 .tgz 文件下载到
charts/ 路径下。
There are two types: application and library.
Application is the default type and it is the standard chart which can be operated on fully.
The library chart provides utilities or functions for the chart builder.
A library chart differs from an application chart because it is not installable and usually doesn't contain any resource objects.
Note: An application chart can be used as a library chart.
This is enabled by setting the type to library.
The chart will then be rendered as a library chart where all utilities and functions can be leveraged.
All resource objects of the chart will not be rendered.
dependencies:
- name: apache
version: 1.2.3
repository: http://example.com/charts
- name: mysql
version: 3.2.1
repository: http://another.example.com/charts
name:Chart 名称
version:Chart 版本
repository: Chart 仓库 URL 地址
2.values.yaml
imageRegistry: "quay.io/deis"
dockerTag: "latest"
pullPolicy: "Always"
storage: "s3"
修改 tag: 14.2.0-debian-10-r14 为自己的镜像
或者修改镜像为 tag的镜像 Usage: docker tag SOURCE_IMAGE[:TAG] TARGET_IMAGE[:TAG] docker tag bitnami/postgresql:11.11.0 bitnami/postgresql:14.2.0-debian-10-r14
要约束 values.yaml 中的配置结构,可以创建一个 values.schema.json
Always 总是拉取:首先获取仓库镜像信息,如果仓库中的镜像与本地不同,那么仓库中的镜像会被拉取并覆盖本地。如果仓库中的镜像与本地一致,那么不会拉取镜像。 如果仓库不可用,那么pod运行失败。
IfNotPresent优先使用本地: 如果本地存在镜像,则使用本地的, 不管仓库是否可用。不管仓库中镜像与本地是否一致。
Never 只使用本地镜像,如果本地不存在,则pod运行失败
自定义chart
helm create myapp
00.查看Chart.yaml中的 dependencies,把repository注释掉,并手动下载对应的依赖
Chart.yaml 中设置 dependencies 的用意。当我们依赖于别人提供的 chart,但在部署时又需要对其中的一些配置进行调整,
这时候就可以通过在父 Chart.yaml 中设置能对应到子 chart 中 values.yaml 中的配置的配置项,来达到覆盖子 chart 中配置值的目的。
01.下载
https://github.com/bitnami/charts/tree/master/bitnami/common
02.打包 打包charts
helm package common/
tar xvf common.tgz
移动到本项目的charts/ 目录下
等效 使用helm pull <chart-name>直接从仓库中抓取对应的 chart 到 charts/ 下
03.
helm dependency update .
04.离线安装
#helm install my-release bitnami/postgresql
本地安装 cd ~/postgresql
helm install my-release .
** Please be patient while the chart is being deployed **
PostgreSQL can be accessed via port 5432 on the following DNS names from within your cluster:
my-release-postgresql.default.svc.cluster.local - Read/Write connection
To get the password for "postgres" run:
export POSTGRES_PASSWORD=$(kubectl get secret --namespace default my-release-postgresql -o jsonpath="{.data.postgres-password}" | base64 --decode)
To connect to your database run the following command:
kubectl run my-release-postgresql-client --rm --tty -i --restart='Never' --namespace default --image docker.io/bitnami/postgresql:14.2.0-debian-10-r14 --env="PGPASSWORD=$POSTGRES_PASSWORD" \
--command -- psql --host my-release-postgresql -U postgres -d postgres -p 5432
> NOTE: If you access the container using bash, make sure that you execute "/opt/bitnami/scripts/entrypoint.sh /bin/bash" in order to avoid the error "psql: local user with ID 1001} does not exist"
To connect to your database from outside the cluster execute the following commands:
kubectl port-forward --namespace default svc/my-release-postgresql 5432:5432 &
PGPASSWORD="$POSTGRES_PASSWORD" psql --host 127.0.0.1 -U postgres -d postgres -p 5432
05.查看集群的镜像
helm list
06.查看安装状态
kubectl常用示例
简单部署:编写配置文件--》使用“ kubectl create ”执行资源创建
kubectl create 命令,是先删除所有现有的东西,重新根据yaml文件生成新的
kubectl apply 命令,根据配置文件里面列出来的内容,升级现有的
Helm部署,并使用kubectl观察部署是否失败
kubectl get命令提供有关Kubernetes中许多内容的信息,包括Pod,节点和名称空间
查看类命令
kubectl cluster-info
kubectl get nodes -o wide
kubectl get ns
kubectl get pod -A
kubectl get pod
kubectl get pod -n kube-system
kubectl get pod -o wide
kubectl get pods -o yaml
kubectl get pods -o json
##进入
kubectl exec:进入pod启动的容器
Helm
Chart 代表着 Helm 包
Repository(仓库) 是用来存放和共享 charts 的地方
Release 是运行在 Kubernetes 集群中的 chart 的实例
chart包 helm chart repo
https://artifacthub.io/ https://artifacthub.io/packages/search
The Bitnami Library for Kubernetes https://charts.bitnami.com/bitnam https://github.com/bitnami/charts
https://kubernetes-charts.storage.googleapis.com/
bitnami by VMware
Add repository --》 Install chart
https://dolphinscheduler.apache.org/zh-cn/docs/3.1.3/guide/start/docker
https://dolphinscheduler.apache.org/zh-cn/docs/3.1.3/guide/installation/kubernetes
helm repo add cetic https://cetic.github.io/helm-charts
helm repo update
helm install my-release cetic/postgresql
$ helm repo add bitnami https://charts.bitnami.com/bitnami
$ helm dependency update .
$ helm install dolphinscheduler . --set image.tag=<version>
PostgreSQL 和 ZooKeeper
apache/dolphinscheduler-tools
apache/dolphinscheduler-master
apache/dolphinscheduler-worker
apache/dolphinscheduler-api
apache/dolphinscheduler-alert-server
https://github.com/apache/dolphinscheduler/blob/dev/deploy/docker/docker-compose.yml
Docker Stack,它用于向swarm集群部署完整的应用程序堆栈-Stack是集群下的Compose
docker pull apache/dolphinscheduler:3.1.3