Centos 7 搭建 kubernetes 集群环境

一、介绍

本次是centos7 搭建kubernetes1.15.9
通过kubeadm 的形式搭建

二、准备

> centos 7 (镜像:centos-7-x86_64-minimal-1908.iso, 镜像下载地址:http://mirrors.ustc.edu.cn/)
> 虚拟机设置2核 4G内存

三、安装docker

下载软件源
# wget -O /etc/yum.repos.d/docker-ce.repo https://download.docker.com/linux/centos/docker-ce.repo 下载指定的docekr-ce的docker (低版本的docker 无法支持高版本的kubernetes)
# yum -y install docker-ce-18.09.1-3.el7 配置docker的daemon.json
# vim /etc/docker/daemon.json
{
"exec-opts":["native.cgroupdriver=systemd"],
"registry-mirrors": ["http://hub-mirror.c.163.com"]
} 开启docker 并设置开机自启动
# systemctl start docker & systemctl enable docker

四、安装kubectl kubeadm kubelet

准备kubernetes源
# cat <<EOF > /etc/yum.repos.d/kubernetes.repo
[kubernetes]
name=Kubernetes
baseurl=https://mirrors.aliyun.com/kubernetes/yum/repos/kubernetes-el7-x86_64
enabled=1
gpgcheck=0
repo_gpgcheck=0
gpgkey=https://mirrors.aliyun.com/kubernetes/yum/doc/yum-key.gpg https://mirrors.aliyun.com/kubernetes/yum/doc/rpm-package-key.gpg
EOF 下载 kubeadm kubectl kubelet
# yum -y install kubeadm-1.15.9 kubectl-1.15.9 kubelet-1.15.9

五、安装kubernetes 前的准备工作

每一个主机都[必须]有不一样的主机名(下面是master,你也可以是node,名字一定要不一样)
# echo "master" > /etc/hostname 不同节点的ip 对应不用的名字,不硬性要求.名字不一样呀,好记就行.
# cat >> /etc/hosts <<EOF
192.168.0.113 k8s-master
192.168.0.114 k8s-node1
192.168.0.116 k8s-node2
EOF 关闭防火墙
# systemctl stop firewalld & systemctl disable firewalld 关闭分区swap
# swapoff -a 关闭selinux
# sed -i 's/enforcing/disabled/' /etc/selinux/config
# setenforce -0 将桥接的IPv4 流量传递到iptables的链
# cat > /etc/sysctl.d/k8s.conf <<EOF
net.bridge.bridge-nf-call-ip6tables = 1
net.bridge.bridge-nf-call-iptables = 1
EOF
# sysctl --system 开启kubelet
systemctl start kubelet & systemctl enable kubelet

六、安装kubernetes

选择1.15.9 的版本,指定pod 网络ip的范围,api-server地址其他节点可ping通的ip地址,并使用国内的镜像(国外的下载不下来)
# kubeadm init --kubernetes-version 1.15.9 \
--pod-network-cidr 10.244.0.0/16 \
--apiserver-advertise-address 192.168.0.119 \
--image-repository registry.aliyuncs.com/google_containers ------------------------- 到这里没有报错的话基本上也就不错了-------------------- 接下来应该有提示进行如下操作
# mkdir -p $HOME/.kube
# sudo cp -i /etc/kubernetes/admin.conf $HOME/.kube/config
# sudo chown $(id -u):$(id -g) $HOME/.kube/config 安装网络插件
# wget https://raw.githubusercontent.com/coreos/flannel/master/Documentation/kube-flannel.yml
# sed -i 's/quay.io\/coreos\/flannel/quay-mirror.qiniu.com\/coreos\/flannel/' kube-flannel.yml
# wget https://raw.githubusercontent.com/coreos/flannel/master/Documentation/k8s-manifests/kube-flannel-rbac.yml
kubectl apply -f kube-flannel.yml
kubectl apply -f kube-flannel-rbac.yml

七、添加节点

每个主机都先下载好docker,kubectl,kubeadm,kubelet,也就是重复上面三、四、五的步骤(其他节点可以不用kubectl)

添加节点(这一步会在kubeadm init 完成后会有这个操作,记住就行,24小时失效,没记住可以再生成)
# kubeadm join <master-ip>:<port> --token <token> --discovery-token-ca-cert-hash sha256:<hash>

八、可能遇到的问题

  • 8.1 cordons pod起不起来,通过kubectl describe pods/coredns-XXX -n kube-system 有报错

    pods coredns : network: failed to find plugin "bridge" in path [/opt/cni/bin]]

    这个原因是网络插件没有dridge
    
    > 解决方式 一
    # go get github.com/containernetworking/plugins
    # cd $GOPATH/src/github.com/containernetworking/plugins
    # ./build_linux.sh
    # rm -rf /opt/cni/bin/*
    # cp bin/* /opt/cni/bin > 解决方式二 (master 主机有的话)
    # scp 命令复制到其他主机上 > 解决方式三
    在kubeadm init 或者kubeadm join 前执行 rm -rf /opt/cni/bin/*
  • 8.2 其他节点使用kubectl 时

    The connection to the server localhost:8080 was refused - did you specify the right host or port?

    解决
    将master 节点的/etc/kubernetes/admin.conf复制到当前阶段下的 ~/.kube/conf 其实其他的节点可以不需要 kubectl
  • 8.3 不允许运行在master 节点上部署

    单节点创建deployment时报错

    default-scheduler 0/1 nodes are available: 1 node(s) had taints that the pod didn't tolerate

    解决:
    # kubectl taint nodes --all node-role.kubernetes.io/master-

centos7 kubeadm 搭建k8s的更多相关文章

  1. kubeadm 搭建 K8s

    kubeadm 搭建 K8s 本篇主要记录一下 使用 kubeadm 搭建 k8s 详细过程 ,环境使用 VirtualBox 构建的3台虚拟机 1.环境准备 操作系统:Centos7 (CentOS ...

  2. kubeadm搭建K8s集群及Pod初体验

    基于Kubeadm 搭建K8s集群: 通过上一篇博客,我们已经基本了解了 k8s 的基本概念,也许你现在还是有些模糊,说真的我也是很模糊的.只有不断地操作去熟练,强化自己对他的认知,才能提升境界. 我 ...

  3. CentOS7 使用 kubeadm 搭建 k8s 集群

    一 安装Docker-CE 前言 Docker 使用越来越多,安装也很简单,本次记录一下基本的步骤. Docker 目前支持 CentOS 7 及以后的版本,内核要求至少为 3.10. Docker ...

  4. kubeadm 搭建 K8S集群

    kubeadm是K8s官方推荐的快速搭建K8s集群的方法. 环境: Ubuntu 16.04 1 安装docker Install Docker from Ubuntu’s repositories: ...

  5. 使用kubeadm搭建k8s集群

    1.初始化集群信息 这里我才用了两台虚拟机来搭建集群,一个master,一个node 角色 IP地址 组件 master 192.168.126.137 docker, kubectl, kubead ...

  6. 使用kubeadm搭建高可用k8s v1.16.3集群

    目录 1.部署环境说明 2.集群架构及部署准备工作 2.1.集群架构说明 2.2.修改hosts及hostname 2.3.其他准备 3.部署keepalived 3.1.安装 3.2.配置 3.3. ...

  7. centos7使用kubeadm搭建kubernetes集群

    一.本地实验环境准备 服务器虚拟机准备 IP CPU 内存 hostname 192.168.222.129 >=2c >=2G master 192.168.222.130 >=2 ...

  8. 在Centos7.6使用kubeadm部署k8s 1.14.3

    K8s不是一个软件,而是一堆软件的集合,由于这堆软件各自独立,因此可能k8s安装过程很容易出现问题 K8s部署有多种方式,本文使用kubeadm部署,从易操作性和可控性来说属于中等的方式 环境:cen ...

  9. kubeadm安装k8s测试环境

    目标是搭建一个可测试的k8s环境,使用的工具 kubeadm, 最终一个master节点(非高可用),2个node节点. 环境以及版本 Centos7.3 kubeadm 1.11.1 kubelet ...

随机推荐

  1. 心态崩了,我怎么知道实际生产环境的 B+ 树索引有多少层?

    Q:在实际生产环境中,InnoDB 中一棵 B+ 树索引一般有多少层?可以存放多少行数据? 关于这个问题最近好像在牛客上经常看到,感觉没啥意义,可能主要考察的是对 B+ 索引的理解吧.先上答案: A: ...

  2. jpa 指定字段内容按照顺序排序(orderBy when then)

    query.orderBy( criteriaBuilder.desc( criteriaBuilder.selectCase() .when(criteriaBuilder.equal(root.g ...

  3. null的坑 和 比较运算符、相等运算符的隐式转换问题 (在javascript中,null>=0 为真,null<=0 为真,null==0却为假,null到底是什么?)

    null在关系运算中的坑 & 关系运算符的隐式转换问题 注意: 比较运算符 和 相等运算符 的 ECMAscript 语法实现不同. 比较运算符 和 相等运算符 对数据进行了隐式转换, 相当于 ...

  4. HBuilder mui 手机app开发 Android手机app开发 ios手机app开发 打开新页面 预加载页面 关闭页面

    创建子页面 在mobile app开发过程中,经常遇到卡头卡尾的页面,此时若使用局部滚动,在android手机上会出现滚动不流畅的问题: mui的解决思路是:将需要滚动的区域通过单独的webview实 ...

  5. docker 镜像配置

    Ubuntu14.04.Debian7Wheezy 对于使用 upstart 的系统而言,编辑 /etc/default/docker 文件,在其中的 DOCKER_OPTS 中配置加速器地址: DO ...

  6. uwp 之资源的访问

    访问image资源 ----------------------------------------------------------------------------- BitmapImage ...

  7. 【转】springcloud底层原理

    本文为转载文章,作者:中华石杉,十余年BAT架构经验,倾囊相授.作者微信公众号:石杉的架构笔记(ID:shishan100) 概述 毫无疑问,Spring Cloud是目前微服务架构领域的翘楚,无数的 ...

  8. Spring系列之集成Druid连接池及监控配置

    前言 前一篇文章我们熟悉了HikariCP连接池,也了解到它的性能很高,今天我们讲一下另一款比较受欢迎的连接池:Druid,这是阿里开源的一款数据库连接池,它官网上声称:为监控而生!他可以实现页面监控 ...

  9. 1 分钟快速使用 Docker 上手最新版 Sentry-CLI - 创建一个版本

    我们可以使用官方 sentry-cli 工具操作 Sentry API,从而来为你的项目管理一些数据.它主要用于管理 iOS.Android 的调试信息文件,以及其他平台的版本(release)和源代 ...

  10. msyql redo log和binlog

    更新语句执行流程 下面是这个表的创建语句,这个表有一个主键 ID 和一个整型字段 c: create table T(ID int primary key, c int); 如果要将 ID=2 这一行 ...