k8s安装helm-v2.13.1及相关应用

一、安装helm-v2.13.1

Helm是官方提供的类似于YUM的包管理器,是部署环境的流程封装。Helm有两个重要的概念:chart和release。
· chart是创建一个应用的信息集合,包括各种Kubernetes对象的配置模板、参数定义、依赖关系、文档说明等。chart是应用部署的自包含逻辑单元。可以将chart想象成apt、yum中的软件安装包。
· release是chart的运行示例,代表了一个正在运行的应用。当chart被安装到Kubernetes集群,就生成一个release。chart能够多次安装到同一个集群,每次安装都是一个release。

mkdir -p /usr/local/install-k8s/helm && cd !$
weget https://get.helm.sh/helm-v2.13.1-linux-amd64.tar.gz
tar -zxf helm-v2.13.1-linux-amd64.tar.gz
cp -a linux-amd64/helm /usr/local/bin/

vim rbac.yaml

apiVersion: v1
kind: ServiceAccount
metadata:
  name: tiller
  namespace: kube-system
---
apiVersion: rbac.authorization.k8s.io/v1beta1
kind: ClusterRoleBinding
metadata:
  name: tiller
roleRef
  apiGroup: rbac.authorization.k8s.io
  kind: ClusterRoleBinding
  name: cluster-admin
subjects:
  - kind: ServiceAccount
    name: tiller
    namespace: kube-system

kubectl create -f rbac.yaml
helm init --service-account tiller --skip-refresh

helm官方目前最新已经更新到v3,v3最明显的变化就是删除了Tiller,详细可参考

二、测试一个简单的helm

mkdir /usr/local/install-k8s/helm/test && cd !$

cat > Chart.yaml <<EOF
name: hello-world
version: 1.0.0
EOF

mkdir templates $$ cd !$

cat > depolyment.yaml <<EOF
apiVersion: extension/v1beta1
kind: Deployment
metadata:
  name: helm-test
spec:
  replicas: 3
  template:
    metadata:
      labels: 
        app: hello-world
    spec:
      containers:
        - name: myapp
          image: wangyanglinux/myapp:v1
          ports:
            - containerPort: 80
              protocol: TCP
EOF

cat > service.yaml <<EOF
apiVersion: v1
kind: Service
metadata:
  name: helm-svc
spec:
  type: NodePort
  ports:
  - port: 80
    targetPort: 80
    protocol: TCP
  selector:
    app: hello-world
EOF

cd ../
helm install .

kubectl查看结果。

三、通过helm安装dashboard

mkdir /usr/local/install-k8s/plugin/dashboard && cd !$
helm repo update
helm fetch stable/kubernetes-dashboard
cd kubernetes-dashboard-1.10.1.tgz

cat > kubernetes-dashboaed.yaml <<EOF
image:
  repository: k8s.gcr.io/kubernetes-dashboard-amd64
  tag: v1.10.1
ingress:
  enabled: true
  hosts:
    - k8s.frognew.com
  annotations:
    nginx.ingress.kubernetes.io/ssl-redirect: "ture"
    nginx.ingress.kubernetes.io/backend-protocol: "HTTPS"
  tls:
    - secretName: frognew-com-tls-secret
      hosts:
      - k8s.frognew.com
rbac:
  clusterAdminRole: true
EOF

helm install . -n kubernetes-dashboard --namespace kube-system -f kubernetes-dashboard.yaml

PS: 这里的kubernetes-dashboard.yaml实际上就是个value文件,拼接templates目录底下的yaml文件中的值(书写方式是go语言)。可以理解为把templates下yaml中一些值标成了变量,在kubernetes-dashboard.yaml文件中定义了这些变量,这样做是为了方便helm的滚动更新。

pod创建成功之后把svc的type类型改成NodePort,查看映射出来的端口。
通过火狐游览线访问https://IP:port
通过令牌token的方式进入
kubectl get secret -n kube-system |grep kubernetes-dashboard-token
kubectl describe secret token名称 -n kube-system

四、通过helm安装普罗米修斯监控

相关组件:
1.MetricServer:是kubernetes集群资源使用情况的聚合器,收集数据给kubernetes集群内使用,如kubectl,hpa,scheduler等。
2.PrometheusOperator:是一个系统监测和警报工具箱,用来存储监控数据。3.NodeExporter:用于各node的关键度量指标状态数据。
4.KubeStateMetrics:收集kubernetes集群内资源对象数据,制定告警规则。5.Prometheus:采用pull方式收集apiserver,scheduler,controller-manager,kubelet组件数据,通过http协议传输。
6.Grafana:是可视化数据统计和监控平台

mkdir /usr/local/install-k8s/plugin/prometheus && cd !$
git clone https://github.com/coreos/kube-prometheus.git
cd kube-prometheus/manifests

vim grafana-service.yaml
vim prometheus-service.yaml
vim alertmanager-service.yaml

把service的模式改成NodePort,映射出来的端口分别设为30100,30200,30300
导入相关镜像。
kubectl apply -f .

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。