当前位置: 首页 > news >正文

南昌专业做网站的google下载官网

南昌专业做网站的,google下载官网,苗木公司网站模板,宁波网络推广产品服务在k8s 1.3安装EFK组件 前置条件上传压缩包安装nfs供应商创建nfs作为存储的供应商通过deployment创建pod用来运行nfs-provisioner 安装elasticsearch组件安装kibana组件安装fluentd组件 前置条件 查看k8s版本 kubectl get node -owide相关安装包 链接#xff1a;https://pan.ba… 在k8s 1.3安装EFK组件 前置条件上传压缩包安装nfs供应商创建nfs作为存储的供应商通过deployment创建pod用来运行nfs-provisioner 安装elasticsearch组件安装kibana组件安装fluentd组件 前置条件 查看k8s版本 kubectl get node -owide相关安装包 链接https://pan.baidu.com/s/12S5lKEyzzwFwkCwzsPemHw?pwdycqx 提取码ycqx 上传压缩包 把elasticsearch-7-12-1.tar.gz、fluentd-containerd.tar.gz、 kibana-7-12-1.tar.gz上传到k8snode1机器上手动解压 ctr -nk8s.io images import elasticsearch-7-12-1.tar.gz ctr -nk8s.io images import kibana-7-12-1.tar.gz ctr -nk8s.io images import fluentd-containerd.tar.gz把nfs-subdir-external-provisioner.tar.gz上传到k8snode1上手动解压。 ctr -nk8s.io images import nfs-subdir-external-provisioner.tar.gz把busybox-1-28.tar.gz上传到k8snode1节点手动解压 ctr -n k8s.io images import busybox-1-28.tar.gz把fluentd-containerd.tar.gz上传到k8smaster1机器上手动解压 ctr -nk8s.io images import fluentd-containerd.tar.gz安装nfs供应商 两台服务器都执行 yum install nfs-utils -y systemctl start nfs systemctl enable nfs.service在k8smaster1上创建一个nfs共享目录 mkdir /data/v1 -p vim /etc/exports/data/v1 *(rw,no_root_squash)加载配置使配置生效 exportfs -arv systemctl restart nfs创建nfs作为存储的供应商 创建运行nfs-provisioner需要的sa账号 cat serviceaccount.yaml apiVersion: v1 kind: ServiceAccount metadata:name: nfs-provisionerkubectl apply -f serviceaccount.yaml 对sa授权 kubectl create clusterrolebinding nfs-provisioner-clusterrolebinding --clusterrolecluster-admin --serviceaccountdefault:nfs-provisioner通过deployment创建pod用来运行nfs-provisioner vim deployment.yamlkind: Deployment apiVersion: apps/v1 metadata:name: nfs-provisioner spec:selector:matchLabels:app: nfs-provisionerreplicas: 1strategy:type: Recreatetemplate:metadata:labels:app: nfs-provisionerspec:serviceAccount: nfs-provisionercontainers:- name: nfs-provisionerimage: registry.cn-beijing.aliyuncs.com/mydlq/nfs-subdir-external-provisioner:v4.0.0imagePullPolicy: IfNotPresentvolumeMounts:- name: nfs-client-rootmountPath: /persistentvolumesenv:- name: PROVISIONER_NAMEvalue: example.com/nfs- name: NFS_SERVERvalue: 192.168.40.120 #这个需要写nfs服务端所在的ip地址需要写自己安装了nfs服务的机器ip- name: NFS_PATHvalue: /data/v1 #这个是nfs服务端共享的目录volumes:- name: nfs-client-rootnfs:server: 192.168.40.120 #这个需要写nfs服务端所在的ip地址需要写自己安装了nfs服务的机器ippath: /data/v1kubectl apply -f deployment.yaml验证nfs是否创建成功 kubectl get pods | grep nfs创建storageclass vim class.yamlclass.yaml文件内容如下 apiVersion: storage.k8s.io/v1 kind: StorageClass metadata:name: do-block-storage provisioner: example.com/nfs注provisioner: example.com/nfs #该值需要和nfs provisioner配置的PROVISIONER_NAME处的value值保持一致 安装elasticsearch组件 下面安装步骤均在k8s控制节点操作 创建kube-logging名称空间 在安装Elasticsearch集群之前我们先创建一个名称空间在这个名称空间下安装日志收工具elasticsearch、fluentd、kibana。 我们创建一个kube-logging名称空间将EFK组件安装到该名称空间中。 vim kube-logging.yaml kind: Namespace apiVersion: v1 metadata:name: kube-loggingkubectl apply -f kube-logging.yaml查看kube-logging名称空间是否创建成功 kubectl get namespaces | grep kube-logging创建headless service 首先我们需要部署一个有3个节点的Elasticsearch集群。我们使用3个Elasticsearch Pods可以避免高可用中的多节点群集中发生的“裂脑”的问题。 Elasticsearch脑裂可参考如下https://www.elastic.co/guide/en/elasticsearch/reference/current/modules-node.html#split-brain在kube-logging名称空间定义了一个名为 elasticsearch 的 Service服务带有appelasticsearch标签当我们将 Elasticsearch StatefulSet 与此服务关联时服务将返回带有标签appelasticsearch的 Elasticsearch Pods的DNS A记录然后设置clusterIPNone将该服务设置成无头服务。最后我们分别定义端口9200、9300分别用于与 REST API 交互以及用于节点间通信。 vim elasticsearch_svc.yaml kind: Service apiVersion: v1 metadata:name: elasticsearchnamespace: kube-logginglabels:app: elasticsearch spec:selector:app: elasticsearchclusterIP: Noneports:- port: 9200name: rest- port: 9300name: inter-nodekubectl apply -f elasticsearch_svc.yaml 查看elasticsearch的service是否创建成功 kubectl get services --namespacekube-logging创建elasticsearch 现在我们已经为 Pod 设置了无头服务和一个稳定的域名.elasticsearch.kube-logging.svc.cluster.local 接下来我们通过 StatefulSet来创建具体的 Elasticsearch的Pod 应用 vim elasticsearch-statefulset.yaml apiVersion: apps/v1 kind: StatefulSet metadata:name: es-clusternamespace: kube-logging spec:serviceName: elasticsearchreplicas: 3selector:matchLabels:app: elasticsearchtemplate:metadata:labels:app: elasticsearchspec:containers:- name: elasticsearchimage: elasticsearch:7.12.1imagePullPolicy: IfNotPresentresources:limits:cpu: 1000mrequests:cpu: 100mports:- containerPort: 9200name: restprotocol: TCP- containerPort: 9300name: inter-nodeprotocol: TCPvolumeMounts:- name: datamountPath: /usr/share/elasticsearch/dataenv:- name: cluster.namevalue: k8s-logs- name: node.namevalueFrom:fieldRef:fieldPath: metadata.name- name: discovery.seed_hostsvalue: es-cluster-0.elasticsearch,es-cluster-1.elasticsearch,es-cluster-2.elasticsearch- name: cluster.initial_master_nodesvalue: es-cluster-0,es-cluster-1,es-cluster-2- name: ES_JAVA_OPTSvalue: -Xms512m -Xmx512minitContainers:- name: fix-permissionsimage: busybox:1.28imagePullPolicy: IfNotPresentcommand: [sh, -c, chown -R 1000:1000 /usr/share/elasticsearch/data]securityContext:privileged: truevolumeMounts:- name: datamountPath: /usr/share/elasticsearch/data- name: increase-vm-max-mapimage: busybox:1.28imagePullPolicy: IfNotPresentcommand: [sysctl, -w, vm.max_map_count262144]securityContext:privileged: true- name: increase-fd-ulimitimage: busybox:1.28imagePullPolicy: IfNotPresentcommand: [sh, -c, ulimit -n 65536]securityContext:privileged: truevolumeClaimTemplates: - metadata:name: datalabels:app: elasticsearchspec:accessModes: [ ReadWriteOnce ]storageClassName: do-block-storageresources:requests:storage: 10Gi在statefulset中定义了pod容器的名字是elasticsearch镜像是docker.elastic.co/elasticsearch/elasticsearch:7.12.1 使用resources字段来指定容器至少需要0.1个vCPU并且容器最多可以使用1个vCPU了解有关资源请求和限制可参考https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/。 容器暴露了9200和9300两个端口名称要和上面定义的 Service 保持一致通过volumeMount声明了数据持久化目录定义了一个data数据卷通过volumeMount把它挂载到容器里的/usr/share/elasticsearch/data目录。 容器中设置了一些环境变量 cluster.nameElasticsearch 集群的名称我们这里是 k8s-logs。 node.name节点的名称通过metadata.name来获取。这将解析为 es-cluster-[0,1,2]取决于节点的指定顺序。 discovery.seed_hosts此字段用于设置在Elasticsearch集群中节点相互连接的发现方法它为我们的集群指定了一个静态主机列表。 由于我们之前配置的是无头服务我们的 Pod 具有唯一的 DNS 地址es-cluster-[0,1,2].elasticsearch.kube-logging.svc.cluster.local因此我们相应地设置此地址变量即可。由于都在同一个 namespace 下面所以我们可以将其缩短为es-cluster-[0,1,2].elasticsearch。 第一个名为 fix-permissions 的容器用来运行 chown 命令将 Elasticsearch 数据目录的用户和组更改为1000:1000Elasticsearch 用户的 UID。因为默认情况下Kubernetes 用 root 用户挂载数据目录这会使得 Elasticsearch 无法访问该数据目录 第二个名为 increase-vm-max-map 的容器用来增加操作系统对mmap计数的限制默认情况下该值可能太低导致内存不足的错误 最后一个初始化容器是用来执行ulimit命令增加打开文件描述符的最大数量的。 我们这里使用 volumeClaimTemplates 来定义持久化模板Kubernetes 会使用它为 Pod 创建 PersistentVolume设置访问模式为ReadWriteOnce这意味着它只能被 mount 到单个节点上进行读写然后最重要的是使用了一个名为do-block-storage的 StorageClass 对象所以我们需要提前创建该对象我们这里使用的 NFS 作为存储后端所以需要安装一个对应的nfs provisioner 驱动。 kubectl apply -f elasticsearch-statefulset.yaml kubectl get pods -n kube-loggingkubectl get svc -n kube-logging安装kibana组件 vim kibana.yaml apiVersion: v1 kind: Service metadata:name: kibananamespace: kube-logginglabels:app: kibana spec:ports:- port: 5601selector:app: kibana --- apiVersion: apps/v1 kind: Deployment metadata:name: kibananamespace: kube-logginglabels:app: kibana spec:replicas: 1selector:matchLabels:app: kibanatemplate:metadata:labels:app: kibanaspec:containers:- name: kibanaimage: kibana:7.12.1imagePullPolicy: IfNotPresentresources:limits:cpu: 1000mrequests:cpu: 100menv:- name: ELASTICSEARCH_URLvalue: http://elasticsearch:9200ports:- containerPort: 5601kubectl apply -f kibana.yaml kubectl get pods -n kube-loggingkubectl get svc -n kube-logging修改service的type类型为NodePort kubectl edit svc kibana -n kube-logging把type: ClusterIP变成type: NodePortkubectl get svc -n kube-loggingkubectl get node -owide通过上面获取到的节点IP和服务端口 在浏览器中打开http://192.168.40.121:31692即可如果看到如下欢迎界面证明 Kibana 已经成功部署到了Kubernetes集群之中。 安装fluentd组件 我们使用daemonset控制器部署fluentd组件这样可以保证集群中的每个节点都可以运行同样fluentd的pod副本这样就可以收集k8s集群中每个节点的日志 在k8s集群中容器应用程序的输入输出日志会重定向到node节点里的json文件中fluentd可以tail和过滤以及把日志转换成指定的格式发送到elasticsearch集群中。 除了容器日志fluentd也可以采集kubelet、kube-proxy、docker的日志。 vim fluentd.yaml apiVersion: v1 kind: ServiceAccount metadata:name: fluentdnamespace: kube-logginglabels:app: fluentd --- apiVersion: rbac.authorization.k8s.io/v1 kind: ClusterRole metadata:name: fluentdlabels:app: fluentd rules: - apiGroups:- resources:- pods- namespacesverbs:- get- list- watch --- kind: ClusterRoleBinding apiVersion: rbac.authorization.k8s.io/v1 metadata:name: fluentd roleRef:kind: ClusterRolename: fluentdapiGroup: rbac.authorization.k8s.io subjects: - kind: ServiceAccountname: fluentdnamespace: kube-logging --- apiVersion: apps/v1 kind: DaemonSet metadata:name: fluentdnamespace: kube-logginglabels:app: fluentd spec:selector:matchLabels:app: fluentdtemplate:metadata:labels:app: fluentdspec:serviceAccount: fluentdserviceAccountName: fluentdtolerations:- key: node-role.kubernetes.io/control-planeeffect: NoSchedulecontainers:- name: fluentdimage: docker.io/fluent/fluentd-kubernetes-daemonset:v1.16-debian-elasticsearch7-1imagePullPolicy: IfNotPresentenv:- name: FLUENT_ELASTICSEARCH_HOSTvalue: elasticsearch.kube-logging.svc.cluster.local- name: FLUENT_ELASTICSEARCH_PORTvalue: 9200- name: FLUENT_ELASTICSEARCH_SCHEMEvalue: http- name: FLUENTD_SYSTEMD_CONFvalue: disable- name: FLUENT_CONTAINER_TAIL_PARSER_TYPEvalue: cri- name: FLUENT_CONTAINER_TAIL_PARSER_TIME_FORMATvalue: %Y-%m-%dT%H:%M:%S.%L%zresources:limits:memory: 512Mirequests:cpu: 100mmemory: 200MivolumeMounts:- name: varlogmountPath: /var/log- name: containersmountPath: /var/log/containersreadOnly: trueterminationGracePeriodSeconds: 30volumes:- name: varloghostPath:path: /var/log- name: containershostPath:path: /var/log/containerskubectl apply -f fluentd.yaml kubectl get pods -n kube-logging -owideFluentd 启动成功后我们可以前往 Kibana 的 Dashboard 页面中点击左侧的Discover可以看到如下配置页面 在这里可以配置我们需要的 Elasticsearch 索引前面 Fluentd 配置文件中我们采集的日志使用的是 logstash 格式 这里只需要在文本框中输入logstash-*即可匹配到 Elasticsearch 集群中的所有日志数据然后点击下一步进入以下页面 logstash-*点击next step出现如下 选择timestamp创建索引 点击左侧的discover可看到如下 测试收集pod容器日志 vim pod.yamlapiVersion: v1 kind: Pod metadata:name: counter spec:containers:- name: countimage: busybox:1.28imagePullPolicy: IfNotPresentargs: [/bin/sh, -c,i0; while true; do echo $i: $(date); i$((i1)); sleep 1; done]kubectl apply -f pod.yaml登录到kibana的控制面板在discover处的搜索栏中输入kubernetes.pod_name:counter这将过滤名为的Pod的日志数据counter如下所示 kubernetes.pod_name:counter
http://www.dnsts.com.cn/news/87378.html

相关文章:

  • 网站的推广方案有哪些手机网站 像素
  • 多网站怎么做seo网络推广平台哪家公司最好
  • 建设部二级结构工程师注销网站潍坊建站公司
  • 建设银行网站查询房贷信息查询个人crm
  • 网站建设 业务网站怎么seo
  • 网站广告图片在线制作asp.ne手机触摸网站开发
  • 肇庆中小企业网站制作wordpress虾米音乐插件
  • 西安个人网站建设珠海专业网站制作平台
  • wordpress英文站源码免费做彩页网站
  • 县城做二手车网站莆田 网站建设
  • 网站网络推广推广网站开发周期是什么意思
  • 网页和网站的不同国家最新防疫政策
  • 网站建设合同是否交纳印花税宜昌市城市建设学校网站
  • uc做购物网站网站推广公司傻大白
  • 做服装商城网站公司网站制作有哪些
  • 做企业的网站申请域网站
  • 大理做网站惠民建设局网站是哪个
  • 东莞网站优化成都网页平面设计培训班
  • 精通网站开发书籍wordpress 百度分享按钮
  • 河南网站排名优化哪家好企业网站 留言板
  • 网站建设及维护合同做效果图兼职的网站
  • 网站管理制度建设的情况创意名字设计
  • 做网站时空间的选择公司比较好
  • 网站没备案怎么做淘宝客衡水建设局网站
  • 石家庄有哪些做网站的公司昆山住房与城乡建设局网站
  • 怎么做视频平台网站吗物业管理信息系统
  • 网站开发与设计需要哪些技术厦门建设企业网站
  • 网站怎么做不换行文字代码百度官网优化
  • 网站2级域名 还是子目录wowway wordpress
  • 怎么建设一个音乐网站长沙做网站微联讯点不错