(亲测无坑)Centos7.x使用kubeadm安装K8s集群1.15.0版本
基础环境配置
三台Centos7.x的服务器,主节点 cpu >=2,node节点>=1
注:(上述cpu为最低配置,否则集群安装部署会报错,无法启动,对其他硬件无硬性要求)
以下操作若无特殊说明并指定服务器,默认三台执行一样的操作!!!
配置静态网络后需确认是否可以上网;
ping通百度即可 ;
cat <<EOF >> /etc/hosts10.0.2.15 server0110.0.2.16 server0210.0.2.17 server03EOF
配置主机ip映射及主机名;
hostnamectl set-hostname xxxxxx
设置主机名,重启后生效;
systemctl disable firewalld
禁止防火墙开机自启;
systemctl stop firewalld
关闭防火墙;
sed -i 's/SELINUX=permissive/SELINUX=disabled/' /etc/sysconfig/selinuxsed -i "s/SELINUX=enforcing/SELINUX=disabled/g" /etc/selinux/config
关闭selinux;
swapoff -a
临时关闭swap分区;
sed -i 's/.*swap.*/#&/' /etc/fstab
永久关闭swap分区;
cat <<EOF > /etc/sysctl.d/k8s.confnet.bridge.bridge-nf-call-ip6tables = 1net.bridge.bridge-nf-call-iptables = 1net.ipv4.ip_forward = 1EOF
修改内核参数;
modprobe br_netfilter
模块开机自启;
sysctl -p /etc/sysctl.d/k8s.conf
刷新策略生效;
cat > /etc/sysconfig/modules/ipvs.modules <<EOF#!/bin/bashmodprobe -- ip_vsmodprobe -- ip_vs_rrmodprobe -- ip_vs_wrrmodprobe -- ip_vs_shmodprobe -- nf_conntrack_ipv4EOF
节点重启后能自动加载所需模块;
chmod 755 /etc/sysconfig/modules/ipvs.modules && bash /etc/sysconfig/modules/ipvs.modules && lsmod | grep -e ip_vs -e nf_conntrack_ipv4
授权并查看;
yum install -y wget vim net-tools epel-release yum-utils device-mapper-persistent-data lvm2 ipvsadm ipvs
安装工具及依赖包;
cd /etc/yum.repos.dwget http://mirrors.aliyun.com/repo/Centos-7.repomv CentOS-Base.repo CentOS-Base.repo.bakmv Centos-7.repo CentOS-Base.repo
配置阿里云yum源;
cat <<EOF > /etc/yum.repos.d/kubernetes.repo[kubernetes]name=Kubernetesbaseurl=https://mirrors.aliyun.com/kubernetes/yum/repos/kubernetes-el7-x86_64enabled=1gpgcheck=0EOF
配置k8s yum源;
yum-config-manager --add-repo http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
添加docker的repo源;
yum list docker-ce --showduplicates |sort -r
查看支持的docker版本;
yum remove docker-ce -y
移除之前安装过的docker;
rpm -qa | grep docker
查看已有的docker rpm包;
rpm -e --nodeps 包名
全部删除,重新安装所需版本;
yum install -y docker-ce-18.09.9-3.el7 docker-ce-cli-18.09.9-3.el7
安装docker-ce服务端及客户端;
docker --version
查看版本;
systemctl enable docker
开机自启docker;
systemctl start docker
启动docker;
vim /etc/docker/daemon.json{ "exec-opts": ["native.cgroupdriver=systemd"] }
修改docker启动参数,docker cgroup driver为systemd;
systemctl restart docker
重启docker;
docker info | grep CgroupCgroup Driver: systemd
查看刚才配置的Cgroup;
安装K8S
yum install -y kubeadm-1.15.0-0 kubectl-1.15.0-0 kubelet-1.15.0-0
指定版本安装,不指定默认最新版本安装;
-------以上所有操作三台服务器都要执行-------以上所有操作三台服务器都要执行-------以上所有操作三台服务器都要执行-----
-------以下在server01服务器上执行-------------以下在server01服务器上执行--------------以下在server01服务器上执行------------
kubeadm config images list
查看此版本k8s所需镜像版本;
使用脚本下载docker镜像并且更改标签后删除原镜像;
vim images.sh#!/bin/bashset -eKUBE_VERSION=v1.16.2KUBE_PAUSE_VERSION=3.1ETCD_VERSION=3.3.15-0CORE_DNS_VERSION=1.6.2GCR_URL=k8s.gcr.ioALIYUN_URL=registry.cn-hangzhou.aliyuncs.com/google_containersimages=(kube-proxy:${KUBE_VERSION}kube-scheduler:${KUBE_VERSION}kube-controller-manager:${KUBE_VERSION}kube-apiserver:${KUBE_VERSION}pause:${KUBE_PAUSE_VERSION}etcd:${ETCD_VERSION}coredns:${CORE_DNS_VERSION})for imageName in ${images[@]} ;dodocker pull $ALIYUN_URL/$imageName docker tag $ALIYUN_URL/$imageName $GCR_URL/$imageNamedocker rmi $ALIYUN_URL/$imageNamedonechmod +x images.sh./images.shdocker images
查看下载后的镜像是否都在,如不全,重新执行脚本;
systemctl enable kubelet开机启动kubelet;sudo kubeadm init \--apiserver-advertise-address 10.0.2.15 \--kubernetes-version=v1.15.0 \--pod-network-cidr=10.244.0.0/16
初始化master;
初始化成功后会给出如下提示;
最后生成的命令记录下来,后边使用kubeadm join往集群中添加节点时会用到;
mkdir -p $HOME/.kubesudo cp -i /etc/kubernetes/admin.conf $HOME/.kube/configsudo chown $(id -u):$(id -g) $HOME/.kube/config
执行初始化成功后上图中给出的命令;
----以下操作在server02/server03上执行----以下操作在server02/server03上执行----以下操作在server02/server03上执行----
kubeadm join 10.0.2.15:6443 --token 33x0lt.vqzfnhj0m16c7ssp \--discovery-token-ca-cert-hash sha256:51256ae406a5d2c1d7a6ba5d78d54203a6f32d95c3376e63a1b77c03f1b04247 \--ignore-preflight-errors=all
(注意:此处不可直接粘贴,token值不一样)
将节点添加进集群;
-------以下在server01服务器上执行-------------以下在server01服务器上执行--------------以下在server01服务器上执行-----------
kubectl delete node node名字
删除节点的命令;
kubeadm reset
添加节点失败或者重新添加时使用的命令;
reset后,需要重新执行添加命令,尽量不要在master上使用,它会删除所有kubeadm配置;
kubectl get nodes
查看集群添加状态;
(注:如果kubectl get nodes 报错509,是因为没有执行初始化后给出的命令,执行下面命令;)
mkdir -p $HOME/.kubesudo cp -i /etc/kubernetes/admin.conf $HOME/.kube/configsudo chown $(id -u):$(id -g) $HOME/.kube/config
再次kubectl get nodes成功;
NotReady是因为没有安装网络查件,别急这就开始安装!
安装flannel
wget https://raw.githubusercontent.com/coreos/flannel/master/Documentation/kube-flannel.yml
下载flannel配置文件;
使用脚本拉取flannel镜像;
vim flannel.sh#!/bin/bashset -eFLANNEL_VERSION=v0.11.0QUAY_URL=quay.io/coreosQINIU_URL=quay-mirror.qiniu.com/coreosimages=(flannel:${FLANNEL_VERSION}-amd64flannel:${FLANNEL_VERSION}-arm64flannel:${FLANNEL_VERSION}-armflannel:${FLANNEL_VERSION}-ppc64leflannel:${FLANNEL_VERSION}-s390x)for imageName in ${images[@]} ;dodocker pull $QINIU_URL/$imageNamedocker tag $QINIU_URL/$imageName $QUAY_URL/$imageNamedocker rmi $QINIU_URL/$imageNamedonechmod +x flannel.sh./flannel.shdocker images
查看下载后的镜像是否都在,如不全,重新执行脚本;
kubectl apply -f kube-flannel.yml
拉取镜像成功之后,安装;
kubectl -n kube-system get pods
查看pod状态;
发现有几个没有ready,是因为node节点没有对应镜像,打包传过去load加载应用以下即可;
docker save -o pause.tar k8s.gcr.io/pause:3.1docker save -o kube-proxy.tar k8s.gcr.io/kube-proxy
将k8s.gcr.io/pause:3.1和k8s.gcr.io/kube-proxy镜像打成包;
打完包scp到server02/server03,并在server02,server03分别执行:
docker load -i pause.tardocker load -i kube-proxy.tar
load加载应用;
kubectl delete -f kube-flannel.yml
重新安装一次flannel;
kubectl create -f kube-flannel.yml
重新创建一次flannel;
再次kubectl -n kube-system get pods,已经全部running;
注:此区间三台全操作;
vim /var/lib/kubelet/kubeadm-flags.env
删除–network-plugin=cni参数;
systemctl restart kubelet
重启kubelet
注:此区间三台全操作;
再次kubectl get nodes,全部ready了;
这里还发现一个问题,k8s 1.16和1.15 kubectl get cs 格式不一样 获取结果显示不同;
1.16 kubectl get cs 如下:
1.15 kubectl get cs 如下:
kubectl get cs -o=go-template='{{printf "|NAME|STATUS|MESSAGE|\n"}}{{range .items}}{{$name := .metadata.name}}{{range .conditions}}{{printf "|%s|%s|%s|\n" $name .status .message}}{{end}}{{end}}'
输出的格式为:
|controller-manager|True|ok||scheduler|True|ok||etcd-0|True|{"health":"true"}|
测试dns
kubectl run curl --image=radial/busyboxplus:curl -itnslookup kubernetes.default
出现此显示为dns没有问题;
至此完成Centos7.x使用kubeadm安装K8s集群1.15.0版本!
参考链接 :
(亲测无坑)Centos7.x使用kubeadm安装K8s集群1.15.0版本 :https://mp.weixin.qq.com/s/okqu2b3u98NAXygqbveB5g
(亲测无坑)Centos7.x使用kubeadm安装K8s集群1.15.0版本相关推荐
- kubeadm创建k8s集群(1.14.2版本)
kubeadm创建k8s集群 1,环境准备 1.1,网络规划 节点名称 IP地址 角色 安装工具 k8s-master-01 172.16.2.101 master kubeadm.kubelet.k ...
- 使用kubeadm安装k8s集群故障处理三则
最近在作安装k8s集群,测试了几种方法,最终觉得用kubeadm应该最规范. 限于公司特别的网络情况,其安装比网上不能访问google的情况还要艰难. 慢慢积累经验吧. 今天遇到的三则故障记下来作参考 ...
- 使用kubeadm安装k8s集群的完整步骤(k8sv15.1)
一.创建虚拟机 首先使用vmware15 pro创建了4台centos7虚拟机,其中,3台用来组建k8s集群,1台为master节点,2台为node节点, 剩下的一台用来安装harbor配置私有仓库( ...
- kubeadm安装k8s集群详细手册
文章目录 一.k8s集群搭建 1.安装要求 2.关闭防火墙.selinux.swap分区 3.配置hostname.hosts. iptables 4.配置k8s阿里源 5.部署k8s的master和 ...
- kubeadm 安装 k8s 集群
文章目录 环境 三台 CentOS Version Ready 关闭所有防火墙 禁用 Selinux 关闭 swap 加入 host 信息 相关组件安装 Docker 安装 `kubelet`.`ku ...
- 【k8s系列】vmware中ubuntu22.04使用kubeadm安装k8s集群(1.24.4 or higher)(cka考试环境搭建)
文章目录 部署环境准备 环境修改 修改hostname(各修改各的) 修改hosts文件(master 和所有node ) 禁用swap(master 和所有node) 修改内核参数(master 和 ...
- kubeadm部署K8S集群并使用containerd做容器运行时
kubeadm部署K8S集群并使用containerd做容器运行时(内容全部实战验证有任何问题欢迎留言咨询讨论) 前言 去年12月份,当Kubernetes社区宣布1.20版本之后会逐步弃用docke ...
- kubeadm部署k8s集群最全最详细
一.安装要求 kubeadm安装kubernetes1.15 在开始之前,部署Kubernetes集群机器需要满足以下几个条件: 1.一台或多台机器(≥3奇数个),操作系统 CentOS7.x(最好是 ...
- kubernetes-二进制安装,亲测无坑,在参考安装过程中如果有什么问题欢迎交流,超级详细的文档
Kubernetes环境搭建(手动K8s集群安装配置.服务部署和管理使用详细步骤,入门K8s容器云平台架构) 前言 说明: 本博客是教大家如何手动搭建kubernetes集群(业内简称K8s),包括集 ...
最新文章
- 计算机wrod初级考试题及答案,计算机基础知识+Word基础知识+Excel基础知识试题答案解析.doc...
- 姓名、病史、医疗影像通通泄露,500万人数据库没密码随便看,AI医疗暴露危机...
- WordCount by C# 结对编程
- formal method lecture 9
- Ruby学习笔记_索引贴
- Ajax系统学习总结
- zabbix实现mysql数据库的监控
- P3178 [HAOI2015]树上操作
- html 闪烁文本,HTML最简单的文字闪烁代码
- 小程序picker标题_微信小程序-自定义picker选择器
- secucrecrt配置文件导入和保存
- NLP简报(Issue#8)
- 网络编程之bind()的未解之谜
- 《剑指Offer》面试题6 重建二叉树——勘误
- php 中function_PHP中的function函数详解
- 木.马查杀-应急工具-排查步骤
- 关闭445端口即关闭共享文件功能
- 电源纹波怎么测量,纹波和噪声的区别
- 华夏银行签约金融壹账通 借助金融科技转型升级
- 天还是那个天,从前却不再是那个从前
热门文章
- 手撕深度学习框架,原理很简单
- Python自然语言处理相,新词发现,主题模型,隐马尔模型词性标注,Word2Vec,情感分析...
- 基于BERT 的中文数据集下的命名实体识别(NER)
- 2019斯坦福CS224n深度学习自然语言处理笔记(1)Word2Vec与Glove
- python优秀源码新闻系统_[内附完整源码和文档] 基于python的新闻检索系统
- animation 循环_汽车前照灯与前雾灯热循环试验
- laravel nginx配置_nginx高可用
- dubbo负载均衡代码分析2(一致性hash策略)
- (原创)我眼中的设计模式系列之外观模式(二)
- Problem 1002-2017 ACM/ICPC Asia Regional Shenyang Online