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. Java finally语句到底是在return之前还是之后执行

    看过网上关于Java中异常捕获机制try-catch-finally块中的finally语句是不是一定会被执行的讨论也有很多. 首先明确一点,下面两种情况finally肯定是不执行的: 1). ret ...

  2. Spring之属性注入

    时间:2017-1-31 23:38 --Bean的属性注入方式有三种注入方式:    1)接口注入:        定义一个接口,定义setName(String name)方法,定义一个类,实现该 ...

  3. Linux中增加组和用户

    新服务器增加用户: 1.创建一个新的组, groupadd oracle 2.useradd 命令用于建立用户账号(-g 指定用户所属的群组) useradd -g oracle oracle 3.再 ...

  4. redis subscribe/publish(发布订阅)

    redis的发布端 package dubbo.wangbiao.project.pubsub; import org.apache.commons.pool2.impl.GenericObjectP ...

  5. ES6扩展——正则扩展(u、y修饰符)

    //下面三行代码效果一样 //全局匹配开头为a的 const regexp1 = /^a/g; const regexp2 = new RegExp('a','g'); const regexp3 = ...

  6. VS C++ C# 混合编程

    创建C++ DLL 注意,32bit和64bit之间不兼容 创建普通dll工程 设置Properties -> Configuration Properties -> General -& ...

  7. MySQL读写IO的操作过程解析

    数据库作为存储系统,所有业务访问数据的操作都会转化为底层数据库系统的IO行为(缓存系统也可以当做是key-value的数据库),本文主要介绍访问MySQL数据库的IO流程以及IO相关的参数. 一.My ...

  8. FeignClient注解属性configuration不生效问题排查思路

    FeignClient注解属性configuration不生效问题排查思路 问题背景 我们知道,"如果需要自定义单个Feign配置,Feign的@Configuration 注解的类不能与@ ...

  9. 约瑟夫环问题详解 (c++)

    问题描述: 已知n个人(以编号0,2,3...n-1分别表示)围坐在一起.从编号为0的人开始报数,数到k的那个人出列:他的下一个人又从1开始报数,数到k的那个人又出列:依此规律重复下去,直到圆桌周围的 ...

  10. C语言编译步骤

    C语言编译步骤:   1.预处理(hello.i ):宏定义展开.条件编译等,同是将代码中的注释删除,这里并不会检查语法 2.编译(hello.s):检查语法,将预处理后文件编译生成汇编文件. 3.汇 ...