一、集群环境信息及安装前准备

部署前操作(集群内所有主机):

  1. .关闭防火墙,关闭selinux(生产环境按需关闭或打开)
  2. .同步服务器时间,选择公网ntpd服务器或者自建ntpd服务器
  3. .关闭swap分区
  4. .集群所有节点主机可以相互解析
  5. .masternode节点ssh互信
    6.配置系统内核参数使流过网桥的流量也进入iptables/netfilter框架(如果报错,提示没有文件  modprobe br_netfilter 添加此模块)
    echo -e 'net.bridge.bridge-nf-call-iptables = 1 \nnet.bridge.bridge-nf-call-ip6tables = 1' >> /etc/sysctl.conf && sysctl -p

#kubeadm预检需求见此链接https://github.com/kubernetes/kubeadm/tree/master/docs/design

二、配置yum源及k8s相关软件包下载(所有节点相同操作)

1.配置yum、epel、k8s及docker源

  1. [root@k8s-master ~]# cd /etc/yum.repos.d
  2. [root@k8s-master yum.repos.d]# yum install wget -y
  3. [root@k8s-master yum.repos.d]# rm -f CentOS-*
  4. [root@k8s-master yum.repos.d]#wget -O /etc/yum.repos.d/CentOS-Base.repo http://mirrors.aliyun.com/repo/Centos-7.repo
  5. [root@k8s-master yum.repos.d]#wget -P /etc/yum.repos.d/ http://mirrors.aliyun.com/repo/epel-7.repo
  6. [root@k8s-master yum.repos.d]#cat <<EOF > /etc/yum.repos.d/kubernetes.repo
  7. [kubernetes]
  8. name=Kubernetes
  9. baseurl=https://mirrors.aliyun.com/kubernetes/yum/repos/kubernetes-el7-x86_64
  10. enabled=
  11. gpgcheck=
  12. EOF
  13. [root@k8s-master yum.repos.d]#wget https://mirrors.aliyun.com/kubernetes/yum/doc/rpm-package-key.gpg
  14. [root@k8s-master yum.repos.d]#rpm -import rpm-package-key.gpg #安装key文件
  15. [root@k8s-master yum.repos.d]#wget https://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
  16. [root@k8s-master yum.repos.d]#yum clean all && yum makecache fast

2.安装kubeadm和相关工具包

  1. [root@k8s-master ~]# cd
  2. [root@k8s-master ~]# yum install docker kubectl-1.10. kubeadm-1.10. kubelet-1.10. kubernetes-cni-0.6.0 -y #需要制定版本,默认是最新的,由于不可描述的原因,暂时最新的还无法下载

3.由于有些不可描述的原因,我们无法去Google直接下载相关镜像,所以配置使用阿里云上的镜像,为了提高下载速度,需要配置阿里云的加速器

 登录 https://cr.console.aliyun.com/ 阿里云(如果没有请先注册)

点击镜像加速器,并根据操作系统选择对应的操作文档即可

启动相关服务并设置开机自启

  1. [root@k8s-master ~]# systemctl daemon-reload
  2. [root@k8s-master ~]# systemctl enable docker && systemctl restart docker
  3. [root@k8s-master ~]# systemctl enable kubelet && systemctl restart kubelet

4.下载K8S相关镜像

  1. [root@k8s-master ~]# cat down_k8s.sh
  2. #!/bin/bash
  3. images=(kube-proxy-amd64:v1.10.0 kube-scheduler-amd64:v1.10.0 kube-controller-manager-amd64:v1.10.0 kube-apiserver-amd64:v1.10.0
  4. etcd-amd64:3.1. pause-amd64:3.1 kubernetes-dashboard-amd64:v1.8.3 k8s-dns-sidecar-amd64:1.14. k8s-dns-kube-dns-amd64:1.14.
  5. k8s-dns-dnsmasq-nanny-amd64:1.14.)
  6. for imageName in ${images[@]} ; do
  7. docker pull keveon/$imageName
  8. docker tag keveon/$imageName k8s.gcr.io/$imageName
  9. docker rmi keveon/$imageName
  10. done
  11. [root@k8s-master ~]# sh down_k8s.sh

 1.12版本下载脚本:

  1. #!/bin/bash
  2. down_image_url=registry.cn-hangzhou.aliyuncs.com/kuberimages/
  3. images=(kube-proxy:v1.12.3 kube-apiserver:v1.12.3 kube-controller-manager:v1.12.3 kube-scheduler:v1.12.3 etcd:3.2. coredns:1.2. flannel:v0.10.0-amd64 pause:3.1 kubernetes-dashboard-amd64:v1.10.0)
  4. for imageName in ${images[@]} ; do
  5. docker pull ${down_image_url}$imageName
  6. docker tag ${down_image_url}$imageName k8s.gcr.io/$imageName
  7. docker rmi ${down_image_url}$imageName
  8. done

由于1.13版本已经支持指定镜像仓库,所以我们可以指定到阿里的镜像仓库,这样不可以科学**上网也可以直接安装了

  1. kubeadm init --apiserver-advertise-address=192.168.199.116 --image-repository registry.aliyuncs.com/google_containers --kubernetes-version v1.13.1 --pod-network-cidr=10.244.0.0/

查看镜像是否下载

  1. [root@k8s-master ~]# docker images
  2. REPOSITORY TAG IMAGE ID CREATED SIZE
  3. k8s.gcr.io/kube-proxy-amd64 v1.10.0 bfc21aadc7d3 months ago MB
  4. k8s.gcr.io/kube-apiserver-amd64 v1.10.0 af20925d51a3 months ago MB
  5. k8s.gcr.io/kube-scheduler-amd64 v1.10.0 704ba848e69a months ago 50.4 MB
  6. k8s.gcr.io/kube-controller-manager-amd64 v1.10.0 ad86dbed1555 months ago MB
  7. k8s.gcr.io/etcd-amd64 3.1. 52920ad46f5b months ago MB
  8. k8s.gcr.io/kubernetes-dashboard-amd64 v1.8.3 0c60bcf89900 months ago MB
  9. quay.io/coreos/flannel v0.10.0-amd64 f0fad859c909 months ago 44.6 MB
  10. k8s.gcr.io/k8s-dns-dnsmasq-nanny-amd64 1.14. c2ce1ffb51ed months ago MB
  11. k8s.gcr.io/k8s-dns-sidecar-amd64 1.14. 6f7f2dc7fab5 months ago 42.2 MB
  12. k8s.gcr.io/k8s-dns-kube-dns-amd64 1.14. 80cc5ea4b547 months ago 50.5 MB
  13. k8s.gcr.io/pause-amd64 3.1 da86e6ba6ca1 months ago kB

三、初始化k8s集群(仅master节点)

  1. [root@k8s-master ~]# kubeadm init --kubernetes-version=v1.10.0 --pod-network-cidr=10.244.0.0/16 #指定版本,需要与docker中的镜像版本一致

看到 "initialized successfully!"字样表示初始化完成,并且提示如果是普通用户如何使用集群,并且提示其他节点如何加入集群的方法

配置环境变量

  1. [root@k8s-master ~]# mkdir -p $HOME/.kube
  2. [root@k8s-master ~]# cp -i /etc/kubernetes/admin.conf $HOME/.kube/config
  3. 或者:
  4. [root@k8s-master ~]# echo "export KUBECONFIG=/etc/kubernetes/admin.conf" >> ~/.bash_profile

查看集群状态:

  1. [root@k8s-master ~]# kubectl get nodes
  2. NAME STATUS ROLES AGE VERSION
  3. k8s-master NotReady master 10m v1.10.0

可以看到STATUS显示未就绪,这是因为现在还没有网络可用,下一步我们需要配置网络功能

四、安装网络插件(master节点)

由于网络功能是作为插件存在的,k8s本身并不提供网络功能,所有我们需要自行安装,这里我们选择flannel

flannel项目地址:https://github.com/coreos/flannel,根据项目的部署手册进行如下操作

  1. [root@k8s-master ~]# kubectl apply -f https://raw.githubusercontent.com/coreos/flannel/master/Documentation/kube-flannel
  2. 或者:
  3. [root@k8s-master ~]# wget https://raw.githubusercontent.com/coreos/flannel/master/Documentation/kube-flannel.yml
  4. [root@k8s-master ~]# kubectl apply -f kube-flannel.yml

flannel支持的模式:

  1. flannel支持多种模型
  2. VxLAN #vxLAN有以下两种模式
  3. () vxlan #叠加网络或者隧道网络,通过封装网络报文的方式使不同网段的pod之间可以通讯
  4. () Directrouting #直接使用主机的IP地作为网关,通过主机路由的方式与目标pod进行通讯,当目标pod与当前pod不在同一三层网络内,会自动降级为VxLAN模式
  5. host-gw: Host GateWay #与VxLAN的Directrouting模式相同,当目标pod与当前pod不在同一三层网络内时,pod之间无法通讯
  6. UDP: #早期由于Linux内核不支持VxLAN,host-gw又有非常高的入门门槛,udp是flannel最早期使用的模式,由于使用普通的udp报文通讯,性能非常差,在可以使用前面两种模式的情况下请勿使用该模式 

#默认flannel的模式为vxlan,可以修改为性能更好的directrouting模式,修改见下图

安装完成后,稍等一下再查看集群状态,发现已经就绪了(master上)

  1. [root@k8s-master ~]# kubectl get nodes
  2. NAME STATUS ROLES AGE VERSION
  3. k8s-master Ready master 1h v1.10.0

五、node节点加入集群(所有node上)

  1. [root@k8s-node1 ~]# kubeadm join 192.168.199.116: --token fauq6n.e1iv2mbxotq5a1zp --discovery-token-ca-cert-hash sha81dbbeb6

见到以上提示,证明节点加入成功,并提示在master节点上如何查看节点

在master查看节点加入

从图中可以看到,节点最开始加入后状态为未就绪,稍等后就会变成就绪状态,这是因为节点加入后需要创建相关的pod,需要一些时间

至此就完成了K8S三节点集群的安装部署。

k8s学习笔记之二:使用kubeadm安装k8s集群的更多相关文章

  1. Kubernetes(K8s) 安装(使用kubeadm安装Kubernetes集群)

    背景: 由于工作发生了一些变动,很长时间没有写博客了. 概述: 这篇文章是为了介绍使用kubeadm安装Kubernetes集群(可以用于生产级别).使用了Centos 7系统. 一.Centos7 ...

  2. Docker 与 K8S学习笔记(二十三)—— Kubernetes集群搭建

    小伙伴们,好久不见,这几个月实在太忙,所以一直没有更新,今天刚好有空,咱们继续k8s的学习,由于我们后面需要深入学习Pod的调度,所以我们原先使用MiniKube搭建的实验环境就不能满足我们的需求了, ...

  3. Redis 学习笔记4: Redis 3.2.1 集群搭建

    在CenOS 6.7 linux环境下搭建Redis 集群环境 1.下载最新的Redis版本 本人下载的Redis版本是3.2.1版本,下载之后,解压,编译(make): 具体操作可以参考我的博文:R ...

  4. VirtualBox上使用kubeadm安装Kubernetes集群

    之前一直使用minikube练习,为了更贴近生产环境,使用VirtualBox搭建Kubernetes集群. 为了不是文章凌乱,把在搭建过程中遇到的问题及解决方法记在了另一篇文章:安装Kubernet ...

  5. Docker&K8S学习笔记(一)—— Docker安装

    最近一年在工作上经常使用Docker与K8S,除了利用其打镜像,部署服务外,还基于Docker与K8S开发了一套CICD流水线平台,为了加深相关知识点的理解,所以从今天开始会定期更新学习笔记,本套学习 ...

  6. Kubernetes系列二: 使用kubeadm安装k8s环境

    环境 三台主机,一台master,两台node 作为master 作为node节点 作为node节点 每台主机Centos版本使用 CentOS Linux release 7.6.1810 (Cor ...

  7. Docker 与 K8S学习笔记(二十五)—— Pod的各种调度策略(上)

    上一篇,我们学习了各种工作负载的使用,工作负载它会自动帮我们完成Pod的调度和部署,但有时我们需要自己定义Pod的调度策略,这个时候该怎么办呢?今天我们就来看一下如何定义Pod调度策略. 一.Node ...

  8. Docker 与 K8S学习笔记(二十四)—— 工作负载的使用

    我们前面讲了很多关于Pod的使用,但是在实际应用中,我们不会去直接创建Pod,我们一般通过Kubernetes提供的工作负载(Deployment.DeamonSet.StatefulSet.Job等 ...

  9. Dubbo入门到精通学习笔记(十五):Redis集群的安装(Redis3+CentOS)、Redis集群的高可用测试(含Jedis客户端的使用)、Redis集群的扩展测试

    文章目录 Redis集群的安装(Redis3+CentOS) 参考文档 Redis 集群介绍.特性.规范等(可看提供的参考文档+视频解说) Redis 集群的安装(Redis3.0.3 + CentO ...

随机推荐

  1. Win10系列:C#应用控件基础7

    Slider控件 Slider控件包含一个滑动条.一个滑动块和一个取值范围,沿滑动条移动滑动块可以在取值范围内改变Slider控件的值.Slider控件的用途很广泛,例如可以使用Slider控件来设置 ...

  2. java通过StringToKenizer获取字符串中的单词根据空格分离-简写版

    public class StringToKenizer { public static void main(String[] args) { String strin = "Hello J ...

  3. jq demo 九宫格抽奖

    <!DOCTYPE HTML> <html> <head> <meta http-equiv="Content-Type" content ...

  4. 第一章01:熟悉java,发展历史

    1. java由来: 原公司,sun,后来被oracle\甲骨文公司收购 java,主要用于开发互联网软件,例如:QQ.迅雷.淘宝.京东

  5. Problem B: 平面上的点和线——Point类、Line类 (II)

    Description 在数学上,平面直角坐标系上的点用X轴和Y轴上的两个坐标值唯一确定,两点确定一条线段.现在我们封装一个“Point类”和“Line类”来实现平面上的点的操作. 根据“append ...

  6. 微信小程序des加密、PHP des解密

    最近在做对小程序传输数据进行加密,加密方法有很多,使用的是des对称加密 采用的是CBC模式, 引用的插件为tripledes.js,https://github.com/Favour1111in/h ...

  7. Android:layout属性大全

    Android layout属性大全 第一类:属性值 true或者 false android:layout_centerHrizontal 水平居中android:layout_centerVert ...

  8. 神州数码静态路由及直连网段引入到RIP协议配置(路由重定向)

    实验要求:掌握静态路由及直连网段引入协议当中的配置 拓扑如下 R1 enable 进入特权模式 config 进入全局模式 hostname R1 修改名称 interface g0/6 进入端口 i ...

  9. indexOf 引用

  10. PHP 框架

    LARAVEL/LUMEN,  CI  ,THINKPHP, YII ,SYMFONY YAF, PHALCON ,ICE FRAMEWORK