关于什么是Kubernetes请看另一篇内容:http://www.cnblogs.com/boshen-hzb/p/6482734.html

一、环境搭建

master安装的组件有:

  • docker

  • etcd       可以理解为是k8s的数据库,存储所有节点、pods、网络信息

  • kube-proxy    提供service服务的基础组件

  • kubelet    管理k8s节点的组件,因为这台master同时也是nodes,所以也要安装

  • kube-apiserver   k8s提供API的接口,是整个k8s的核心

  • kube-controller-manager 管理分配资源的组件

  • kube-scheduler    调度资源的组件

  • flanneld     整个k8s的网络组件

nodes安装的组件有:

  • docker

  • kube-proxy

  • kubelet

  • flanneld

由于是单机安装,所以只需要安装master节点就可以。

二、安装步骤

1、关闭防火墙

systemctl stop firewalld.service

systemctl disable firewalld.service

2、更新yum源

cat <<EOF> /etc/yum.repos.d/virt7-docker-common-release.repo
[virt7-docker-common-release]
name=virt7-docker-common-release
baseurl=http://cbs.centos.org/repos/virt7-docker-common-release/x86_64/os/
gpgcheck=0
EOF

3、执行yum -y update

4、执行安装命令

yum install -y etcd kubernetes flannel

如果系统已经存在安装好的docker引擎,上面的命令会报错,解决方法就是:先删除掉docker,因为上面的命令当中,会自动安装docker

5、配置etcd服务器

/etc/etcd/etcd.conf

# [member]
ETCD_NAME=default
ETCD_DATA_DIR="/var/lib/etcd/default.etcd"
ETCD_LISTEN_CLIENT_URLS="http://localhost:2379,http://10.111.131.51:2379"
ETCD_ADVERTISE_CLIENT_URLS="http://10.111.131.51:2379"
启动服务
systemctl start etcd
systemctl enable etcd
检查etcd cluster状态

[root@localhost ~]# etcdctl cluster-health
  member eb1f405cbdb8358 is healthy: got healthy result from http://localhost:2379
  cluster is healthy
  [root@localhost ~]#



检查etcd集群成员列表,这里只有一台

[root@localhost ~]# etcdctl member list
  eb1f405cbdb8358: name=default peerURLs=http://10.111.131.51:2380 clientURLs=http://localhost:2379 isLeader=true
  [root@localhost ~]

配置防火墙
firewall-cmd --zone=public --add-port=2379/tcp --permanent
firewall-cmd --zone=public --add-port=2380/tcp --permanent
firewall-cmd --reload
firewall-cmd --list-all

6、配置master服务器

1) 配置kube-apiserver配置文件

/etc/kubernetes/config

KUBE_LOGTOSTDERR="--logtostderr=true"

# journal message level, 0 is debug
KUBE_LOG_LEVEL="--v=0" # Should this cluster be allowed to run privileged docker containers
KUBE_ALLOW_PRIV="--allow-privileged=false" # How the controller-manager, scheduler, and proxy find the apiserver
KUBE_MASTER="--master=http://10.111.131.51:8080"

/etc/kubernetes/apiserver

KUBE_API_ADDRESS="--insecure-bind-address=127.0.0.1"

# The port on the local server to listen on.
# KUBE_API_PORT="--port=8080" # Port minions listen on
# KUBELET_PORT="--kubelet-port=10250" # Comma separated list of nodes in the etcd cluster
KUBE_ETCD_SERVERS="--etcd-servers=http://10.111.131.51:2379" # Address range to use for services
KUBE_SERVICE_ADDRESSES="--service-cluster-ip-range=10.254.0.0/16" # default admission control policies
KUBE_ADMISSION_CONTROL="--admission-control=NamespaceLifecycle,NamespaceExists,LimitRanger,SecurityContextDeny,ServiceAccount,ResourceQuota" # Add your own!
KUBE_API_ARGS=""

2) 配置kube-controller-manager配置文件

# The following values are used to configure the kubernetes controller-manager

# defaults from config and apiserver should be adequate

# Add your own!
KUBE_CONTROLLER_MANAGER_ARGS=""

3) 配置kube-scheduler配置文件
 /etc/kubernetes/scheduler

###
# kubernetes scheduler config # default config should be adequate # Add your own!
KUBE_SCHEDULER_ARGS="--address=0.0.0.0"

4) 启动服务

service kube-apiserver restart

service kube-controller-manager restart

service kube-scheduler restart

以下是将本机当作node节点的配置

5)配置etcd

[root@localhost ~]# etcdctl set /k8s/network/config '{"Network": "10.111.131.0/24"}'
{"Network": "10.111.131.0/24"}
[root@localhost ~]#

6)配置node的network,本实例采用flannel方式来配置,如需其他方式,请参考Kubernetes官网。

先用ifconfig查找到本机网络10.111.131.51对应的网卡:

eno16777736: flags=4163<UP,BROADCAST,RUNNING,MULTICAST>  mtu 1500
inet 10.111.131.51 netmask 255.255.255.0 broadcast 10.111.131.255
inet6 fe80::20c:29ff:fedf:f83b prefixlen 64 scopeid 0x20<link>
ether 00:0c:29:df:f8:3b txqueuelen 1000 (Ethernet)
RX packets 161627 bytes 208913594 (199.2 MiB)
RX errors 0 dropped 0 overruns 0 frame 0
TX packets 113194 bytes 72446146 (69.0 MiB)
TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0

打开/etc/sysconfig/flanneld,进行以下配置

# Flanneld configuration options  

# etcd url location.  Point this to the server where etcd runs
FLANNEL_ETCD_ENDPOINTS="http://10.111.131.51:2379" # etcd config key. This is the configuration key that flannel queries
# For address range assignment
FLANNEL_ETCD_PREFIX="/k8s/network" # Any additional options that you want to pass
FLANNEL_OPTIONS="eno16777736"

7)配置node的kube-proxy

/etc/kubernetes/config (注意:本机是master也是node,因为前面已经配过,所以这里不用再配)

KUBE_LOGTOSTDERR="--logtostderr=true"

# journal message level, 0 is debug
KUBE_LOG_LEVEL="--v=0" # Should this cluster be allowed to run privileged docker containers
KUBE_ALLOW_PRIV="--allow-privileged=false" # How the controller-manager, scheduler, and proxy find the apiserver
KUBE_MASTER="--master=http://10.111.131.51:8080"

/etc/kubernetes/proxy

进行以下配置

 config should be adequate

# Add your own!
KUBE_PROXY_ARGS="--bind=address=0.0.0.0"

8) 配置node的kubelet

在/etc/hosts下加入:10.111.131.51 k8s-master

/etc/kubernetes/kubelet

###
# kubernetes kubelet (minion) config # The address for the info server to serve on (set to 0.0.0.0 or "" for all interfaces)
KUBELET_ADDRESS="--address=127.0.0.1" # The port for the info server to serve on
# KUBELET_PORT="--port=10250" # You may leave this blank to use the actual hostname
KUBELET_HOSTNAME="--hostname-override=k8s-master" # location of the api-server
KUBELET_API_SERVER="--api-servers=http://10.111.131.51:8080" # pod infrastructure container
KUBELET_POD_INFRA_CONTAINER="--pod-infra-container-image=registry.access.redhat.com/rhel7/pod-infrastructure:latest" # Add your own!
KUBELET_ARGS=""

9) 启动node服务

service flanneld start

service kube-proxy start

service kubelet start

10)至此,整个Kubernetes单机版环境搭建完,下面创建一个deployment进行测试

mysql-deployment.yaml

apiVersion: extensions/v1beta1
kind: Deployment
metadata:
name: mysql-test
spec: replicas: 1
template:
metadata:
labels:
app: redis
spec:
containers:
- name: mysql-test
image: 72.16.101.192/common/mysql:5.6
resources:
requests:
cpu: 100m
memory: 100Mi
ports:
- containerPort: 3306

在机器上执行以下命令:

[root@localhost ~]#  kubectl create -f mysql-deployment.yaml
deployment "mysql-test" created
[root@localhost ~]#

查看刚才创建的deployment信息。

[root@localhost ~]# kubectl get deploy
NAME DESIRED CURRENT UP-TO-DATE AVAILABLE AGE
mysql-test 1 0 0 0 1m
[root@localhost ~]#

出现上面的信息,表示Kubernetes安装成功。

cenots7单机安装Kubernetes的更多相关文章

  1. linux(centos8):kubeadm单机安装kubernetes(kubernetes 1.18.3)

    一,kubernetes安装的准备工作: 1,准备工作的各步骤请参见: https://www.cnblogs.com/architectforest/p/13141743.html   2,  ma ...

  2. kubernetes入门(10)kubernetes单机安装后 - helloworld

    前言 查看端口是否被监听了 ::netstat -tlp |grep 31002 我是用的yum install etcd kubernetes docker vim, 这样装的是1.5.2,不是最新 ...

  3. Centos7 使用 kubeadm 安装Kubernetes 1.13.3

    目录 目录 什么是Kubeadm? 什么是容器存储接口(CSI)? 什么是CoreDNS? 1.环境准备 1.1.网络配置 1.2.更改 hostname 1.3.配置 SSH 免密码登录登录 1.4 ...

  4. Minikube之Win10单机部署Kubernetes(k8s)自动化容器操作的开源平台

    Minikube之Win10单机部署 Kubernetes(k8s)是自动化容器操作的开源平台,基于这个平台,你可以进行容器部署,资源调度和集群扩容等操作.如果你曾经用过Docker部署容器,那么可以 ...

  5. 使用 Minikube 安装 Kubernetes

    概述: 单机低配置主机也可以玩转kubernetes集群.该文章是将介绍使用Minikube安装Kubernetes集群(一般用于本地/开发环境). 配置环境: 硬件:CPU 至少2个核心,至少2.5 ...

  6. kind:Kubernetes in Docker,单机测试 Kubernetes 群集的最佳方案

    请访问原文发布链接:https://sysin.org/article/kind/,查看最新版. 作者:gc(at)sysin.org,主页:www.sysin.org 2021.04.28 更新,k ...

  7. (原) 1.1 Zookeeper单机安装

    本文为原创文章,转载请注明出处,谢谢 zookeeper 单机安装配置 1.安装前准备 linux系统(此文环境为Centos6.5) Zookeeper安装包,官网https://zookeeper ...

  8. Linux下Kafka单机安装配置方法(图文)

    Kafka是一个分布式的.可分区的.可复制的消息系统.它提供了普通消息系统的功能,但具有自己独特的设计.这个独特的设计是什么样的呢 介绍 Kafka是一个分布式的.可分区的.可复制的消息系统.它提供了 ...

  9. Ubuntu 下 Neo4j单机安装和集群环境安装

    1. Neo4j简介 Neo4j是一个用Java实现的.高性能的.NoSQL图形数据库.Neo4j 使用图(graph)相关的概念来描述数据模型,通过图中的节点和节点的关系来建模.Neo4j完全兼容A ...

随机推荐

  1. 简单的SOCKET例子

    定义实例socket.socket(),如果括号里不写参数,默认为IPV4+TCP 我们猜测客户端的完整代码如下: 同样我们猜测服务端的代码如下: 实际上运行客户端代码: 说明在py3里,网络编程发送 ...

  2. mysql 优化(3)

    using filesort 不能利用索引来进行分组或排序,利用filesort算法在内存或者磁盘进行排序using temporary 先在内存中进行分组,归并等操作,不够利用磁盘 SELECT i ...

  3. 在centOS5.9安装asterisk

    最近一直在研究asterisk这个服务器,Asterisk 是一个开放源代码的软件VoIP PBX系统,它是一个运行在Linux环境下的纯软件实施方案.Asterisk是一种功能非常齐全的应用程序,提 ...

  4. MySQL 概念

    MySQL 数据库:数据库是一个存储数据的仓库, 用在哪些领域:金融机构.游戏网站.购物网站.论坛网站 提供数据服务的软件 1.软件分类:MySQL.SQL_Server.Oracle.Mariadb ...

  5. 高效网页去重算法-SimHash

    记得以前有人问过我,网页去重算法有哪些,我不假思索的说出了余弦向量相似度匹配,但如果是数十亿级别的网页去重呢?这下糟糕了,因为每两个网页都需要计算一次向量内积,查重效率太低了!我当时就想:论查找效率肯 ...

  6. 【BZOJ】2160: 拉拉队排练(Manacher)

    题目 2160: 拉拉队排练 Description 艾利斯顿商学院篮球队要参加一年一度的市篮球比赛了.拉拉队是篮球比赛的一个看点,好的拉拉队往往能帮助球队增加士气,赢得最终的比赛.所以作为拉拉队队长 ...

  7. 使用poi读写Excel------demo

    package com.js.ai.modules.pointwall.interfac; import java.io.FileInputStream; import java.io.FileOut ...

  8. Linux 之 inotify+rsync 备份文件系统

    一.需求 1.线上有不同的机房,并且每个机房所对公网开放端口不一样. 2.A机房中的a机器是台文件服务器,需要备份到B机房中的b机器,以及C机房中的c机器. 3.并且保持实时同步.只要a上面的文件有改 ...

  9. OD 实验(一) - 修改程序标题

    需要修改的程序 把 I love fishc.com 修改为 hello world sch01ar 用 OD 打开程序 在程序入口处开始一直按 F8 运行程序,看看在哪里弹出对话框 运行到该地址的时 ...

  10. RocketMQ初探(二)之RocketMQ3.26版本搭建(含简单Demo测试案例)

    作为一名程序猿,要敢于直面各种现实,脾气要好,心态要棒,纵使Bug虐我千百遍,我待它如初恋,方法也有千万种,一条路不行,换条路走走,方向对了,只要前行,总会上了罗马的道. Apache4.x最新版本既 ...