专栏首页Java学习录Kubernetes(k8s)1.12.2集群搭建

Kubernetes(k8s)1.12.2集群搭建

本博客搭建k8s集群1.12.2版本

1. 准备2台以上最低2核4G的服务器

2. 关闭机器的防火墙

systemctl disable firewalldsystemctl stop firewalld

生产环境下建议不要关闭防火墙,只开放k8s所用的端口

3. 配置docker和k8s仓库为阿里云镜像仓库

首先选择一台性能比较好的机器作为主节点

wget -O /etc/yum.repos.d/docker-ce.repo https://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
  1. vim /etc/yum.repos.d/ubernetes.repo
[kubernetes]name=kubernetes Repobaseurl=https://mirrors.aliyun.com/kubernetes/yum/repos/kubernetes-el7-x86_64/gpgcheck=1gpgkey=https://mirrors.aliyun.com/kubernetes/yum/doc/yum-key.gpgenabled=1
wget https://mirrors.aliyun.com/kubernetes/yum/doc/rpm-package-key.gpgrpm --import rpm-package-key.gpgyum repolist

4. 安装docker和kubelet

yum install kubeadm-1.12.2-0.x86_64 docker-ce-18.06.0.ce kubelet-1.12.2-0.x86_64

这里指定了docker和kubelet的版本,如果不指定的话默认下载最新的版本,如果你的服务器可以上Google的话可以选择执行以下命令下载最新版

yum install kubeadm docker-ce kubelet

5. 下载k8s镜像

这里分为两种场景

能上Google的同学看这个
  1. vim /usr/lib/systemd/system/docker.service 增加如下配置
Environment="HTTPS_PROXY=http://www.ik8s.io:10080"Environment="NO_PROXY=127.0.0.0/8,172.0.0.0/16"
  1. 加载配置文件
systemctl daemon-reload
  1. 设置docker开机启动并启动docker
systemctl enable dockersystemctl start docker
不能的同学看这个
  1. 设置docker开机启动并启动docker
systemctl enable dockersystemctl start docker
  1. 下载k8s镜像
docker pull mirrorgooglecontainers/kube-apiserver-amd64:v1.12.2docker pull mirrorgooglecontainers/kube-controller-manager-amd64:v1.12.2docker pull mirrorgooglecontainers/kube-scheduler-amd64:v1.12.2docker pull mirrorgooglecontainers/kube-proxy-amd64:v1.12.2docker pull mirrorgooglecontainers/pause:3.1docker pull mirrorgooglecontainers/etcd-amd64:3.2.24docker pull coredns/coredns:1.2.2
  1. 镜像tag更新

因为来自mirrorgooglecontainers或者coredns的镜像k8s是不认识的,所以我们需要修改一下上方下载的镜像的tag

docker tag mirrorgooglecontainers/kube-apiserver-amd64:v1.12.2 k8s.gcr.io/kube-apiserver-amd64:v1.12.2 
docker tag mirrorgooglecontainers/kube-controller-manager-amd64:v1.12.2 k8s.gcr.io/kube-controller-manager-amd64:v1.12.2
docker tag mirrorgooglecontainers/kube-scheduler-amd64:v1.12.2 k8s.gcr.io/kube-scheduler-amd64:v1.12.2
docker tag mirrorgooglecontainers/kube-proxy-amd64:v1.12.2 k8s.gcr.io/kube-proxy-amd64:v1.12.2 
docker tag mirrorgooglecontainers/pause:3.1 k8s.gcr.io/pause:3.1
docker tag mirrorgooglecontainers/etcd-amd64:3.2.24 k8s.gcr.io/etcd-amd64:3.2.24
docker tag coredns/coredns:1.2.2 k8s.gcr.io/coredns:1.2.2

6. 验证网络及k8s依赖

  1. 验证网络
cat /proc/sys/net/bridge/bridge-nf-call-ip6tablescat /proc/sys/net/bridge/bridge-nf-call-iptables

查看两条命令是否返回的都是1

  1. 验证k8s依赖
rpm -ql kubelet

执行以上命令看屏幕结果是否如下

/etc/kubernetes/manifests   #清单目录/etc/sysconfig/kubelet   #配置文件/etc/systemd/system/kubelet.service  /usr/bin/kubelet   #主程序
  1. 设置k8s开启启动
systemctl enable kubelet

7. 初始化k8s

1. 系统检查
kubeadm init --kubernetes-version=v1.12.2 --pod-network-cidr=10.244.0.0/16 --service-cidr=10.96.0.0/12

注意如果使用最新版本的话不需要使用–kubernetes-version参数

命令执行后k8s会进行一系列的检查,比如说:

  • Linux 内核的版本必须是否是 3.10 以上?
  • Linux Cgroups 模块是否可用?
  • 机器的 hostname 是否标准?在 Kubernetes 项目里,机器的名字以及一切存储在 Etcd 中的 API 对象,都必须使用标准的 DNS 命名(RFC 1123)。
  • 用户安装的 kubeadm 和 kubelet 的版本是否匹配?
  • 机器上是不是已经安装了 Kubernetes 的二进制文件?
  • Kubernetes 的工作端口 10250/10251/10252 端口是不是已经被占用?
  • ip、mount 等 Linux 指令是否存在?
  • Docker 是否已经安装?
  • ……

检查结束以后如果没问题的话名字执行结束最后会有这样的一条指令出现

kubeadm join 172.26.15.165:6443 --token ns4kps.j8cuqwf78emp5a5b --discovery-token-ca-cert-hash sha256:b71b7e52c318959bab3f05f02f6fe51d6396d8c54ea6849ec7556927d1c6c88a

这个就是node节点需要加入主节点时所需要的token,很重要,记下来,一会会用到

2. 系统检查
mkdir -p $HOME/.kubecp -i /etc/kubernetes/admin.conf $HOME/.kube/config
kubectl get  nodes

查看节点status是否为NotReady

3. 安装flannel
 kubectl apply -f https://raw.githubusercontent.com/coreos/flannel/master/Documentation/kube-flannel.yml

curl -sSL"https://github.com/coreos/flannel/blob/master/Documentation/kube-flannel.yml?raw=true" | kubectl create -f -

kubectl get  nodes

查看节点status是否为Ready

至此master节点的配置已经完成了。

8. 配置节点服务器

  1. 拷贝master中的一些配置到节点服务器
scp /etc/yum.repos.d/CentOS-Base.repo docker-ce.repo kubernetes.repo 服务器ip:/etc/yum.repos.d/scp /etc/sysconfig/kubelet 服务器ip:/etc/sysconfig/
  1. 配置镜像
wget https://mirrors.aliyun.com/kubernetes/yum/doc/rpm-package-key.gpgrpm --import rpm-package-key.gpg
  1. 安装docker 同上方第四步
yum install kubeadm-1.12.2-0.x86_64 docker-ce-18.06.0.ce kubelet-1.12.2-0.x86_64
  1. 启动docker和kubelet并设置开启启动
systemctl start dockersystemctl enable docker kubelet
  1. 加入集群管理 使用上方安装master结束后记住的命令加入到集群中
kubeadm join 172.26.15.165:6443 --token ns4kps.j8cuqwf78emp5a5b --discovery-token-ca-cert-hash sha256:b71b7e52c318959bab3f05f02f6fe51d6396d8c54ea6849ec7556927d1c6c88a
  1. 验证 切换到master节点,再次使用以下命令查看节点数量是不是增加了一个呢
kubectl get  nodes

至此k8s集群就搭建完成了。

本文分享自微信公众号 - Java学习录(Javaxuexilu)

原文出处及转载信息见文内详细说明,如有侵权,请联系 yunjia_community@tencent.com 删除。

原始发表时间:2019-03-09

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • 教你学木马攻防 | 隧道木马 | ICMP反弹shell

    在上一篇文章中,我们讲解了木马中常用的端口转发技术,这一节讲解一下木马通信协议中的ICMP协议,并通过ICMP实现一个反弹shell。

    七夜安全博客
  • Linux 遭入侵,挖矿进程被隐藏排查记录

    今天来给大家分享下这两天遇到的一个问题,服务器被挖矿了,把我的排查记录分享下,希望能帮到有需要的同学。

    程序员同行者
  • 大数据项目之_15_帮助文档_NTP 配置时间服务器+Linux 集群服务群起脚本+CentOS6.8 升级到 python 到 2.7

      当集群中各个节点的时间不同步,误差超过某个范围时,会导致一些集群的服务无法正常进行,这时我们应该想办法做一个定时同步集群所有节点时间的任务。

    黑泽君
  • Oracle JDK 8无缝更换 Amazon Corretto 8

    Corretto 8是亚马逊继上次重申对Amazon linux中的Java进行长期支持后,其对Java用户提供的又一重大支持。

    Bobby
  • [ 项目篇 ] 02 - LiveSpeaker项目的硬件平台选型

    项目刚开始的平台选择Amlogic A113x平台,一方面市场是的音箱大部分采用该芯片,另一方之前Rokid已经将 Amlogic A113x部分开源,硬件电路...

    程序手艺人
  • Linux 多进程通信开发(二):exec 执行新程序

    前面讲过,在 linux 开发中,一般调用 fork 创建新进程后,是为了调用 exec 方法来启动一个新的程序。

    Frank909
  • 服务器(CentOS)安装配置mongodb

    keyWords
  • iOS开发笔记(十二)— Extension、iOS9Crash、Pod库和CFDictionary相关

    分享iOS开发中遇到的问题,和相关的一些思考,本次内容包括:Extension、iOS9Crash、Pod库和CFDictionary相关。

    落影
  • Mac和Ubuntu下修改pip源和TensorFlow(CPU)安装

    这篇是对上一篇的补充, 主要是macOS和Ubuntu下的cpu版的TensorFlow安装, 整体都比较简单.

    SeanDepp
  • Linux系统宝塔面板phpMyAdmin无法访问/打开404解决方案

    网站建设的过程中,难免都会遇到需要修改数据库的时候。而phpMyAdmin又是我们常用的数据库管理面板,现在用宝塔服务器面板的人也灰常多,但是宝塔面板在安装使用...

    Levi.Ackermann

扫码关注云+社区

领取腾讯云代金券