yum 方式安装部署 k8s 集群
警告
本文最后更新于 2020-05-30 17:09,文中内容可能已过时。
安装前准备:
环境:
主机 | 服务 | ip |
k8s-master | etcd、 | 10.0.0.11 |
k8s-node-1 | k8s-node | 10.0.0.12 |
k8s-node-2 | k8s-node | 10.0.0.13 |
10.0.0.11 k8s-master 10.0.0.12 k8s-node-1 10.0.0.13 k8s-node-2关闭防火墙和 selinux
systemctl stop firewalld setenforce 0yum 源使用的是阿里云的
curl -o /etc/yum.repos.d/CentOS-Base.repo http://mirrors.aliyun.com/repo/Centos-7.repokubernetes 架构图:

一、首先配置 k8s-master
1.k8s-master 安装 etcd:
yum install -y etcd
2. 配置 etcd
vim /etc/etcd/etcd.conf #修改下面三项 ETCD_LISTEN_CLIENT_URLS="http://0.0.0.0:2379" ETCD_NAME="k8s-master" ETCD_ADVERTISE_CLIENT_URLS="http://10.0.0.11:2379" #启动服务 systemctl enable etcd systemctl start etcd #测试,正常设置和取值 [root@k8s-master ~]# etcdctl set test/k v v [root@k8s-master ~]# etcdctl get test/k v #查看etcd健康状态 [root@k8s-master ~]# etcdctl -C http://10.0.0.11:2379 cluster-health member 8e9e05c52164694d is healthy: got healthy result from http://10.0.0.11:2379 cluster is healthy
3. 安装 kubernetes-master
yum install -y kubernetes-master
4. 配置 apiserver
vim /etc/kubernetes/apiserver # 修改下面五项 KUBE_API_ADDRESS="--insecure-bind-address=0.0.0.0" KUBE_API_PORT="--port=8080" KUBELET_PORT="--kubelet-port=10250" KUBE_ETCD_SERVERS="--etcd-servers=http://10.0.0.11:2379" KUBE_ADMISSION_CONTROL="--admission-control=NamespaceLifecycle,NamespaceExists,LimitRanger,SecurityContextDeny,ResourceQuota"
5. 指定 apiserver 地址,给 controller-manager 和 scheduler 使用
vim /etc/kubernetes/config KUBE_MASTER="--master=http://10.0.0.11:8080"
6. 启动服务
systemctl enable kube-apiserver systemctl enable kube-controller-manager systemctl enable kube-scheduler systemctl restart kube-apiserver systemctl restart kube-controller-manager systemctl restart kube-scheduler
7. 检查其他组件的状态
[root@k8s-master ~]# kubectl get componentstatus NAME STATUS MESSAGE ERROR etcd-0 Healthy {"health":"true"} scheduler Healthy ok controller-manager Healthy ok
二、配置 node 节点 (node2 也是同样配置)
1. 安装 kubernetes-node
yum install -y kubernetes-node
2. 修改 kubelet,注意 hostname,每个节点需要不同的名字
vim /etc/kubernetes/kubelet KUBELET_ADDRESS="--address=0.0.0.0" KUBELET_PORT="--port=10250" KUBELET_HOSTNAME="--hostname-override=k8s-node-1" KUBELET_API_SERVER="--api-servers=http://10.0.0.11:8080"
3. 指定 apiserver 地址,给 kube-proxy 使用
vim /etc/kubernetes/config KUBE_MASTER="--master=http://10.0.0.11:8080"
4. 启动服务
systemctl enable kubelet systemctl enable kube-proxy systemctl restart kubelet.service systemctl restart kube-proxy.service
- 在 master 上查看 node 节点
kubectl get nodes NAME STATUS AGE k8s-node-1 Ready 1m k8s-node-2 Ready 3s
至此 k8s 已经装完了,接下来配置不同宿主机之间容器的通信,这里使用的 flannel。
安装配置 flannel
1. 所有节点安装 flannel
yum install -y flannel systemctl enable flanneld
2. 修改 fannel 配置,三台机器都做此操作
vim /etc/sysconfig/flanneld FLANNEL_ETCD_ENDPOINTS="http://10.0.0.11:2379" #也可以使用sed替换 sed -i s#127.0.0.1:2379#10.0.0.11:2379#g /etc/sysconfig/flanneld
3. 通过 etcd 配置 ip 地址范围(key:value 形式)
etcdctl mk /atomic.io/network/config '{"Network":"172.16.0.0/16"}'
4. 重启服务
master 节点需要自行安装 docker,配置完 flannel 也需要重启 docker。
master 节点:
systemctl restart flanneld systemctl restart kube-apiserver systemctl restart kube-controller-manager systemctl restart kube-scheduler
node 节点:
systemctl restart flanneld systemctl restart docker systemctl restart kubelet systemctl restart kube-proxy
docker1.13 版本中的一个问题,需要修改 iptables,否则容器之间不通。
vim /usr/lib/systemd/system/docker.service ExecStartPost=/sbin/iptables -P FORWARD ACCEPT systemctl daemon-reload systemctl restart docker
请我喝杯水

