k8s 部署以后需要做什么

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

组件说明

  1. metricserver: k8s资源使用情况聚合器 收集信息作用
  2. prometheusOperator: 一个系统监控报警的工具箱 用来存储监控数据
  3. nodeExporter: 用来各node关键度量指标状态数据
  4. kubestatemetrics: 收集k8s 集群内资源对象数据 指定高级规则
  5. Prometheus: 采用pull 方式收集apiserver,scheduler,controller-manager,kubelet 组件数据 通过http 协议传输
  6. 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
prometheus
访问grafana
访问grafana
访问Alertmanager
访问Alertmanager

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值