kubernetes(k8s)第三部分之部署
环境,所有主机火墙关闭,selinux为diaableK8s-master172.25.37.11服务(Etcd,apiserver,controller-manager,Scheduler)私有镜像仓库:registryK8s-node1172.25.37.12Proxy,kubeletK8s-node2172.25.37.13Proxy,kubelet一、准备工作Master节点网络配置必须有
K8s-master | 172.25.37.11 | 服务(Etcd,apiserver, controller-manager, Scheduler) 私有镜像仓库:registry |
K8s-node1 | 172.25.37.12 | Proxy,kubelet |
K8s-node2 | 172.25.37.13 | Proxy,kubelet |
一、准备工作
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 root@172.25.37.12:/etc/yum.repo.d/
[root@k8s-master ~]#scp /etc/yum.repos.d/Centos-7.repo root@172.25.37.13:/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
更多推荐
所有评论(0)