31

k8s的简介以及搭建

 5 years ago
source link: http://www.cnblogs.com/zgqbky/p/12149753.html
Go to the source link to view the article. You can view the picture content, updated content and better typesetting reading experience. If the link is broken, please click the button below to view the snapshot at that time.
neoserver,ios ssh client

一:简介

1.什么是k8s?

k8s是一个docker容器管理工具

它是一个全新的基于容器技术的分布式架构领先方案,是开源的容器集群管理系统。

在docker的基础上,为容器化的应用提供部署运行,资源调度,服务发现和动态伸缩等一系列完整功能

2.----k8s的优势:

a,容器编排

b,轻量级

c,开源

d,弹性伸缩

e,负载均衡

二:k8s的核心功能

1.自愈: 重新启动失败的容器,在节点不可用时,替换和重新调度节点上的容器,对用户定义的健康检查不响应的容器会被中止,并且在容器准备好服务之前不会把其向客户端广播。

弹性伸缩: 通过监控容器的cpu的负载值,如果这个平均高于80%,增加容器的数量,如果这个平均低于10%,减少容器的数量

服务的自动发现和负载均衡: 不需要修改您的应用程序来使用不熟悉的服务发现机制,Kubernetes 为容器提供了自己的 IP 地址和一组容器的单个 DNS 名称,并可以在它们之间进行负载均衡。

滚动升级和一键回滚: Kubernetes 逐渐部署对应用程序或其配置的更改,同时监视应用程序运行状况,以确保它不会同时终止所有实例。 如果出现问题,Kubernetes会为您恢复更改,利用日益增长的部署解决方案的生态系统。

2.核心概念

(1)master

k8s集群的管理节点,负责管理集群,提供集群的资源数据的访问入口

(2)Node

node是k8s集群架构中运行pod的服务节点

(3)Pod

运行于Node节点上,若干相关容器的组合,pod内包含的容器运行在同一宿主机上,使用相同的网络命名空间,IP地址和端口,能够通过localhost进行通信

三:k8s的应用场景

k8s最适合跑微服务架构

四:搭建前的准备工作(所有服务器)

1.准备三台linux服务器,每台服务器配置2G内存和2CPU

角色                    主机名                  IP地址

Master                master                  192.168.175.3

Node                   node1                  192.168.175.250

Node                   node2                  192.168.175.251

2.安装vim  

命令:yum -y install vim

3.更改hosts文件添加主机名与IP映射关系

命令:vim /etc/hosts

192.168.175.3     master

192.168.175.250   node1

192.168.175.251   node2

4.关闭防火墙和selinux 

命令:iptables -F              #清除防火墙规则

命令:systemctl stop firewalld              #关闭防火墙

命令:setenforce 0              #关闭selinux

四:Kubernetes搭建

1.在各个节点上面安装k8s组件

命令:[root@master ~]# yum install -y kubernetes etcd flannel ntp

命令:[root@node1 ~]# yum install -y kubernetes etcd flannel ntp

命令:[root@node2 ~]# yum install -y kubernetes etcd flannel ntp

2.(1)配置etcd

命令:[root@master ~]# vim /etc/etcd/etcd.conf                  #修改以下配置

ETCD_LISTEN_CLIENT_URLS="http://localhost:2379,http://192.168.175.3:2379"

ETCD_NAME="etcd"

ETCD_ADVERTISE_CLIENT_URLS="http://192.168.175.3:2379"

IrquIvm.png!web

(2)启动服务

命令:[root@master ~]# systemctl start etcd

命令:[root@master ~]# systemctl status etcd

命令:[root@master ~]# systemctl enable etcd

Ybuyimy.png!web

注意:etcd 通讯使用 2379 端口

(3)查看状态:

命令:[root@master ~]# systemctl enable etcd

zYZJVrY.png!web

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

命令:[root@master ~]# etcdctl member list

RRVFfyJ.png!web

3.配置master服务器

(1)配置master配置文件

命令:[root@master ~]# vim /etc/kubernetes/config                    #修改以下配置文件

KUBE_MASTER="--master=http://192.168.175.3:8080"

bIJrqeq.png!web

(2)配置apiserver配置文件

命令:[root@master ~]# vim /etc/kubernetes/apiserver

KUBE_API_ADDRESS="--insecure-bind-address=0.0.0.0"

KUBE_ETCD_SERVERS="--etcd-servers=http://192.168.175.3:2379"

KUBE_ADMISSION_CONTROL="--admission-control=AlwaysAdmit"

Y7Z3QbY.png!web

(3)配置 kube-scheduler 配置文件

命令:[root@master ~]# vim /etc/kubernetes/scheduler

KUBE_SCHEDULER_ARGS="0.0.0.0"

R7VbAby.png!web

4.(1) 配置 etcd,指定容器云中 docker 的 IP 网段

命令:[root@master ~]# etcdctl mkdir /k8s/network

命令:[root@master ~]# etcdctl set /k8s/network/config '{"Network": "10.255.0.0/16"}'

命令:[root@master ~]# etcdctl get /k8s/network/config

6RNN32N.png!web

(2)设置flanneld服务

命令:[root@master ~]# vim /etc/sysconfig/flanneld

FLANNEL_ETCD_ENDPOINTS="http://192.168.175.3:2379"

FLANNEL_ETCD_PREFIX="/k8s/network"

FLANNEL_OPTIONS="--iface=ens33"                           #设置自己的通信物理网卡

命令:[root@master ~]# systemctl restart flanneld         #重启服务

(3)检查所有配置

命令:[root@master ~]# cat /run/flannel/subnet.env

FLANNEL_NETWORK=10.255.0.0/16

FLANNEL_SUBNET=10.255.94.1/24

FLANNEL_MTU=1472

FLANNEL_IPMASQ=false

nYVjQvI.png!web

命令:[root@master ~]# cat /run/flannel/docker

DOCKER_OPT_BIP="--bip=10.255.94.1/24"

DOCKER_OPT_IPMASQ="--ip-masq=true"

DOCKER_OPT_MTU="--mtu=1472"

DOCKER_NETWORK_OPTIONS=" --bip=10.255.94.1/24 --ip-masq=true --mtu=1472"

JBFFBfU.png!web

5. 启动master上4个服务

命令:[root@master ~]# systemctl restart kube-apiserver kube-controller-manager kube-scheduler flanneld

命令:[root@master ~]# systemctl status kube-apiserver kube-controller-manager kube-scheduler flanneld

命令:[root@master ~]# systemctl enable kube-apiserver kube-controller-manager kube-scheduler flanneld

6. 配置minion节点服务器

注意:minion各节点配置相同,这边已node1为例

(1)配置flanneld服务

命令:[root@node1 ~]# vim /etc/sysconfig/flanneld

FLANNEL_ETCD_ENDPOINTS="http://192.168.175.3:2379"

FLANNEL_ETCD_PREFIX="/k8s/network"

FLANNEL_OPTIONS="--iface=ens33"

fiEVZvI.png!web

(2)命令:[root@node1 ~]# vim  /etc/kubernetes/config

KUBE_MASTER="--master=http://192.168.175.3:8080"

IRNnquq.png!web

(3)命令:[root@node1 ~]# vim /etc/kubernetes/kubelet

KUBELET_ADDRESS="--address=0.0.0.0"

KUBELET_HOSTNAME="--hostname-override=node1"

KUBELET_API_SERVER="--api-servers=http://192.168.175.3:8080"

KUBELET_POD_INFRA_CONTAINER="--pod-infra-container-image=registry.access.redhat.com/rhel7/pod-infrastructure:latest"

qyuya2y.png!web

(4)启动node1服务

命令:[root@node1 ~]# systemctl restart flanneld kube-proxy kubelet docker

命令:[root@node1 ~]# systemctl enable flanneld kube-proxy kubelet docker

命令:[root@node1 ~]# systemctl status flanneld kube-proxy kubelet dock

7.查看服务是否安装成功(在master上查看)

命令:[root@master ~]# kubectl get nodes

NAME      STATUS    AGE

node1     Ready     2h

node2     Ready     25s

m67J7zV.png!web

About Joyk


Aggregate valuable and interesting links.
Joyk means Joy of geeK