在centos 7中安装配置k8s集群的步骤详解

配置背景介绍

kubernetes是google开源的容器集群管理系统,提供应用部署、维护、扩展机制等功能,利用kubernetes能方便管理跨集群运行容器化的应用,简称:k8s(k与s之间有8个字母)

为什么要用kubernetes这么复杂的docker集群管理工具呢?一开始接触了docker内置的swarm,这个工具非常简单快捷的完成docker集群功能。但是在使用docker1.13内置的swarm做集群的时候遇到vip负载均衡没有正确映射端口到外网,或者出现地址被占用的情况,这对高可用性的需求是不利的,然而又没找到一个解决方案,只能转投k8s。

实验环境

  • 腾讯云
  • centos7.3 64位

安装

yum-config-manager --add-repo https://docs.docker.com/v1.13/engine/installation/linux/repo_files/centos/docker.repo
yum makecache fast
yum -y install docker-engine-1.13.1
yum install epel-release -y
yum remove -y docker-engine*
yum install -y kubernetes etcd docker flannel 

修改配置文件

注意下面的10.135.163.237换成自己服务器ip

sed -i "s/localhost:2379/10.135.163.237:2379/g" /etc/etcd/etcd.conf

sed -i "s/localhost:2380/10.135.163.237:2380/g" /etc/etcd/etcd.conf

sed -i "s/10.135.163.237:2379/10.135.163.237:2379,http:\/\/127.0.0.1:2379/g" /etc/etcd/etcd.conf

sed -i "s/127.0.0.1:2379/10.135.163.237:2379/g" /etc/kubernetes/apiserver

sed -i "s/--insecure-bind-address=127.0.0.1/--insecure-bind-address=0.0.0.0/g" /etc/kubernetes/apiserver

sed -i "s/--admission-control=NamespaceLifecycle,NamespaceExists,LimitRanger,SecurityContextDeny,ServiceAccount,ResourceQuota/--admission_control=NamespaceLifecycle,NamespaceExists,LimitRanger,ResourceQuota/g" /etc/kubernetes/apiserver

sed -i "s/--hostname-override=127.0.0.1/--hostname-override=10.135.163.237/g" /etc/kubernetes/kubelet

sed -i "s/127.0.0.1:8080/10.135.163.237:8080/g" /etc/kubernetes/kubelet

sed -i "s/--address=127.0.0.1/--address=0.0.0.0/g" /etc/kubernetes/kubelet

sed -i "s/127.0.0.1:8080/10.135.163.237:8080/g" /etc/kubernetes/config

sed -i "s/127.0.0.1:2379/10.135.163.237:2379/g" /etc/sysconfig/flanneld 

修改host

vi /etc/hosts
10.135.163.237 k8s_master 

添加网络

systemctl enable etcd.service

systemctl start etcd.service

etcdctl mk //atomic.io/network/config '{"Network":"172.17.0.0/16"}' 

启动服务

service docker start
for SERVICES in etcd kube-apiserver kube-controller-manager kube-scheduler kube-proxy kubelet docker flanneld ; do systemctl restart $SERVICES; systemctl enable $SERVICES; systemctl status $SERVICES; done; 

第一个demo

编写文件a.yaml

apiVersion: extensions/v1beta1
kind: Deployment
metadata:
 name: my-app
spec:
 replicas: 2
 template:
 metadata:
 labels:
 app: my-app
 spec:
 containers:
 - name: my-app
 image: registry.alauda.cn/yubang/paas_base_test
 ports:
 - containerPort: 80
 command: ["/bin/bash", "/var/start.sh"]
 resources:
  limits:
  cpu: 0.5
  memory: 64Mi 

编写文件b.yaml

apiVersion: v1
kind: Service
metadata:
 name: my-app-svc
 labels:
 app: my-app
spec:
 ports:
 - port: 80
 targetPort: 80
 nodePort: 30964
 type: NodePort
 selector:
 app: my-app

创建服务

kubectl create -f a.yaml --validate
kubectl create -f b.yaml --validate 

删除服务

kubectl delete -f a.yaml
kubectl delete -f b.yaml 

增加子节点

安装软件

yum-config-manager --add-repo https://docs.docker.com/v1.13/engine/installation/linux/repo_files/centos/docker.repo
yum makecache fast
yum -y install docker-engine-1.13.1
yum install epel-release -y
yum remove -y docker-engine*
yum install -y kubernetes docker flannel 

修改配置文件(10.135.163.237为主节点ip,139.199.0.29为当前节点ip)

sed -i "s/--hostname-override=127.0.0.1/--hostname-override=139.199.0.29/g" /etc/kubernetes/kubelet

sed -i "s/127.0.0.1:8080/10.135.163.237:8080/g" /etc/kubernetes/kubelet

sed -i "s/--address=127.0.0.1/--address=0.0.0.0/g" /etc/kubernetes/kubelet

sed -i "s/127.0.0.1:8080/10.135.163.237:8080/g" /etc/kubernetes/config

sed -i "s/127.0.0.1:2379/10.135.163.237:2379/g" /etc/sysconfig/flanneld

sed -i "s/--admission-control=NamespaceLifecycle,NamespaceExists,LimitRanger,SecurityContextDeny,ServiceAccount,ResourceQuota/--admission_control=NamespaceLifecycle,NamespaceExists,LimitRanger,ResourceQuota/g" /etc/kubernetes/apiserver

启动服务

service docker start

for SERVICES in kube-proxy kubelet docker flanneld; do
  systemctl restart $SERVICES
  systemctl enable $SERVICES
  systemctl status $SERVICES
 done;

在主服务器查看节点

kubectl get node 

重启服务(重新加入集群)

systemctl restart kube-apiserver.service 

删除节点

kubectl delete node 节点ip 

总结

以上就是这篇文章的全部内容了,希望本文的内容对大家的学习或者工作具有一定的参考学习价值,如果有疑问大家可以留言交流,谢谢大家对我们的支持。

(0)

相关推荐

  • Centos7 下Mysql5.7.19安装教程详解

    1.下载 从官网下载mysql-5.7.19-linux-glibc2.12-x86_64.tar.gz,版本为5.7.19 下载地址: https://dev.mysql.com/get/Downloads/MySQL-5.7/mysql-5.7.19-linux-glibc2.12-x86_64.tar.gzLinux 2.创建mysql用户组及用户 l  创建mysql用户组 #groupadd mysql l  在mysql用户组下创建mysql用户 #useradd mysql -g

  • CentOS下使用yum命令安装计划任务程序crontab的方法

     概述 利用"任务计划",可以将任何脚本.程序或文档安排在某个最方便的时间运行.通俗的讲就是定时执行某个脚本.程序. 常见用途 定时关机 定时检查更新 定时对系统配置.数据库.日志进行备份 定时清理垃圾文件 检测是否已安装 # crontab -bash: crontab: command not found 执行 crontab 命令如果报 command not found,就表明没有安装. 开始安装 # yum -y install vixie-cron Loaded plugi

  • CentOS 7下YUM 本地仓库的搭建详细步骤

    CentOS 7下YUM 本地仓库的搭建详细步骤 使用CentOS7.iso 搭建本地仓库 (1) 将CentOS7.iso文件拷贝到用户主目录中 即:~ cp CentOS7.iso ~ (2) 创建iso文件将要挂在的目录 mkdir -p /mnt/cdrom (3) 挂在iso文件到刚刚创建的目录中 mount -o loop CentOS7.iso /mnt/cdrom (4) 创建repo文件 Local.repo,然后在其中加入下面内容 vim /etc/yum.repos.d/L

  • Centos6 网络配置的实例详解

    Centos6 网络配置的实例详解 前言: 要实现永久的自定义IP或者更改DNS都需要修改配置文件,主要修改以下配置文件 /etc/sysconfig/network-scripts/ifcfg-ethX,其中ifcfg-ethX中的X代表第几块网卡,一般都是第一块,也就是ifcfg-eth0 下面是配置项目的讲解,这里展示的是自定义IP和DNS的配置文件 DEVICE=eth0#网卡设备名称 TYPE=Ethernet#网卡类型 UUID=06c04617-25d9-4a88-aab0-d8f

  • CentOS更换yum源的方法

    1. 原来的yum源做备份 mv /etc/yum.repos.d/CentOS-Base.repo /etc/yum.repos.d/CentOS-Base.repo.bak 2. 下载新的yum源 •我用的vagrant centos 6.5 的box,默认没有装wget命令,yum源里也没有wget包,下载下来替换 vim /etc/yum.repos.d/CentOS-Base.repo 阿里yum源 网易yum源 tips : 具体的linux版本及系统版本请自行选择,当然,还有其他的

  • Centos7学习之添加用户和用户组的方法

    在使用 Centos 之前用的更多是Ubuntu,所以在 useradd 和 adduser 两条命令出现歧义,在Ubuntu系统上这是两条命令,而在Centos上则是同一条命令,adduser 是链接的形式存在 # ll /usr/sbin/ | grep user lrwxrwxrwx. 1 root root 7 10月 30 17:09 adduser -> useradd -rwxr-x---. 1 root root 114064 6月 10 09:16 useradd 1.添加用户

  • 在centos 7中安装配置k8s集群的步骤详解

    配置背景介绍 kubernetes是google开源的容器集群管理系统,提供应用部署.维护.扩展机制等功能,利用kubernetes能方便管理跨集群运行容器化的应用,简称:k8s(k与s之间有8个字母) 为什么要用kubernetes这么复杂的docker集群管理工具呢?一开始接触了docker内置的swarm,这个工具非常简单快捷的完成docker集群功能.但是在使用docker1.13内置的swarm做集群的时候遇到vip负载均衡没有正确映射端口到外网,或者出现地址被占用的情况,这对高可用性

  • Linux中安装配置hadoop集群详细步骤

    一. 简介 参考了网上许多教程,最终把hadoop在ubuntu14.04中安装配置成功.下面就把详细的安装步骤叙述一下.我所使用的环境:两台ubuntu 14.04 64位的台式机,hadoop选择2.7.1版本.(前边主要介绍单机版的配置,集群版是在单机版的基础上,主要是配置文件有所不同,后边会有详细说明) 二. 准备工作 2.1 创建用户 创建用户,并为其添加root权限,经过亲自验证下面这种方法比较好. sudo adduser hadoop sudo vim /etc/sudoers

  • Ubuntu中安装MySQL更改默认密码的步骤详解

    第一步:进入目录:cd /etc/mysql,查看debian.cnf文件 第二步:使用上图中的账号密码登录MySQL. 第三步:查看数据库中的库. 第四步:使用mysql库. 第五步:使用一下语句设置账号密码:update user set authentication_string=PASSWORD("自定义新密码") where user='root'; 我个人设置的简单.账号为:root. 密码:123456. 第六步:执行一下语句:update user set plugin

  • Centos 6中编译配置httpd2.4的多种方法详解

    前言 我们使用linux的过程中,一定会用到httpd这个服务,在centos7上,默认安装的httpd就是2.4版本,大家都知道,2.4版本相对之前的版本已经做了改进,用起来更加方便,但是我们的centos6上,默认安装的版本是2.2,那么,如果我们想要在centos6上安装httpd2.4版本的话,我们要如何做呢? 本文中,小编会给大家介绍两种方法,来实现在centos6上编译安装httpd2.4版本. 方法一 分别编译法 1.下载源码并解压缩 我们可以使用yum info httpd和yu

  • CentOS 7 安装并配置 MySQL 5.6的步骤详解

    Linux使用MySQL Yum存储库上安装MySQL 5.6,适用于Oracle Linux,Red Hat Enterprise Linux和CentOS系统. 一.全新安装MySQL 1.添加MySQL Yum存储库 将MySQL Yum存储库添加到系统的存储库列表中.这是一次性操作,可以通过安装MySQL提供的RPM来执行.跟着这些步骤: 1.1.到MySQL官网下载MySQL Yum存储库(https://dev.mysql.com/downloads/repo/yum/). 1.2.

  • 使用YUM在Linux(CentOS 7)下安装mysql 5.7.18的教程详解

    项目需要使用MySQL,由于以前都是在windows下傻瓜式安装,基本没有遇到什么问题,但是这次是在服务器上安装,由于到Linux上安装软件不熟悉,走了不少弯路,耽误了好多时间.总结下来,以免下次再走弯路. ****************************图片插入不成功,不知道是怎么回事********************************* 一.各种环境: linux版本:CentOS Linux release 7.2.1511 (core) mysql版本:communi

  • Centos中root密码重置的实现及步骤详解

    Centos中root密码重置的实现及步骤详解            在虚拟机安装了Centos,今天要开机却忘记了密码,于是开始上网查找重新设置的方法,经过实验操作,确实有效,现将方法记录如下: 1.开机后按"e",进入编辑选择,如图: 2.然后再按"e",进入另外一个选择框: 3.选择第二项,然后在按"e". 4.在后入输入" single" , 记住有个空格,然后回车.又出现了下面的选择框. 5.这时候选择第二项,然后输

  • Ubuntu14.04安装、配置与卸载QT5的步骤详解

    1.之前我下载的是QT5.13版本但是安装结束后Qtcreator出现打不开,这里我推荐Qt5.9版本,下载网址如下: https://download.qt.io/official_releases/qt/5.9/5.9.0/ 下载后存到你想存的文件,我这里是在主文件中创建了个qt5的文件夹 第一步,在终端输入sudo su,然后输入cd /qt5(若不是存在home中,那么直接输入这个,不用进入root.接着如上图所示操作. 2.若输入命令chmod +x qt-opensource-lin

  • SpringBoot中RabbitMQ集群的搭建详解

    目录 1. 两种模式 1.1 普通集群 1.2 镜像集群 1.3 节点类型 2. 搭建普通集群 2.1 预备知识 2.2 开始搭建 2.3 代码测试 2.4 反向测试 3. 搭建镜像集群 3.1 网页配置镜像队列 3.2 命令行配置镜像队列 4. 小结 单个的 RabbitMQ 肯定无法实现高可用,要想高可用,还得上集群. 今天松哥就来和大家聊一聊 RabbitMQ 集群的搭建. 1. 两种模式 说到集群,小伙伴们可能第一个问题是,如果我有一个 RabbitMQ 集群,那么是不是我的消息集群中的

  • Spring Cloud中使用jib进行docker部署的步骤详解

    Jib介绍 Jib 是 Google 开发的可以直接构建 Java 应用的 Docker 和 OCI 镜像的类库,以 Maven 和 Gradle 插件形式提供. 通过 Jib,Java 开发者可以使用他们熟悉的 Java 工具来构建容器.Jib 是一个快速而简单的容器镜像构建工具,它负责处理将应用程序打包到容器镜像中所需的所有步骤.它不需要你编写 Dockerfile 或安装 Docker,而且可以直接集成到 Maven 和 Gradle中 -- 只需要将插件添加到构建中,就可以立即将 Jav

随机推荐