(2022版)一套教程搞定k8s安装到实战 | K8s集群安装(二进制)
视频来源:B站《(2022版)最新、最全、最详细的Kubernetes(K8s)教程,从K8s安装到实战一套搞定》
一边学习一边整理老师的课程内容及试验笔记,并与大家分享,侵权即删,谢谢支持!
附上汇总贴:(2022版)一套教程搞定k8s安装到实战 | 汇总_COCOgsta的博客-CSDN博客
主机信息,服务器IP地址不能设置为dhcp,要配置静态IP。
VIP(虚拟IP)不要和公司内网IP重复,首先去ping一下,不通才可用。VIP需要和主机在同一个局域网内!
K8s Service网段:10.96.0.0/12
K8s Pod网段:172.16.0.0/12
系统环境:
虚拟机环境:
配置所有节点hosts文件
CentOS7安装yum源如下:
必备工具安装
所有节点关闭firewalld、dnsmasq、selinux
所有节点关闭swap分区,fstab注释swap
所有节点同步时间
安装ntpdate
所有节点同步时间。时间同步配置如下:
所有节点配置limit:
Master01节点免密钥登录其他节点,安装过程中生成配置文件和证书均在Master01上操作,集群管理也在Master01上操作,阿里云或者AWS上需要单独一台kubectl服务器。密钥配置如下:
Master01配置免密码登录其他节点
Master01下载安装文件
所有节点升级系统并重启,此处升级没有升级内核,升级内核可参考之前的内容一套教程搞定k8s安装到实战 。
本节主要安装的是集群中用到各种组件,比如Docker-ce、Kubernetes各组件等。
所有节点安装Docker-ce 19.03
温馨提示:
由于新版kubelet建议使用systemd,所以可以把docker的CgroupDriver改成systemd
所有节点设置开机自启动Docker:
Master01下载kubernetes安装包
下载etcd安装包
解压kubernetes安装文件
解压etcd安装文件
版本查看
将组件发送到其他节点
所有节点创建/opt/cni/bin目录
切换分支
二进制安装最关键步骤,一步错误全盘皆输,一定要注意每个步骤都要是正确的
Master01下载生成证书工具
所有Master节点创建etcd证书目录
所有节点创建kubernetes相关目录
Master01节点生成etcd证书
生成证书的CSR文件:证书签名请求文件,配置了一些域名、公司、单位
将证书复制到其他节点
Master01生成kubernetes证书
创建ServiceAccount Key
etcd配置大致相同,注意修改每个Master节点的etcd配置的主机名和IP地址
所有Master节点创建etcd service并启动
所有Master节点创建etcd的证书目录
查看etcd状态
高可用配置(注意:如果不是高可用集群,haproxy和keepalived无需安装)
如果在云上安装也无需执行此章节的步骤,可以直接使用云上的lb,比如阿里云slb,腾讯云elb等
所有Master节点安装keepalived和haproxy
所有Master配置HAProxy,配置一样
所有Master节点配置KeepAlived,配置不一样,注意区分[root@k8s-master01 pki]# vim
/etc/keepalived/keepalived.conf,注意每个节点的IP和网卡(interface参数)
所有master节点
所有master节点启动haproxy和keepalived
VIP测试
重要:如果安装了keepalived和haproxy, 需要测试keepalived是否是正常的
如果ping不通且telnet没有出现']',则认为VIP不可以,不可再继续往下执行,需要排查keepalived的问题,比如防火墙和selinux,haproxy和keepalived的状态,监听端口灯
所有节点查看防火墙状态必须为disable和inactive:systemctl status firewalld
所有节点查看selinux状态,必须为disable:getenforce
master节点查看haproxy和keepalived状态:systemctl status keepalived haproxy
所有节点创建相关目录
所有Master节点创建kube-apiserver service,# 注意,如果不是高可用集群,192.168.1.236改为master01的地址
注意本文档使用的k8s service网段为10.96.0.0/12,该网段不能和宿主机的网段、Pod网段重复,请按需修改
所有Master节点开启kube-apiserver
检测kube-server状态
所有Master节点配置kube-controller-manager service
所有Master节点启动kube-controller-manager
查看启动状态
所有Master节点配置kube-scheduler service
在Master01创建bootstrap
#注意,如果不是高可用集群,192.168.1.236:8443改为master01的地址,8443改为apiserver的端口,默认是6443
注意:如果要修改boostrap.secret.yaml的token-id和token-secret,需要保证下图红圈内内的字符串一致的,并且位数是一样的。还要保证上个命令的黄色字体:c8ad9c.2e4d610cf3e7426e与你修改的字符串要一致
Master01节点复制证书至Node节点
所有节点创建相关目录
所有节点配置kubelet service
所有节点配置kubelet service的配置文件
创建kubelet的配置文件
注意:如果更改了k8s的service网段,需要更改kubelet-conf.yml的clusterDNS:配置,改成k8s Service网段的第十个地址,比如10.96.0.10
启动所有节点kubelet
查看集群状态
以下操作在Master01执行
在master01将kube-proxy的systemd Service文件发送到其他节点
如果更改了集群Pod的网段,需要更改
kube-proxy/kube-proxy.conf的clusterCIDR:172.16.0.0/12参数为Pod的网段。vi?kube-proxy/kube-proxy.conf(在k8s-ha-install目录下执行)
所有节点启动kube-proxy
以下步骤只在master01执行
修改calico-etcd.yaml的以下位置
查看容器状态
查看节点状态
如果更改了k8s service的网段需要将coredns的serviceIP改成k8s service网段的第十个IP
安装coredns
在新版的Kubernetes中系统资源的采集均使用Metrics-server,可以通过Metrics采集节点和Pod的内存、磁盘、CPU和网络的使用率。
安装metrics server
等待metrics server启动然后查看状态
Dashboard用于展示集群中的各类资源,同时也可以通过Dashboard实时查看Pod的日志和在容器中执行一些命令等。
官方Github地址:
https://github.com/kubernetes/dashboard
可以在官方dashboard查看到最新版dashboard
kubectl apply -f https://raw.githubusercontent.com/kubernetes/dashboard/v2.0.3/aio/deploy/recommended.yaml
创建管理员用户vim admin.yaml
在Chrome浏览器启动文件中加入启动参数,用于解决无法访问Dashboard的问题
更改dashboard的svc为NodePort:
kubectl edit svc kubernetes-dashboard -n kubernetes-dashboard
将ClusterIP更改为NodePort(如果已经为NodePort忽略此步骤):
查看端口号:
根据自己的实例端口号,通过任意安装了kube-proxy的宿主机或者VIP的IP+端口即可访问到dashboard:
访问dashboard:
https://192.168.1.236:30825/#/login,选择登录方式为令牌(即token方式)
查看token值
将token值输入到令牌后,单击登录即可访问Dashboard