架构描述:

主机名ip地址角色
master1192.168.1.5master,node
worker1192.168.1.6node
worker2192.168.1.7node

 为此需要准备三个虚拟机,并配置静态ip,可参照以下两个传送门

k8s集群部署之主机准备

k8s集群部署之主机设置


master节点的安装

一、安装etcd服务

yum install etcd -y

在/etc/etcd/etcd.conf中修改以下两行

ETCD_LISTEN_CLIENT_URLS="http://0.0.0.0:2379"

ETCD_ADVERTISE_CLIENT_URLS="http://192.168.1.5:2379"


启动etcd服务

systemctl start etcd.service

systemctl enable etcd.service

二、安装kubernetes master节点

yum install kubernetes-master.x86_64 -y

    在/etc/kubernetes/apiserver中修改

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

   KUBE_API_PORT="--port=8080"

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

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

    在/etc/kubernetes/config中修改

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

启动服务

systemctl start kube-apiserver.service
systemctl start kube-controller-manager.service
systemctl start kube-scheduler.service
systemctl enable kube-apiserver.service
systemctl enable kube-controller-manager.service
systemctl enable kube-scheduler.service

验证服务,安装master节点成功。

kubectl get componentstatus

  

 


 安装node节点

  需要在三个虚拟机上分别装node节点,示例在第一台

yum install kubernetes-node.x86_64 -y

   在/etc/kubernetes/kubelet中修改

   KUBELET_ADDRESS="--address=192.168.1.5"

   KUBELET_PORT="--port=10250"

   KUBELET_HOSTNAME="--hostname-override=master1"

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

  启动服务

systemctl start kubelet.service
systemctl start kube-proxy.service
systemctl enable kubelet.service
systemctl enable kube-proxy.service

 在另外两台机器上按同样方法修改,并做相应配置

  在master节点中验证是否能够get到nodes,结果验证成功,可以搜索到三个node。

解决kubectl get pods时 No resources found.问题

kubectl get nodes


所有node节点配置flannel网络插件

yum install flannel -y

 在vi /etc/sysconfig/flanneld中修改

  FLANNEL_ETCD_ENDPOINTS="http://192.168.1.5:2379"

 并在master主机中执行etcdctl set /atomic.io/network/config '{"Network":"172.16.0.0/16"}'

 启动服务并重新docker

systemctl start flanneld.service
systemctl enable flanneld.service

  查看master主机中的ifconfig

 查看worker1节点中的ifconfig

 

 查看worker2节点中的ifconfig


 nodes节点中容器通信验证

 分别在三个节点中拉取镜像并新建容器

docker pull busybox
docker run -it busybox

 

 

分别在各个Node中ping另外两个node中的ip,经测试都可以ping通,说明node节点间通信成功。

 


题外篇

        想要让三个node中的节点通信成功,要保证每个iptables -L

        中的Chain FORWARD (policy ACCEPT)

 

Logo

华为开发者空间,是为全球开发者打造的专属开发空间,汇聚了华为优质开发资源及工具,致力于让每一位开发者拥有一台云主机,基于华为根生态开发、创新。

更多推荐