centos7系统机器2台:
192.168.1.73: 用来安装kubernetes master
192.168.1.70: 用作kubernetes minion (minion1)
一、准备:
1、关闭 selinux
2、防火墙设置
1)关闭防火墙
firewalls或者iptables
2)设置防火墙
敲黑板:由于linux还有底层的iptables,因此即使关闭了防火墙跨主机间容器、pod始终无法ping通。
# iptables -P INPUT ACCEPT
# iptables -P FORWARD ACCEPT
# iptables -F
# iptables -L -n
二、master端安装
1、安装:
# yum -y install etcd kubernetes
2、配置
1)配置 etcd
说明:该服务使所有docker处于同一网络当中。后面会被运行在node上的flannel自动获取并用来设置docker的IP地址
⑴ etcd配置文件修改
# cat /etc/etcd/etcd.conf
ETCD_NAME=default
ETCD_DATA_DIR="/var/lib/etcd/default.etcd"
ETCD_LISTEN_CLIENT_URLS="http://0.0.0.0:2379"
ETCD_ADVERTISE_CLIENT_URLS="http://localhost:2379"
⑵ 启动etcd
# systemctl start etcd.service
查看2380端口已启动
⑶ 设置etcd的虚拟网络
说明:金色部分是子网的前缀,后边所有node节点上flannel要使用这个网络
# etcdctl mk /hello.com/network/config '{"Network":"192.17.0.0/16"}'
{"Network":"192.17.0.0/16"}
验证查看:
# etcdctl get /hello.com/network/config
{"Network":"192.17.0.0/16"}
2)配置k8s
说明:倒数第二行,删除ServiceAccount(否则后边无法查看pod),详解FAQ
# vim /etc/kubernetes/apiserver
KUBE_API_ADDRESS="--address=0.0.0.0"
KUBE_API_PORT="--port=8080"
KUBELET_PORT="--kubelet_port=10250"
KUBE_ETCD_SERVERS="--etcd_servers=http://127.0.0.1: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=""
【FAQ】
解决 kubectl get pods时 No resources found.问题
● 描述
# kubectl get pods
No resources found.
● 解决
# vim /etc/kubernetes/apiserver
admission_control=NamespaceLifecycle,NamespaceExists,LimitRanger,SecurityContextDeny,ServiceAccount,ResourceQuota"
说明:去掉红字部分
# service kube-apiserver restart
3、启动etcd, kube-apiserver,kube-controller-manager , kube-scheduler服务
# for SERVICES in etcd kube-apiserver kube-controller-manager kube-scheduler; do
systemctl restart $SERVICES
systemctl enable $SERVICES
systemctl status $SERVICES
done
三、node节点配置
1、安装:
# yum -y install docker-engine flannel kubernetes
2、修改配置文件
1)配置跨主机网络
敲黑板:子网的前缀(hello.com)一定要和前边设置的一样,千万别写错了
# vim /etc/sysconfig/flanneld
FLANNEL_ETCD="http://192.168.1.73:2379"
FLANNEL_ETCD_PREFIX="/hello.com/network"
2)k8s配置文件
# vim /etc/kubernetes/config
KUBE_MASTER="--master=http://192.168.1.73:8080"
# vim /etc/kubernetes/kubelet
KUBELET_ADDRESS="--address=0.0.0.0"
KUBELET_PORT="--port=10250"
KUBELET_HOSTNAME="--hostname_override=建议monitor的ip地址"
KUBELET_API_SERVER="--api_servers=http://192.168.1.73:8080"
KUBELET_ARGS="--cluster-dns=192.168.1.73 --cluster-domain=playcrab-inc.com"
2、启动准备(如果启动过docker注意一下,如果没有可以忽略)
# ifconfig
docker0 Link encap:Ethernet HWaddr xx:xx:xx:xx:xx:xx7
inet addr:172.17.0.1 Bcast:0.0.0.0 Mask:255.255.0.0
。。。。。。。。。。。。。。。。。。
可以看见有docker0,启动前把docker0的配置删掉
# ip link delete docker0
再查看一次,会发现docker0没有了。
3、启动服务器
# for SERVICES in kube-proxy kubelet docker flanneld; do
systemctl restart $SERVICES
systemctl enable $SERVICES
systemctl status $SERVICES
done
四、验证(master端)
1、查看node节点
# kubectl get nodes
说明:127.0.0.1那个是前边配置错了没有删除。
2、查看集群网络
1)【master】
物理机的网络
k8s的网络
2、【node】
五、操作
1、删除节点
语法: kubectl delete node 节点名
# kubectl delete node 127.0.0.1
node "127.0.0.1" deleted