基础环境配置

三台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版本相关推荐

  1. kubeadm创建k8s集群(1.14.2版本)

    kubeadm创建k8s集群 1,环境准备 1.1,网络规划 节点名称 IP地址 角色 安装工具 k8s-master-01 172.16.2.101 master kubeadm.kubelet.k ...

  2. 使用kubeadm安装k8s集群故障处理三则

    最近在作安装k8s集群,测试了几种方法,最终觉得用kubeadm应该最规范. 限于公司特别的网络情况,其安装比网上不能访问google的情况还要艰难. 慢慢积累经验吧. 今天遇到的三则故障记下来作参考 ...

  3. 使用kubeadm安装k8s集群的完整步骤(k8sv15.1)

    一.创建虚拟机 首先使用vmware15 pro创建了4台centos7虚拟机,其中,3台用来组建k8s集群,1台为master节点,2台为node节点, 剩下的一台用来安装harbor配置私有仓库( ...

  4. kubeadm安装k8s集群详细手册

    文章目录 一.k8s集群搭建 1.安装要求 2.关闭防火墙.selinux.swap分区 3.配置hostname.hosts. iptables 4.配置k8s阿里源 5.部署k8s的master和 ...

  5. kubeadm 安装 k8s 集群

    文章目录 环境 三台 CentOS Version Ready 关闭所有防火墙 禁用 Selinux 关闭 swap 加入 host 信息 相关组件安装 Docker 安装 `kubelet`.`ku ...

  6. 【k8s系列】vmware中ubuntu22.04使用kubeadm安装k8s集群(1.24.4 or higher)(cka考试环境搭建)

    文章目录 部署环境准备 环境修改 修改hostname(各修改各的) 修改hosts文件(master 和所有node ) 禁用swap(master 和所有node) 修改内核参数(master 和 ...

  7. kubeadm部署K8S集群并使用containerd做容器运行时

    kubeadm部署K8S集群并使用containerd做容器运行时(内容全部实战验证有任何问题欢迎留言咨询讨论) 前言 去年12月份,当Kubernetes社区宣布1.20版本之后会逐步弃用docke ...

  8. kubeadm部署k8s集群最全最详细

    一.安装要求 kubeadm安装kubernetes1.15 在开始之前,部署Kubernetes集群机器需要满足以下几个条件: 1.一台或多台机器(≥3奇数个),操作系统 CentOS7.x(最好是 ...

  9. kubernetes-二进制安装,亲测无坑,在参考安装过程中如果有什么问题欢迎交流,超级详细的文档

    Kubernetes环境搭建(手动K8s集群安装配置.服务部署和管理使用详细步骤,入门K8s容器云平台架构) 前言 说明: 本博客是教大家如何手动搭建kubernetes集群(业内简称K8s),包括集 ...

最新文章

  1. 计算机wrod初级考试题及答案,计算机基础知识+Word基础知识+Excel基础知识试题答案解析.doc...
  2. 姓名、病史、医疗影像通通泄露,500万人数据库没密码随便看,AI医疗暴露危机...
  3. WordCount by C# 结对编程
  4. formal method lecture 9
  5. Ruby学习笔记_索引贴
  6. Ajax系统学习总结
  7. zabbix实现mysql数据库的监控
  8. P3178 [HAOI2015]树上操作
  9. html 闪烁文本,HTML最简单的文字闪烁代码
  10. 小程序picker标题_微信小程序-自定义picker选择器
  11. secucrecrt配置文件导入和保存
  12. NLP简报(Issue#8)
  13. 网络编程之bind()的未解之谜
  14. 《剑指Offer》面试题6 重建二叉树——勘误
  15. php 中function_PHP中的function函数详解
  16. 木.马查杀-应急工具-排查步骤
  17. 关闭445端口即关闭共享文件功能
  18. 电源纹波怎么测量,纹波和噪声的区别
  19. 华夏银行签约金融壹账通 借助金融科技转型升级
  20. 天还是那个天,从前却不再是那个从前

热门文章

  1. 手撕深度学习框架,原理很简单
  2. Python自然语言处理相,新词发现,主题模型,隐马尔模型词性标注,Word2Vec,情感分析...
  3. 基于BERT 的中文数据集下的命名实体识别(NER)
  4. 2019斯坦福CS224n深度学习自然语言处理笔记(1)Word2Vec与Glove
  5. python优秀源码新闻系统_[内附完整源码和文档] 基于python的新闻检索系统
  6. animation 循环_汽车前照灯与前雾灯热循环试验
  7. laravel nginx配置_nginx高可用
  8. dubbo负载均衡代码分析2(一致性hash策略)
  9. (原创)我眼中的设计模式系列之外观模式(二)
  10. Problem 1002-2017 ACM/ICPC Asia Regional Shenyang Online