![](https://img-blog.csdnimg.cn/20210521154052442.png?x-oss-process=image/resize,m_fixed,h_224,w_224)
从零开始安装kubernetes
文章平均质量分 68
从零开始手动安装kubernetes
hzw@sirius
志之所及,皆为征途
展开
-
1.集群测试机器准备(虚拟机)
1. 虚拟网络2. 虚拟机准备准备一个模板虚机后续各虚机从该模板clone出来安装一个centos虚机内核要求3.8以上,这里是3.10配置网络vi /etc/sysconfig/network-scripts/ifcfg-eno16777736TYPE=EthernetBOOTPROTO=noneNAME=eno16777736DEVICE=eno16777736ONBOOT=yesIPADDR=172.10.10.222NETMASK=255.255.255.0原创 2021-05-21 15:50:45 · 141 阅读 · 0 评论 -
2. docker安装
2. docker安装测试服务器版本信息,其他版本看具体情况参考(内核要求3.8以上)CentOS Linux release 7.2.1511 (Core)Linux 200 3.10.0-327.el7.x86_64 #1 SMP Thu Nov 19 22:10:57 UTC 2015 x86_64 x86_64 x86_64 GNU/Linux一. 下载docker安装包地址:https://download.docker.com/linux/centos/7/x86_64/stabl原创 2021-05-21 16:08:23 · 127 阅读 · 0 评论 -
3. 自建DNS(bind9)
3. 自建DNS(bind9)扩展关键词:web dns、NamedManager(是一个基于Web的DNS管理系统)注意:下文操作是在172.10.10.11机器上处理的,关键配置注意对应各主机ip 及其hostname的设置一、bind是什么Linux中Bind9(dns)配置详解二、安装bindyum install bind三、配置\启动bind91. 主配置文件vi /etc/named.conf 注意严格格式,空格等options节点下监听端口和IP修改原创 2021-05-21 16:19:18 · 2167 阅读 · 0 评论 -
4. 证书环境
测试操作主机 172.10.10.200证书环境证书工具opensslcfssl(本节主角)手把手-安装-cfsslcfssl 工具cfsslwget https://pkg.cfssl.org/R1.2/cfssl_linux-amd64cp cfssl_linux-amd64 /usr/bin/cfsslcfssljsonwget https://pkg.cfssl.org/R1.2/cfssljson_linux-amd64cp cfssljson_linux-a.原创 2021-05-24 09:11:37 · 212 阅读 · 0 评论 -
5. harbor镜像私服
操作节点:node200.hzw.com 172.10.10.200harbor镜像私服下载harbor包从github上获取:https://github.com/goharbor/harbor/releases下载完离线安装包后传到目标节点安装harbor了解一点:harbor启动后是多个容器的,其启动方式是使用docker-compose来进行编排的上面下载的离线安装包,其实包含了启动harbor需要的所有镜像安装docker-compose因为harbor的ins.原创 2021-05-25 11:25:51 · 442 阅读 · 0 评论 -
6.k8s主控节点-部署etcd
supervisorcfssletcdk8s主控节点-部署etcd一、准备集群证书(证书环境参考4.证书环境章节)准备ca-config.json技巧:cfssl print-defaults config能够打印配置文件模板作参考vi /etc/certs/ca-config.json{ "signing": { "default": { "expiry": "175200h" }, "profiles".原创 2021-05-25 11:37:41 · 376 阅读 · 0 评论 -
7. 获取k8s
获取k8s下载https://github.com/kubernetes/kubernetes/releases解压└── kubernetes-v1.17.16 ├── addons ├── kubernetes-src.tar.gz ├── LICENSES └── server └── bin ├── apiextensions-apiserver ├── kubeadm原创 2021-05-25 11:41:09 · 164 阅读 · 0 评论 -
8.k8s主控节点-k8s-apiserver
k8s主控节点-k8s-apiserver一、证书准备node200环境etcd client证书vi k8s-node-client-csr.json{ "CN": "k8s-node-client", "hosts": [ ], "key": { "algo": "rsa", "size": 2048 }, "name": [ { "C": "CN",原创 2021-05-31 16:24:18 · 334 阅读 · 0 评论 -
9.k8s主控节点-部署L4高可用反向代理服务
VIP、keepalive、L4反向代理node10、node11、node12相关资料:Keepalived之——Keepalived + Nginx 实现高可用 Web 负载均衡高可用实践——Keepalived踩坑记录Keepalived原理k8s主控节点-部署L4反向代理服务安装nginxnginx 4层代理配置nginx http段中是7L代理配置,注意不要配置到http段下vi /etc/nginx/nginx.confstream { upstream.原创 2021-05-31 16:27:48 · 334 阅读 · 0 评论 -
10.k8s主控节点-controller-manager
k8s主控节点-controller-manager启动脚本vi /opt/kubernetes/server/bin/kube-controller-manager.sh#!/bin/sh./kube-controller-manager \ --allocate-node-cidrs true \ # 配合cluster-cidr一起作用 --cluster-cidr 172.20.0.0/16 \ --leader-elect true \ --log-dir /data/lo原创 2021-06-01 09:09:55 · 315 阅读 · 0 评论 -
11.k8s主控节点-scheduler
k8s主控节点-scheduler启动脚本vi /opt/kubernetes/server/bin/kube-scheduler.sh#!/bin/sh./kube-scheduler \ --leader-elect \ --log-dir /data/logs/kubernetes/kube-scheduler \ --master http://127.0.0.1:8080 \ --v 2chmod +x /opt/kubernetes/server/bin/kube-原创 2021-06-01 09:10:55 · 168 阅读 · 0 评论 -
12.k8s运算节点-kubelet
k8s运算节点-kubelet一、证书准备(node200节点处理)准备证书签名请求csrvi /opt/certs/kubelet-server-csr.json{ "CN": "kubelet-server", "hosts": [ "127.0.0.1", "172.10.10.10", "172.10.10.21", "172.10.10.22" ], "key": { "algo": "rsa",原创 2021-06-02 09:48:15 · 289 阅读 · 0 评论 -
13.k8s运算节点-kube-proxy
k8s运算节点-kube-proxykube-proxy 连接node网络和集群网络一、证书准备node200vi /opt/certs/kube-proxy-client-csr.json{ "CN": "system:node-proxier", "key": { "algo": "rsa", "size": 2048 }, "names": [ { "C": "CN",原创 2021-06-03 09:07:58 · 353 阅读 · 0 评论 -
14.k8s-helloword验证集群
k8s-helloword验证集群使用nginx镜像验证docker pull nginx:1.19.8docker tag nginx:1.19.8 harbor.hzwod.com/public/nginx:1.19.8docker push harbor.hzwod.com/public/nginx:1.19.8每个node上启动nginx容器使用DaemonSet controller在每个node上都启动一个nginxDaemonSet 确保全部(或者一些)Node 上运行一个 P原创 2021-06-04 09:22:40 · 121 阅读 · 0 评论 -
15.kubectl资源管理入门
kubectl资源管理入门资源的CURD核心资源管理方式陈述式管理方法主要依赖命令行CLI工具进行管理声明式管理方法主要依赖统一资源配置清单(manifest)进行管理GUI式管理方法主要依赖图形化操作界面(web页面)进行管理,如dashborard三种方式互相依托,协同工作通过kubectl命令管理资源(陈述式)get、create、describe、delete、exec、expose、scale、…更多命令查看kubectl -h,查看http://docs.k原创 2021-06-04 09:28:24 · 108 阅读 · 0 评论 -
16.节点通信-flannel
16.节点通信-flannelConfiguration: https://github.com/flannel-io/flannel/blob/master/Documentation/configuration.mdRunning flannel: https://github.com/flannel-io/flannel/blob/master/Documentation/running.mdBackends: https://github.com/flannel-io/flan原创 2021-06-08 09:08:38 · 585 阅读 · 0 评论 -
17.搭建k8s统一资源清单http服务
17.搭建k8s统一资源清单http服务node200上创建文件http服务mkdir /data/k8s-yamlvi /etc/nginx/conf.d/k8s-yaml.hzwod.com.confserver { listen 80; server_name k8s-yaml.hzwod.com; location / { autoindex on; default_type text/plai原创 2021-06-08 09:10:35 · 137 阅读 · 0 评论 -
18.服务发现-CoreDNS
18.服务发现-CoreDNS本节将通过向k8s内部署容器的方式来交付CoreDNS服务一、获取CoreDNS二进制包:https://github.com/coredns/coredns/releases使用容器部署CoreDNS:https://registry.hub.docker.com/r/coredns/coredns/tags?page=1&ordering=last_updateddocker pull coredns/coredns:1.8.3二、资源配置清单参原创 2021-06-09 20:38:19 · 1178 阅读 · 0 评论 -
19.服务暴露-nodePort Service
19.服务暴露-nodePort ServiceNodePort类型Service,kube-proxy 只能使用iptables模型,而无法使用ipvs模型创建notePort型service陈述式kubectl create service nodeport nginx-dp --tcp=80:8001声明式vi nginx-noteportSvc2dp.yamlapiVersion: v1kind: Servicemetadata: labels: app: ngin原创 2021-06-15 14:30:13 · 302 阅读 · 0 评论 -
20_1.服务暴露-ingress (traefik)
20_1.服务暴露-ingress (traefik)一.ingress 简介Ingress是建立在Service之上的L7访问入口。Ingress是K8S API的标准资源类型之一,也是一种核心资源,基于域名和URL路径,把用户的请求(可以来源于集群外部)转发至指定Service的资源,从而实现服务暴露Ingress控制器 可以为Ingress资源监听某套接字,根据Ingress规则路由调度流量常用的Ingress控制器的实现软件有:Ingress-nginx、HAProxy、Traefik等原创 2021-06-15 14:36:56 · 656 阅读 · 0 评论 -
20_2.服务暴露-ingress (ingress-nginx)
20_2.服务暴露-ingress (ingress-nginx)ingress-nginxhttps://github.com/kubernetes/ingress-nginx准备镜像docker pull quay.io/kubernetes-ingress-controller/nginx-ingress-controller:0.30.0资源配置清单参考:https://github.com/kubernetes/ingress-nginx/blob/master/deploy/stat原创 2021-06-16 12:17:47 · 343 阅读 · 0 评论 -
21.安装Dashboard
21.安装DashboardKubernetes Dashboard 是 k8s集群的一个 WEB UI管理工具,代码托管在 github 上地址:https://github.com/kubernetes/dashboard提前准备docker 镜像,版本参见下文image的配置一、资源配置清单 1. RBAC rbac.yaml 查看创建ServiceAccount用于启动容器时使用的帐号Role、RoleBinding创建角色赋予dashbord相关权限,再绑定该role到service原创 2021-06-17 19:58:58 · 339 阅读 · 2 评论 -
21_1.kubernets_dashboard_recommended.yaml
https://github.com/kubernetes/dashboard/blob/master/aio/deploy/recommended.yaml# Copyright 2017 The Kubernetes Authors.## Licensed under the Apache License, Version 2.0 (the "License");# you may not use this file except in compliance with the License.原创 2021-06-24 23:16:45 · 372 阅读 · 0 评论 -
22.监控heapster-influxdb-grafana
heapster从1.11开始逐渐被废弃,这篇文章只作为补充,感兴趣的可以看看。从 v1.8 开始,资源使用情况的监控可以通过 Metrics API的形式获取,具体的组件为Metrics Server,用来替换之前的heapster,后续的文章有对Metrics Server的介绍和配置说明22.监控heapster-influxdb-grafana无法直接在国内网络环境下从k8s.gcr.io下载镜像问题部署K8S最大的难题是镜像下载,在国内无翻墙环境情况下很难从k8s.gcr.io等镜像.原创 2021-06-24 23:18:45 · 148 阅读 · 1 评论 -
23.安装监控prometheus
23.监控prometheus官方文档:https://prometheus.io/docshttps://github.com/coreos/prometheus-operatorhttps://www.qikqiak.com/k8strain/monitor/prometheus/一. 简介1. 组件架构Prometheus Server服务核心组件,通过pull metrics从 Exporter 拉取和存储监控数据,并提供一套灵活的查询语言(PromQL)。Pushgateway原创 2021-06-29 09:45:26 · 422 阅读 · 1 评论 -
24. 安装使用grafana
24. 安装使用grafana一、安装grafana1. 准备一块存储准备一块存储供grafana容器挂载,以持久化自己的数据,否则当grafana容器重启或漂移时,原数据将会丢失。此处我们通过nfs做一个网络磁盘(nfs的使用此处不进行扩展)我们在172.10.10.100节点上创建nfs磁盘mkdir /data/K8SVOLUMESvi /etc/exports/data/K8SVOLUMES *(rw,sync,no_wdelay,no_root_squash)no_roo原创 2021-07-01 09:15:23 · 408 阅读 · 1 评论 -
25.prometheus监控k8s集群节点
25.prometheus监控k8s集群一、node-exporternode_exporter抓取用于采集服务器节点的各种运行指标,比如 conntrack,cpu,diskstats,filesystem,loadavg,meminfo,netstat等更多查看:https://github.com/prometheus/node_exporter1. Daemon Set部署node-exporter拉取镜像docker pull prom/node-exporter:v1.1.2vi n原创 2021-07-01 09:20:22 · 899 阅读 · 1 评论 -
26.prometheus监控k8s其他资源
26.prometheus监控k8s其他资源一、k8s常用资源监控1. 容器(cadvisor)- job_name: 'kubernetes-cadvisor' kubernetes_sd_configs: - role: node scheme: https tls_config: ca_file: /var/run/secrets/kubernetes.io/serviceaccount/ca.crt bearer_token_file: /var/run/secre原创 2021-07-02 09:09:40 · 183 阅读 · 0 评论 -
27.链路追踪-skywalking-oap
27.链路追踪-skywalking-oap我们这里手动构造资源文件部署skywalking到k8s集群中Helm安装参考https://github.com/apache/skywalking-kubernetes/tree/master/chart/skywalkingnamespace:skywalking-ns一、skywalking-oap资源说明elasticsearch-svc.yamlelasticsearch-statefulset.yamloap-rbac.yaml原创 2021-07-02 09:10:50 · 1118 阅读 · 0 评论 -
28. 链路追踪-skywalking-javaagent
28. 链路追踪-skywalking-javaagent针对java应用,skywalking提供了一个方案,使用javaagent技术实现无侵入性的织入skywalking client到我们的java应用中实现对主流RPC及中间件的链路信息抽取。skywalking的使用这里不进行展开,我们主要讨论一下在k8s中,如何组织集成skywalking javaagent 到我们的java应用容器中。initContainers方式集成获取skywalking-java-agent镜像docke原创 2021-07-02 09:12:16 · 629 阅读 · 0 评论 -
29.kubernetes升级
29.kubernetes升级一、升级思路正在运行的业务容器不中断,进行灰度升级。一般的是先更新master上的k8s服务版本,再滚动更新node上的k8s服务。node上的服务升级要先隔离目标node的业务流量,待在途任务全部执行完成后停掉业务pod,再更新目标node上的kubelet和kube-proxy版本,升级完成后启动业务pod释放业务流量。再同理逐步升级其他node节点。升级时考虑高版本Master对低版本Node的兼容性,高版本的Master一般可以管理低版本的Node,但版本不可以差原创 2021-07-05 09:18:04 · 396 阅读 · 1 评论 -
30.kubernetes 聚合层
30.kubernetes 聚合层说明:下文涉及到kube-apiserver则代表的是master节点的apiserver服务一、简述聚合层(Aggregation Layer)可以让用户通过额外的 API 来扩展 kubernetes,这些 API 作为Kubernetes 核心API的补充,以基于具体需求来扩展功能。聚合层在kube-apiserver进程内运行,API扩展资源注册前,聚合层不会做任何事。注册API时,需添加一个APIServer资源对象,该APIServer对象“申领”原创 2021-07-08 15:34:11 · 741 阅读 · 0 评论 -
31. API聚合层 + metrics-server
知识结构梳理HPAmetrics apiAPI aggregationmetrics.k8s.iometrics-servercustom.metrics.k8s.ioprometheus adapterexternal.metrics.k8s.io安装扩展API服务器链接资料https://www.cnblogs.com/wjoyxt/p/10003159.html31. API聚合层 + metrics-server一、metrics-serve原创 2021-07-08 15:39:10 · 580 阅读 · 0 评论