转 kubernetes(k8s)第三部分之部署

环境,所有主机防火墙关闭,selinux为disabled
 

一、准备工作

Master节点网络配置必须有网关,没有网关kube-apiserver服务起不来,至于原因,我了不了解,作为新手这个坑我找了好久才找到解决方法。

【1】所有节点/etc/hosts作解析:

172.25.37.11    etcd  k8s-master registry

172.25.37.12    k8s-node1

172.25.37.13    k8s-node2

所有节点设置主机名:

[root@server1 ~]# hostnamectl set-hostaname --static k8s-master

[root@server2 ~]# hostnamectl set-hostaname --static k8s-node1

[root@server3 ~]# hostnamectl set-hostaname --static k8s-node2

【2】让桥接的虚拟机上网:

真机:

[root@random hadoop]# iptables -t nat -I POSTROUTING -s 172.25.37.0/24 -j MASQUERADE

用真机ping mirrors.aliyun.com ,ping通后你可以看到一个IP地址,将这个IP地址写到虚拟机/etc/hosts文件里,并指向mirrors.aliyun.com

虚拟机:

[root@k8s-master ~]# route add default gw 172.25.37.250

【3】配置yum源

[root@k8s-master~]# wget  http://mirrors.aliyun.com/repo/Centos-7.repo

我们获取到的配置文件Centos-7.repo打开后有个$releasever,这个是yum变量,我们需要替换掉,否则源没法使用,使用如下命令替换$releasever:

[root@k8s-master ~]# sed -i 's/$releasever/7/g' /etc/yum.repos.d/Centos-7.repo

[root@k8s-master ~]# yum clean all

[root@k8s-master ~]# yum repolist

[root@k8s-master ~]#scp  /etc/yum.repos.d/Centos-7.repo  [email protected]:/etc/yum.repo.d/

[root@k8s-master ~]#scp  /etc/yum.repos.d/Centos-7.repo  [email protected]:/etc/yum.repo.d/

二、安装软件并配置master

【1】安装软件

[root@k8s-master yum.repos.d]# yum install -y kubernetes etcd

【2】修该apiserver 文件,该文件在/etc/kubernetes目录底下。

[root@k8s-master ~]# cat /etc/kubernetes/apiserver

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

KUBE_API_PORT="--port=8080"

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

KUBE_SERVICE_ADDRESSES="--service-cluster-ip-range=10.254.0.0/16"

KUBE_ADMISSION_CONTROL="--admission-control=NamespaceLifecycle,NamespaceExists,LimitRanger,SecurityContextDeny,ResourceQuota"

KUBE_API_ARGS=""

【3】配置/etc/etcd/etcd.conf文件

[root@k8s-master ~]# cat /etc/etcd/etcd.conf 
ETCD_DATA_DIR="/var/lib/etcd/default.etcd"
ETCD_LISTEN_CLIENT_URLS="http://0.0.0.0:2379"
ETCD_NAME="default"
ETCD_ADVERTISE_CLIENT_URLS="http://etcd:2379"
【4】配置config文件

[root@k8s-master ~]# cat  /etc/kubernetes/config
KUBE_LOGTOSTDERR="--logtostderr=true"
KUBE_LOG_LEVEL="--v=0"
KUBE_ALLOW_PRIV="--allow-privileged=false"
KUBE_MASTER="--master=http://k8s-master:8080"
【5】开启服务

[root@k8s-master ~]# for service in {etcd,kube-apiserver,kube-controller-manager,kube-scheduler} ; \
> do systemctl start $service ; \
> done
 三、配置Node节点

【1】安装软件

[root@k8s-node1 ~]# yum install -y kubernetes docker

【2】配置kubelet

[root@k8s-node1 ~]# vim /etc/kubernetes/kubelet
KUBELET_ADDRESS="--address=0.0.0.0"
KUBELET_HOSTNAME="--hostname-override=k8s-node1"
注:k8s-node2将上面的k8s-node1替换即可
KUBELET_API_SERVER="--api-servers=http://k8s-master:8080"
KUBELET_POD_INFRA_CONTAINER="--pod-infra-container-image=registry.access.redhat.com/rhel7/pod-infrastructure:latest"
KUBELET_ARGS=""
【3】配置config

[root@k8s-node1 ~]# vim /etc/kubernetes/config
KUBE_LOGTOSTDERR="--logtostderr=true"
KUBE_LOG_LEVEL="--v=0"
KUBE_ALLOW_PRIV="--allow-privileged=false"
KUBE_MASTER="--master=http://k8s-master:8080"
【4】开启服务

[root@k8s-node1 ~]# systemctl start kubelet

[root@k8s-node1 ~]# systemctl start kube-proxy

其他node节点 配置与k83-node1类似。然后启动kubelet 和 kube-proxy 服务

【5】在master节点查看node

[root@k8s-master ~]# kubectl get nodes

NAME        STATUS    AGE

K8s-node1   Ready     6m

K8s-node2   Ready     6s

四、配置Flannel

【1】说明

Flannel是CoreOS团队针对Kubernetes设计的一个网络规划服务,简单来说,它的功能是让集群中的不同节点主机创建的Docker容器都具有全集群唯一的虚拟IP地址。

在默认的Docker配置中,每个节点上的Docker服务会分别负责所在节点容器的IP分配。这样导致的一个问题是,不同节点上容器可能获得相同的内外IP地址。并使这些容器之间能够之间通过IP地址相互找到,也就是相互ping通。
Flannel的设计目的就是为集群中的所有节点重新规划IP地址的使用规则,从而使得不同节点上的容器能够获得“同属一个内网”且”不重复的”IP地址,并让属于不同节点上的容器能够直接通过内网IP通信。

详细信息参考:http://dockone.io/article/618

【2】在所有节点上面安装flannel

[root@k8s-master ~]# yum install -y flannel

【3】在所有节点配置flanneld

[root@k8s-master ~]# cat /etc/sysconfig/flanneld 
FLANNEL_ETCD_ENDPOINTS="http://etcd:2379"
# For address range assignment
FLANNEL_ETCD_PREFIX="/atomic.io/network"
# Any additional options that you want to pass
#FLANNEL_OPTIONS=""
【4】配置etcd中flanneld的key

这一步只需要在master节点进行:

[root@k8s-master ~]# etcdctl mk /atomic.io/network/config '{ "Network": "10.0.0.0/16" }'
【5】所有节点启动flanneld

[root@k8s-master ~]# systemctl start flanneld

K8s-master重新启动kube-apiserver,kube-controller-manager,kube-scheduler,docker。

K8s-node节点重启kube-proxy,kubelet,docker
--------------------- 
作者:random_w 
来源:CSDN 
原文:https://blog.csdn.net/random_w/article/details/80601978 
版权声明:本文为博主原创文章,转载请附上博文链接!

猜你喜欢

转载自blog.csdn.net/lj88811498/article/details/89333756