1 环境准备
- 1 机器环境
节点CPU核数必须是 :>= 2核 /内存要求必须是:>=2G ,否则k8s无法启动
DNS网络: 最好设置为 本地网络连通的DNS,否则网络不通,无法下载一些镜像
linux内核: linux内核必须是 4 版本以上,因此必须把linux核心进行升级
节点hostname | 作用 | IP |
---|---|---|
kmaster | master | 192.168.8.121 |
knode1 | node1 | 192.168.8.122 |
knode2 | node2 | 192.168.8.123 |
1.2 hostname
1 | bash复制代码[root@base1 ~]# hostnamectl set-hostname kmaster --static |
1.3 网络设置
1 | bash复制代码[root@base1 ~]# vi /etc/sysconfig/network-scripts/ifcfg-ens33 |
1.4 查看主机名
1 | bash复制代码hostname |
1.5 配置IP host映射关系
1 | bash复制代码vi /etc/hosts |
1.6 安装依赖环境,注意:每一台机器都需要安装此依赖环境
1 | bash复制代码yum install -y conntrack ntpdate ntp ipvsadm ipset jq iptables curl sysstatlibseccomp wget vim net-tools git iproute lrzsz bash-completion tree bridge-utils unzip bind-utils gcc |
1.7 安装iptables,启动iptables,设置开机自启,清空iptables规则,保存当前规则到默认规则
1 | bash复制代码# 关闭防火墙 |
1.8 关闭selinux
1 | bash复制代码# 闭swap分区【虚拟内存】并且永久关闭虚拟内存 |
1.9 升级Linux内核为4.44版本
1 | bash复制代码rpm -Uvh http://www.elrepo.org/elrepo-release-7.0-4.el7.elrepo.noarch.rpm |
2 安装k8s
2.1 对于k8s,调整内核参数 kubernetes.conf
1 | bash复制代码cat > kubernetes.conf <<EOF |
错误解决:
1 | bash复制代码lsmod |grep conntrack |
2.2 调整系统临时区
1 | bash复制代码#设置系统时区为中国/上海 |
2.3 关闭系统不需要的服务
1 | bash复制代码systemctl stop postfix && systemctl disable postfix |
2.4 设置日志保存方式
2.4.1 创建保存日志的目录
1 | bash复制代码mkdir /var/log/journal |
2.4.2 创建配置文件存放目录
1 | bash复制代码mkdir /etc/systemd/journald.conf.d |
2.4.3 创建配置文件
1 | bash复制代码cat > /etc/systemd/journald.conf.d/99-prophet.conf <<EOF |
2.4.4 重启systemd journald 的配置
1 | bash复制代码systemctl restart systemd-journald |
2.4.5 打开文件数调整(可忽略,不执行)
1 | bash复制代码echo "* soft nofile 65536" >> /etc/security/limits.conf |
2.4.6 kube-proxy 开启 ipvs 前置条件
1 | bash复制代码modprobe br_netfilter |
3 docker部署
3.1 安装docker
1 | bash复制代码yum install -y yum-utils device-mapper-persistent-data lvm2 |
3.2 设置docker daemon文件
1 | bash复制代码#创建/etc/docker目录 |
3.3 重启docker服务
1 | bash复制代码systemctl daemon-reload && systemctl restart docker && systemctl enable docker |
4 kubeadm[一键安装k8s]
4.1 yum仓库镜像
国内
1 | bash复制代码cat <<EOF > /etc/yum.repos.d/kubernetes.repo |
官网
1 | bash复制代码cat <<EOF > /etc/yum.repos.d/kubernetes.repo |
4.2 安装kubeadm 、kubelet、kubectl(1.20.1)
1 | bash复制代码yum install -y kubelet kubeadm kubectl --disableexcludes=kubernetes |
5 准备k8s镜像
5.1 在线拉取镜像
生成默认kubeadm.conf文件
1 | bash复制代码kubeadm config print init-defaults > kubeadm.conf |
编辑kubeadm.conf,将Kubernetes版本修改为v1.20.1
下载镜像
1 | bash复制代码kubeadm config images pull --config kubeadm.conf |
保存镜像
1 | bash复制代码mkdir kubeadm-basic.images |
5.2 离线镜像
提取码:548z
上传镜像压缩包kubeadm-basic.images.tar.gz,把压缩包中的镜像导入到本地镜像仓库
1 | bash复制代码[root@kmaster ~]# ll |
编写脚本问题,导入镜像包到本地docker镜像仓库:
1 | bash复制代码# kubeadm 初始化 k8s 集群的时候,会从gce Google云中下载响应的镜像,且镜像相对比较大,下载比较慢 |
5.3 node节点导入镜像
knode1导入镜像
1 | bash复制代码[root@knode1 ~]# ./image-load.sh |
knode2导入镜像
1 | bash复制代码[root@knode2 ~]# ./image-load.sh |
6 k8s部署
1 | bash复制代码#初始化主节点----只需要在主节点执行 |
参考kubeadm-config.yaml
1 | config.yaml复制代码apiVersion: kubeadm.k8s.io/v1beta2 |
按照k8s指示,执行以下命令:
1 | bash复制代码mkdir -p $HOME/.kube |
执行命令前:
1 | bash复制代码kubectl get node |
执行命令后
1 | bash复制代码kubectl get node |
我们发现已经可以成功查询node节点信息了,但是节点的状态却是NotReady,不是Runing的状态。
原因是此时我们使用ipvs+flannel的方式进行网络通信,但是flannel网络插件还没有部署,因此节点状态为NotReady
7 flannel插件
1 | bash复制代码#部署flannel网络插件---只需要在主节点执行 |
验证
1 | bash复制代码[root@kmaster ~]# kubectl get pod -n kube-system |
8 追加Node节点
1 | bash复制代码# 假如主节点以及其余工作节点,执行安装日志中的命令即可 |
knode1
1 | bash复制代码kubeadm join 192.168.8.121:6443 --token abcdef.0123456789abcdef \ |
knode2
1 | bash复制代码kubeadm join 192.168.8.121:6443 --token abcdef.0123456789abcdef \ |
9 验证状态
1 | bash复制代码[root@kmaster ~]# kubectl get node |
1 | bash复制代码[root@kmaster ~]# kubectl get pod -n kube-system -o wide |
10 查看docker和k8s使用版本
1 | bash复制代码[root@kmaster ~]# docker version |
注意:
使用docker版本20.10.1、Go版本1.13.15,
使用k8s版本1.20.1、Go版本1.15.5
本文转载自: 掘金