一、安装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 .