k8s 部署以后需要做什么
k8s 部署以后需要做什么引言本文针对 k8s 已经完成 基本部署master 节点 已经执行kubeadm initwoker 节点 已经执行 kubeadm join 的操作文章中默认 都是执行在master 节点上的命令本人文章环境 采用kubernetes 1.16.1 版本接下来 需要做 使一个k8s 集群功能丰富起来部署网络插件部署ingress-controller安装dashboa
k8s 部署以后需要做什么
引言
本文针对 k8s 已经完成 基本部署
master 节点 已经执行 kubeadm init
woker 节点 已经执行 kubeadm join 的操作
文章中默认 都是执行在master 节点上的命令
本人文章环境 采用kubernetes 1.16.1 版本
接下来 需要做 使一个k8s 集群功能丰富起来
- 部署网络插件
- 部署ingress-controller
- 安装dashboard
- 安装helm
- 安装prometheus
- 安装ELK
0.命令自动补全
yum install -y bash-completion
source /usr/share/bash-completion/bash_completion
source <(kubectl completion bash)
echo "source <(kubectl completion bash)" >> ~/.bashrc
效果如下 可使用tab 补全 或查看 k8s 资源对象
[root@master ~]# kubectl get pod -n
default kube-node-lease kube-public kube-system nginx-ingress
[root@master ~]# kubectl get pod -n kube-system
coredns-dc4d494c8-7qtwp kube-controller-manager-master kube-proxy-7q6t5
coredns-dc4d494c8-t5pbj kube-flannel-ds-amd64-b9zns kube-proxy-rfxgj
etcd-master kube-flannel-ds-amd64-pwqxn kube-proxy-x8884
kube-apiserver-master kube-flannel-ds-amd64-xd4js kube-scheduler-master
资源不足的小伙伴可以顺手把 master 污点关了
kubectl taint nodes --all node-role.kubernetes.io/master-
1. 部署网络插件
目前主流 calico 和 flannel 两者选其一即可
安装 calico 插件 (推荐)
kubectl apply -f http://kuboard.cn/install-script/calico/calico-3.9.2.yaml
2020-09-20 calico 最新版本为 3.16.1
安装 flannel 插件
kubectl apply -f raw.githubusercontent.com/coreos/flannel/master/Documentation/kube-flannel.yml
如果无法访问githubusercontent.com 可 wget http://106.15.203.166:15500/kube-flannel 下载 1.16 版本flannel
2. 安装ingress-controller
ingress 可用于k8s集群做7层 nginx反向代理
kubectl apply -f https://kuboard.cn/install-script/v1.19.x/nginx-ingress.yaml
3. 安装kuboard + metrics 、 安装 Kubernetes Dashboard
# 安装kuboard + metrics
kubectl apply -f https://kuboard.cn/install-script/kuboard.yaml
kubectl apply -f https://addons.kuboard.cn/metrics-server/0.3.7/metrics-server.yaml
# 需要访问 kuboard 时 通过一下命令获取token
echo $(kubectl -n kube-system get secret $(kubectl -n kube-system get secret | grep kuboard-user | awk '{print $1}') -o go-template='{{.data.token}}' | base64 -d)
# 安装 Kubernetes Dashboard
kubectl apply -f https://kuboard.cn/install-script/k8s-dashboard/v2.0.0-beta5.yaml
# 可能存在无法访问问题 请参考 https://blog.51cto.com/10616534/2430512
# 需要访问 Dashboard 时 通过一下命令获取token
kubectl -n kubernetes-dashboard describe secret $(kubectl -n kubernetes-dashboard get secret | grep admin-user | awk '{print $1}')
4. 安装helm
# 下载 helm 2.13.1
wget https://storage.googleapis.com/kubernetes-helm/helm-v2.13.1-linux-amd64.tar.gz
# 解压
tar zxvf helm-v2.13.1-linux-amd64.tar.gz
cp -a linux-amd64/helm /usr/local/bin/
chmod a+x /usr/local/bin/helm
cat > rbac-config.yaml <<EOF
apiVersion: v1
kind: ServiceAccount
metadata:
name: tiller
namespace: kube-system
---
apiVersion: rbac.authorization.k8s.io/v1beta1
# apiVersion: rbac.authorization.k8s.io/v1 # k8s 1.17版本以上需要使用这个
kind: ClusterRoleBinding
metadata:
name: tiller
roleRef:
apiGroup: rbac.authorization.k8s.io
kind: ClusterRole
name: cluster-admin
subjects:
- kind: ServiceAccount
name: tiller
namespace: kube-system
EOF
cat > tiller.yaml <<EOF
---
apiVersion: apps/v1
kind: Deployment
metadata:
creationTimestamp: null
labels:
app: helm
name: tiller
name: tiller-deploy
namespace: kube-system
spec:
replicas: 1
strategy: {}
selector:
matchLabels:
app: helm
name: tiller
template:
metadata:
creationTimestamp: null
labels:
app: helm
name: tiller
spec:
serviceAccount: tiller
automountServiceAccountToken: true
containers:
- env:
- name: TILLER_NAMESPACE
value: kube-system
- name: TILLER_HISTORY_MAX
value: "0"
image: registry.cn-hangzhou.aliyuncs.com/google_containers/tiller:v2.13.1
imagePullPolicy: IfNotPresent
livenessProbe:
httpGet:
path: /liveness
port: 44135
initialDelaySeconds: 1
timeoutSeconds: 1
name: tiller
ports:
- containerPort: 44134
name: tiller
- containerPort: 44135
name: http
readinessProbe:
httpGet:
path: /readiness
port: 44135
initialDelaySeconds: 1
timeoutSeconds: 1
resources: {}
status: {}
---
apiVersion: v1
kind: Service
metadata:
creationTimestamp: null
labels:
app: helm
name: tiller
name: tiller-deploy
namespace: kube-system
spec:
ports:
- name: tiller
port: 44134
targetPort: tiller
selector:
app: helm
name: tiller
type: ClusterIP
status:
loadBalancer: {}
---
EOF
kubectl create -f rbac-config.yaml
kubectl create -f tiller.yaml
# 验证部署完毕
helm version
Client: &version.Version{SemVer:"v2.13.1", GitCommit:"618447cbf203d147601b4b9bd7f8c37a5d39fbb4", GitTreeState:"clean"}
Server: &version.Version{SemVer:"v2.13.1", GitCommit:"618447cbf203d147601b4b9bd7f8c37a5d39fbb4", GitTreeState:"clean"}
# 镜像仓库官方地址 https://hub.helm.sh
更新国内 helm 源
helm init --service-account tiller --skip-refresh
helm repo add stable https://kubernetes.oss-cn-hangzhou.aliyuncs.com/charts
helm repo list
helm 简单用法
编辑 Chart.yaml 文件 其中存放 chart 的名称 和命名空间
创建templates文件夹
templates 中存放项目需要创建的 deployment.yaml service.yaml 等文件
编辑 values.yaml 文件 其中保存 templaste/ yaml 文件中设置的变量 如镜像版本等
通过 cd {chart所在目录} ; helm install . 执行部署
通过 helm upgrade 更新
helm upgrade -f values.yaml {} .
helm list 查看当前 helm 部署应用
helm delete {helmname} 删除应用
helm list deleted 查看已删除应用
helm delete {helmname} --purge 彻底删除应用
helm rollback {helmname} {版本号} 回滚
5. 安装Prometheus
官方地址 https://github.com/coreos/kube-prometheus
组件说明
- metricserver: k8s资源使用情况聚合器 收集信息作用
- prometheusOperator: 一个系统监控报警的工具箱 用来存储监控数据
- nodeExporter: 用来各node关键度量指标状态数据
- kubestatemetrics: 收集k8s 集群内资源对象数据 指定高级规则
- Prometheus: 采用pull 方式收集apiserver,scheduler,controller-manager,kubelet 组件数据 通过http 协议传输
- Grafana: 可视化监控平台
开始安装
git clone https://github.com/coreos/kube-prometheus.git
cd kube-prometheus
# 可提前将 prometheus alertmanager grafana service模式改成nodeport
# vim manifests/prometheus-service.yaml
# vim manifests/alertmanager-service.yaml
# vim manifests/grafana-service.yaml
kubectl apply -f /manifests/setup
kubectl apply -f /manifests/
# 下载镜像可能比较慢 可提前下载 导入docker
验证
当所有pod 以正常启动进行测试
访问prometheus
访问grafana
访问Alertmanager
更多推荐
所有评论(0)