系列目录

其实前面安装部分我们已经分享一些互联网上其它网友分享的一些坑,本篇介绍helm的基本使用以及在使用过程中碰到的一些坑.

客户端版本和服务端版本不一致问题

有些朋友可能在使用helm init的时候直接复制页面上的命令,这样由于客户端和服务端版本不一致造成helm无法使用,解决办法在复制helm init 阿里云网址时把网址里面的版本更新为和客户端保持一致的版本.

阿里云镜像过旧

你可能按照上一节的操作最终成功安装了helm,但是在实际工作中你可能会发现,阿里云的helm镜像仓库过旧(这里仅仅是说helm仓库过旧,而不是其它仓库),很多包都没有,这就导致通过helm安装很多第三方工具时由于查找不到对应版本的chart而无法安装成功.下面给出几种解决办法

  1. 删除阿里云的helm仓库

使用helm repo list查看是否有阿里云的镜像源,如果有则执行

helm repo remove stable
helm repo remove incubator

来删除阿里镜像源,则默认镜像源他恢复到https://kubernetes-charts.storage.googleapis.com/,目前来看,这个地址是能访问的,但是不确定是否能一直稳定访问

  1. 使用网友自制源

参考地址,你也可以按照说明自己搭建一个同步源.

如果使用作者的源,则只需要添加helm repo add stable https://burdenbear.github.io/kube-charts-mirror/即可

直到目前这个仓库还一直稳定更新

  1. 使用azure源

上面的git仓库里,作者提到了可以傅azure镜像源

执行命令

helm repo add stable  http://mirror.azure.cn/kubernetes/charts/
helm repo add incubator http://mirror.azure.cn/kubernetes/charts-incubator/

heml命令报错

helm在执行的时候偶尔会有命令报错,大概是no available pod,不知道其它朋友是否遇到过这个问题,反正我是遇到过不少,实际发现这个错误不影响,过一会就会恢复正常

[centos@k8s-master ~]$ kubectl get deploy -n=kube-system
NAME READY UP-TO-DATE AVAILABLE AGE
coredns 2/2 2 2 42d
kubernetes-dashboard 0/1 1 0 41d
tiller-deploy 0/1 1 0 15d

如果观赛它的deploy,时尔ready状态会变为0

基础命令

  • 查找 helm search CHARTNAME
  • 检查 helm inspect CHARTNAME
  • 安装 helm install --name mem1 stable/memcached
  • 获取状态信息 helm status mem1
  • 列出 helm list [-a]
  • 删除 helm delete [--purge] mem1
  • 下载 helm fetch stable/redis
  • 创建 helm create CHARTNAME
  • 语法检测 helm lint CHARTNAME
  • 打包 helm package CHARTNAME
  • 显示状态 helm status NAME

示例操作1

查找jenkins chart

[root@k8s-master k8syml]# helm search jenkins
NAME CHART VERSION APP VERSION DESCRIPTION
incubator/jenkins-operator 0.1.12 0.1.12 A Helm chart for Kubernetes Jenkins Operator
stable/jenkins 1.1.3 lts Open source continuous integration server. It supports mu...

helm search如果不指定参数则默认列仓库的所有charts,目前还不是很多,日后会越来越多,强烈不建议执行此操作

示例操作2

列举出所有本机通过helm安装的charts

[root@k8s-master k8syml]# helm list
NAME REVISION UPDATED STATUS CHART APP VERSION NAMESPACE
invisible-turkey 1 Mon Apr 22 17:39:14 2019 FAILED nginx-ingress-0.21.1 0.14.0 jx
kubernetes-dashboard 1 Thu Mar 14 09:06:25 2019 DEPLOYED kubernetes-dashboard-1.2.0 1.10.1 kube-system

示例操作3

查看一个已经安装的chart的的状态

[root@k8s-master k8syml]# helm status invisible-turkey
LAST DEPLOYED: Mon Apr 22 17:39:14 2019
NAMESPACE: jx
STATUS: FAILED NOTES:
The nginx-ingress controller has been installed.
It may take a few minutes for the LoadBalancer IP to be available.
You can watch the status by running 'kubectl --namespace get services -o wide -w invisible-turkey-nginx-ingress-controller' An example Ingress that makes use of the controller: apiVersion: extensions/v1beta1
kind: Ingress
metadata:
annotations:
kubernetes.io/ingress.class: nginx
name: example
namespace: foo
spec:
rules:
- host: www.example.com
http:
paths:
- backend:
serviceName: exampleService
servicePort: 80
path: /
# This section is only required if TLS is to be enabled for the Ingress
tls:
- hosts:
- www.example.com
secretName: example-tls If TLS is enabled for the Ingress, a Secret containing the certificate and key must also be provided: apiVersion: v1
kind: Secret
metadata:
name: example-tls
namespace: foo
data:
tls.crt: <base64 encoded cert>
tls.key: <base64 encoded key>
type: kubernetes.io/tls

除了状态以外,还有简短说明以及示例信息

示例4

删除一个已经安装的chart

[root@k8s-master k8syml]# helm delete invisible-turkey
release "invisible-turkey" deleted

关于打包的功能我们后面专门讲解,关于下载和修改我们下面通过一个完整实例来介绍

示例5

安装部署一个elk日志系统

  1. 准备 charts
  • helm fetch stable/fluentd-elasticsearch

  • helm fetch stable/elasticsearch

  • helm fetch stable/kibana # kibana 要和 elasticsearch 版本一致

下载下来的内容是一个压缩包,下载的位置是当前位置,因此你想要把它保存到指定目录需要先进入指定目录,或者在当前位置下载后解压,然后移动到指定位置

  1. 解压修改各 values.yaml 配置文件
  • elasticsearch/values.yaml

    • 修改 master.persistence.enabled 为 false,不启用存储卷
    • 先安装 elasticsearch ,保存结果中的地址,如 els1-elasticsearch-client.efk.svc.cluster.local
  • fluentd-elasticsearch/values.yaml

    • 修改 image.repository 为 docker.io/mirrorgooglecontainers/fluentd-elasticsearch
    • 修改 elasticsearch.host 为上一步中的地址,如 els1-elasticsearch-client.efk.svc.cluster.local

前面我们说过,很多镜像都存储在gcr.io上,但是在国内正常情况下是不能访问的,我们可以把gcr.io修改为docker.io/mirrorgooglecontainers/这是谷歌镜像在dockerhub上的仓库,目前dockerhub在国内还算能正常访问,但是速度不太理想.大家也可以参照我的其它文章,把镜像源切到阿里云,或者提前先把需要的镜像拉取下来.

  1. 安装各组件
  • kubect create ns efk # 创建名称空间

  • helm install --name els1 --namespace=efk -f ./elasticsearch/values.yaml stable/elasticsearch # 记录输出结果中地址,类似 els1-elasticsearch-client.efk.svc.cluster.local+

  • helm install --name flu1 --namespace=efk -f ./fluentd-elasticsearch/values.yaml stable/fluentd-elasticsearch

  • helm install --name kib1 --namespace=efk -f ./kibana/values.yaml stable/kibana

  1. 访问 Kibana
  • 查看端口:kubectl get svc -n efk -l app=kibana

  • 访问:http://IP:Port,无账号密码

以上elk示例部分及命令部分大都是参考了此篇博客,并未进行详细验证

kubernetes实战篇之helm填坑与基本命令的更多相关文章

  1. kubernetes实战篇之helm使用技巧

    系列目录 使用压缩包安装chart 我们使用helm package打包的时候,默认会在当前位置生成一个tgz压缩包,然后helm把它复制到到$HOME/.helm/repository目录下,现在还 ...

  2. kubernetes实战篇之helm安装

    系列目录 Helm是kubernetes的应用包管理工具,是CNCF孵化器下的一个项目,主要用来管理 Charts.类似于 Ubuntu 中的 APT 或 CentOS 中的 YUM.它提供了一种简单 ...

  3. kubernetes实战篇之helm完整示例

    系列目录 构建一个 Helm Chart 下面我们通过一个完整的示例来学习如何使用 Helm 创建.打包.分发.安装.升级及回退Kubernetes应用. 创建一个名为 mychart 的 Chart ...

  4. kubernetes实战篇之helm示例yaml文件文件详细介绍

    系列目录 前面完整示例里,我们主要讲解helm打包,部署,升级,回退等功能,关于这里面的文件只是简单介绍,这一节我们详细介绍一下这里面的文件,以方便我们参照创建自己的helm chart. Helm ...

  5. 【模板篇】splay(填坑)+模板题(普通平衡树)

    划着划着水一不小心NOIP还考的凑合了… 所以退役的打算要稍微搁置一下了… 要准备准备省选了…. 但是自己已经啥也不会了… 所以只能重新拾起来… 从splay开始吧… splay我以前扔了个板子来着, ...

  6. kubernetes实战篇之部署一个.net core微服务项目

    目录 继上一篇kubernetes理论知识完结.本篇主要讲解基于nexus搭建一个docker镜像仓库(当然大家实践过程是不必完全跟着做,也可以搭建harbor仓库或者直接把镜像推送到docker h ...

  7. kubernetes实战篇之创建密钥自动拉取私服镜像

    系列目录 前面我们讲解了如何搭建nexus服务器,以及如何使用nexus搭建docker私有镜像仓库,示例中我们都是手动docker login登陆私服,然后通过命令拉取镜像然后运行容器.然而这种做法 ...

  8. kubernetes实战篇之dashboard搭建

    系列目录 kubernetes dashboard是kubernetes官方提供的web管理界面,通过dashboard可以很方便地查看集群的各种资源.以及修改资源编排文件,对集群进行扩容操作,查看日 ...

  9. kubernetes实战篇之通过api-server访问dashboard

    系列目录 前面一节我们介绍了如何使用kube-proxy搭建代理访问dashboard,这样做缺点非常明显,第一可以通过http访问,第二是这种方式要启动一个后台进程,如果进程关闭了则不能够访问了,还 ...

随机推荐

  1. VS2005 编译 Qt4.8.2库,并修正源码中的错误

    从昨天开始利用VS2005对Qt4.8.2库进行编译,在编译到某个文件时,总是报错,提示VS的cl.exe和nmake.exe返回致命错误.错误罗列如下: DefaultLocalizationStr ...

  2. ISTQB 软件测试资质认证

    1.什么是ISTQB: ISTQB(International Software Testing Qualification Board)是国际唯一权威的软件测试资质认证机构, 主要负责制订和推广国际 ...

  3. Matlab Tricks(二十四)—— 将一副图像逆时针旋转 180°

    function I2 = rot180(I) I2 = I(end:-1:1, end:-1:1); % 上下颠倒,左右颠倒:

  4. spring boot 配置swagger UI

    springboot集成swaggerUI 有这样的需求 1.在每个接口上都增加一个字段: 2.接口文档只展示满足一定条件URL的接口 配置文件 详细看代码 import org.springfram ...

  5. SequenceType 与 GeneratorType

    Swift 语言中提供了一种 for .. in 语法的形式,用于遍历集合,比如对于 Array 类型,就可以用 for .. in 来进行遍历.这个语法在很多其他语言中也有提供,省去了我们定义下标的 ...

  6. ABP缓存示例

    private readonly ICacheManager _cacheManager; public ProgrammeManage(ICacheManager cacheManager) { _ ...

  7. windows Hook 消息分类

    调用SetWindowsHookEx的DLL的模块实例句柄,它可以经由DllMain入口的第一个参数得到.HHOOK SetWindowsHookEx( int idHook,HOOKPROC lpf ...

  8. 协程在Web服务器中的应用(配的图还不错)

    协程(纤程,微线程)这个概念早就有之,各家互联网公司也都有研究,但在国内各大论坛和大会热起来,还是今年的事. 最近参与讨论开放平台建设和架构设计过程中,有同事提到了使用协程代替线程,能够很大幅度的提高 ...

  9. qt部分类释义

    如果测试错误,输出包含源码的警告信息 Q_ASSERT Qtime最后一次star()或restar()到现在的毫秒数 QTime::elapsed QMetaObject::invokeMethod ...

  10. jvm常用参数设置 专题

    在jdk8中 -Xms2g不合法,能通过的:-Xms2G #!/bin/bash JAVA_OPTS="-Xms4G -Xmx4G -XX:+HeapDumpOnOutOfMemoryErr ...