节点角色 IP地址 CPU 内存 说明
master 192.168.168.109 4 核 2GB 这里和etcd共用一台机器
etcd 192.168.168.109 4 核 2GB
minion1 192.168.168.113 4 核 2GB
minion2 192.168.168.114 4 核 2GB
一、准备工作(所有主机):
1、情况防火墙规则、关闭防火墙、关闭selinux、时间同步
iptables -F && iptables -X && iptables -F -t nat && iptables -X -t nat && iptables -P FORWARD ACCEPT
2、配置hosts域名解析文件,并把主机名称改为自己的hosts里面的名称:# cat /etc/hosts
127.0.0.1 localhost localhost.localdomain localhost4 localhost4.localdomain4
::1 localhost localhost.localdomain localhost6 localhost6.localdomain6
192.168.168.109 master
192.168.168.113 minion1
192.168.168.114 minion2
3、开启路由转发功能
echo 1 > /proc/sys/net/ipv4/ip_forward
echo "ipv4.ip_forward = 1" >>/etc/sysctl.d/k8s.conf
4、关闭swap分区
swapoff -a
sed -i /swap/'s/^/#/' /etc/fstab
5、安装k8s组件
yum install kubernetes flannel -y
二、master节点的安装配置
1、安装配置etcd
yum -y install etcd
2、vi /etc/etcd/etcd.conf
改:ETCD_NAME=default
为:ETCD_NAME="etcd"
改:ETCD_LISTEN_CLIENT_URLS="http://localhost:2379"
为:ETCD_LISTEN_CLIENT_URLS="http://localhost:2379,http://192.168.168.109:2379"
改:ETCD_ADVERTISE_CLIENT_URLS="http://localhost:2379"
为:ETCD_ADVERTISE_CLIENT_URLS="http://192.168.168.109:2379"
3、设置服务开机启动
systemctl enable --now etcd
4、检查服务运行状态
systemctl status etcd
netstat -anlpt | grep 2379
5、修改 kubernetes 配置文件
vi /etc/kubernetes/config
改:KUBE_MASTER="--master=http://127.0.0.1:8080"
为:KUBE_MASTER ="--master=http://192.168.168.109:8080"
6、修改apiserver配置文件
vi /etc/kubernetes/apiserver
改:KUBE_API_ADDRESS="--insecure-bind-address=127.0.0.1"
为:KUBE_API_ADDRESS="--insecure-bind-address=0.0.0.0"
改:KUBE_ETCD_SERVERS="--etcd-servers=http://127.0.0.1:2379"
为:KUBE_ETCD_SERVERS="--etcd-servers=http://192.168.168.109:2379"
改:KUBE_ADMISSION_CONTROL="--admission-control=NamespaceLifecycle,NamespaceExists,LimitRanger,SecurityContextDeny,ServiceAccount,ResourceQuota"
为:KUBE_ADMISSION_CONTROL="--admission-control=AlwaysAdmit"
7、配置 kube-scheduler 配置文件
vi /etc/kubernetes/scheduler
改:KUBE_SCHEDULER_ARGS=""
为:KUBE_SCHEDULER_ARGS="0.0.0.0" #改scheduler监听到的地址为:0.0.0.0。
8、把flannel的网络信息存储在etcd数据库中
etcdctl mkdir /k8s/network #创建一个目录/ k8s/network用于存储flannel网络信息的目录。
etcdctl set /k8s/network/config '{"Network": "10.255.0.0/16"}'
etcdctl get /k8s/network/config #查看
vi /etc/sysconfig/flanneld
改:FLANNEL_ETCD_ENDPOINTS="http://127.0.0.1:2379"
为:FLANNEL_ETCD_ENDPOINTS="http://192.168.168.109:2379"
改:FLANNEL_ETCD_PREFIX="/atomic.io/network"
为:FLANNEL_ETCD_PREFIX="/k8s/network"
改:#FLANNEL_OPTIONS=""
为:FLANNEL_OPTIONS="--iface=ens32" #指定通信的实际物理网卡名称
systemctl enable --now flanneld
systemctl status flanneld
9、查看master节点的kubenetes服务状态
systemctl enable --now kube-apiserver kube-controller-manager kube-scheduler
systemctl status kube-apiserver kube-controller-manager kube-scheduler
[root@master ~]# kubectl get cs
NAME STATUS MESSAGE ERROR
scheduler Healthy ok
etcd-0 Healthy {"health":"true"}
controller-manager Healthy ok
三、minion节点的配置
1、配置一下 flanneld 服务:
vi /etc/sysconfig/flanneld
改:FLANNEL_ETCD_ENDPOINTS="http://127.0.0.1:2379"
为:FLANNEL_ETCD_ENDPOINTS="http://192.168.168.109:2379"
改:FLANNEL_ETCD_PREFIX="/atomic.io/network"
为:FLANNEL_ETCD_PREFIX="/k8s/network"
改:#FLANNEL_OPTIONS=""
为:FLANNEL_OPTIONS="--iface=ens33" #指定 通信的物理网卡
2、配置k8s
vi /etc/kubernetes/config
改:KUBE_MASTER="--master=http://127.0.0.1:8080"
为:KUBE_MASTER ="--master=http://192.168.168.109:8080"
vi /etc/kubernetes/kubelet
改:KUBELET_ADDRESS="--address=127.0.0.1"
为:KUBELET_ADDRESS="--address=0.0.0.0"
改:KUBELET_HOSTNAME="--hostname-override=127.0.0.1"
为:KUBELET_HOSTNAME="--hostname-override=minion1" # minion 的主机名,设置成和本主机机名一样,便于识别。
改:KUBELET_API_SERVER="--api-servers=http://127.0.0.1:8080"
为:KUBELET_API_SERVER="--api-servers=http://192.168.168.109:8080"
KUBELET_POD_INFRA_CONTAINER="--pod-infra-container-image=192.168.5.24:5000/pod-infrastructure:latest"
3、设置为开机自动开启
systemctl enable --now flanneld kube-proxy kubelet docker
四、验证k8s服务
[root@master ~]# kubectl get cs
NAME STATUS MESSAGE ERROR
controller-manager Healthy ok
scheduler Healthy ok
etcd-0 Healthy {"health":"true"}
[root@master ~]# kubectl get nodes
NAME STATUS AGE
minion2 Ready 35s
Leave a Reply