Kubernetes 环境配置(旧版)
准备工作
什么是 ETCD
https://etcd.io/
什么是Kubernetes
https://kubernetes.io/
flannel
https://github.com/flannel-io/flannel
Docker
本例 yum 安装的 kubernetes 版本是 1.5.2,Docker 版本是 1.13.1
服务器准备
三个服务器,分别为 Master、Node1、Node2
服务器 | IP | 主机名 |
---|---|---|
Master | 172.16.10.10 | k8s-master.example.com |
Node1 | 172.16.10.11 | k8s-node1.example.com |
Node2 | 172.16.10.12 | k8s-node2.example.com |
安装及设置
ETCD 及 flannel
安装 ETCD 和 flannel
sudo yum install etcd flannel -y
禁用防火墙和SElinux,实际环境可以根据端口自行添加防火墙规则
systemctl stop firewalld
systemctl disable firewalld
setenforce 0
配置 ETCD
```/etc/etcd/etcd.conf```
主服务器 - Master
# 节点名称
ETCD_NAME="master"
# ETCD 数据存储目录
ETCD_DATA_DIR="/home/etcd/master"
# 该节点与其他节点通信时所监听的地址列表,多个地址使用逗号隔开,其格式可以划分为scheme://IP:PORT,这里的 scheme 可以是 http、https
ETCD_LISTEN_PEER_URLS="http://172.16.10.10:2380"
# 该节点与客户端通信时监听的地址列表。
ETCD_LISTEN_CLIENT_URLS="http://172.16.10.10:2379,http://127.0.0.1:2379"
# 广播给集群中其他成员自己的客户端地址列表。
ETCD_ADVERTISE_CLIENT_URLS="http://127.0.0.1:2379"
# 该成员节点在整个集群中的通信地址列表,这个地址用来传输集群数据的地址。因此这个地址必须是可以连接集群中所有的成员的。
ETCD_INITIAL_ADVERTISE_PEER_URLS="http://172.16.10.10:2380"
# 配置集群内部所有成员地址,其格式为:ETCD_NAME=ETCD_INITIAL_ADVERTISE_PEER_URLS,如果有多个使用逗号隔开。
ETCD_INITIAL_CLUSTER="master=http://172.16.10.10:2380,node1=http://172.16.10.11:2380,node2=http://172.16.10.12:2380"
# 初始集群状态,new为新建集群,exist为加入集群的其他服务器
ETCD_INITIAL_CLUSTER_STATE="new"
# 集群TOKEN,同一 TOKEN 视为同一集群
ETCD_INITIAL_CLUSTER_TOKEN="etcd-cluster"
结点服务器 - Node1/Node2
节点1配置,node2和node1的配置区别仅在于节点名称和IP地址,其他一致
ETCD_NAME="node1"
ETCD_DATA_DIR="/home/etcd/node1"
ETCD_LISTEN_PEER_URLS="http://172.16.10.11:2380"
ETCD_LISTEN_CLIENT_URLS="http://172.16.10.11:2379, http://127.0.0.1:2379"
ETCD_ADVERTISE_CLIENT_URLS="http://127.0.0.1:2379"
ETCD_INITIAL_ADVERTISE_PEER_URLS="http://172.16.10.11:2380"
ETCD_INITIAL_CLUSTER="master=http://172.16.10.10:2380,node1=http://1172.16.10.11:2380,node2=http://172.16.10.12:2380"
ETCD_INITIAL_CLUSTER_STATE="exist"
ETCD_INITIAL_CLUSTER_TOKEN="etcd-cluster"
节点2配置
ETCD_NAME="node2"
ETCD_DATA_DIR="/home/etcd/node2"
ETCD_LISTEN_PEER_URLS="http://172.16.10.12:2380"
ETCD_LISTEN_CLIENT_URLS="http://172.16.10.12:2379, http://127.0.0.1:2379"
ETCD_ADVERTISE_CLIENT_URLS="http://127.0.0.1:2379"
ETCD_INITIAL_ADVERTISE_PEER_URLS="http://172.16.10.12:2380"
ETCD_INITIAL_CLUSTER="master=http://172.16.10.10:2380,node1=http://1172.16.10.11:2380,node2=http://172.16.10.12:2380"
ETCD_INITIAL_CLUSTER_STATE="exist"
ETCD_INITIAL_CLUSTER_TOKEN="etcd-cluster"
部分其他可能用得到的参数
# 多少次的事务提交将触发一次快照。
ETCD_SNAPSHOT_COUNTER = 500
# ETCD 节点之间心跳传输的间隔,单位毫秒。
ETCD_HEARTBEAT_INTERVAL = 100
# 该节点参与选举的最大超时时间,单位毫秒。
ETCD_ELECTION_TIMEOUT = 1000
YAML 格式的配置文件 /etc/etcd/etcd.yml
name: master
data-dir: /home/etcd/master
listen-peer-urls: http://172.16.10.10:2380
listen-client-urls: http://172.16.10.10:2379,http://127.0.0.1:2379
advertise-client-urls: http://172.16.10.10:2379,http://127.0.0.1:2379
initial-advertise-peer-urls: http://172.16.10.10:2380
initial-cluster-token: etcd-cluster
initial-cluster: master=http://172.16.10.10:2380,node1=http://172.16.10.11:2380,node2=http://172.16.10.12:2380
initial-cluster-state: new
启动 ETCD 服务
分别设置开机启动 ETCD 并启动 Master 、 Node1 、 Node2 上的 ETCD 服务
systemctl enable etcd
systemctl start etcd
# 查看成员
etcdctl member list
# 查看健康状态
etcdctl cluster-health
服务异常
如果启动过程有问题,可以使用
journalctl -xe
或者结合命令行 Debug,参数信息可参照配置文件
命令行启动的两种方式
/usr/bin/etcd --config-file /etc/etcd/etcd.yml
或者
/usr/bin/etcd --name master \
--data-dir /home/etcd/master \
--listen-peer-urls http://172.16.10.10:2380 \
--listen-client-urls http://172.16.10.10:2379,http://127.0.0.1:2379 \
--advertise-client-urls http://127.0.0.1:2379 \
--initial-advertise-peer-urls http://172.16.10.10:2380 \
--initial-cluster-token etcd-cluster \
--initial-cluster master=http://172.16.10.10:2380,node1=http://172.16.10.11:2380,node2=http://172.16.10.12:2380 \
--initial-cluster-state new
master 上执行,检查etcd的状态
etcdctl member list
配置 flannel 网络
Master 执行
etcdctl -endpoint="http://172.16.10.10:2379" set /coreos.com/network/config /coreos.com/network/config '{"Network": "10.1.0.0/16", "Backend": {"Type": "vxlan"}}'
编辑 master 服务器 /etc/sysconfig/flanneld
文件
# etcd url 地址
FLANNEL_ETCD_ENDPOINTS="http://127.0.0.1:2379"
# etcd 配置 key. 从 atomic.io 改为 coreos.com
FLANNEL_ETCD_PREFIX="/coreos.com/network"
# ETCD 服务器配置
FLANNEL_ETCD="http://172.17.10.10:2379"
FLANNEL_ETCD_KEY="/coreos.com/network"
编辑节点服务器 /etc/sysconfig/flanneld
文件
FLANNEL_ETCD_ENDPOINTS="http://127.0.0.1:2379"
FLANNEL_ETCD_PREFIX="/coreos.com/network"
FLANNEL_ETCD="http://172.17.10.11:2379"
FLANNEL_ETCD_KEY="/coreos.com/network"
Kubernetes 及 Docker
主服务器 - Master 安装 Kubernetes-master
yum install kubernetes-master
编辑 Master 服务器 /etc/kubernetes/config
文件
KUBE_LOGTOSTDERR="--logtostderr=true"
KUBE_LOG_LEVEL="--v=0"
KUBE_ALLOW_PRIV="--allow-privileged=true"
KUBE_MASTER="--master=http://172.16.10.10:8080"
编辑 Master 服务器 /etc/kubernetes/apiserver
文件
# 监听所有IP
KUBE_API_ADDRESS="--insecure-bind-address=0.0.0.0"
# 主服务器监听端口
KUBE_API_PORT="--port=8080"
# 从服务器监听商品
KUBELET_PORT="--kubelet-port=10250"
# etcd 集群节点列表,用 "," 隔开
KUBE_ETCD_SERVERS="--etcd-servers=http://192.168.1.240:2379,http:/ /192.168.1.241:2379,http:// 192.168.1.242:2379"
# 用于服务的地址范围
KUBE_SERVICE_ADDRESSES="--service-cluster-ip-range=10.1.0.0/16"
# 默认准入控制策略
KUBE_ADMISSION_CONTROL="--admission-control=NamespaceLifecycle,NamespaceExists,LimitRanger,SecurityContextDeny,ServiceAccount,ResourceQuota"
启动 & 启用服务
systemctl start kube-apiserver
systemctl start kube-controller-manager
systemctl start kube-scheduler
systemctl enable kube-apiserver
systemctl enable kube-controller-manager
systemctl enable kube-scheduler
节点服务器 - Node1/2 安装 kubernetes-node
安装 kubernetes-node 会安装 docker 依赖
yum install kubernetes-node
编辑节点服务器 Node1/2 /etc/kubernetes/config
文件
KUBE_LOGTOSTDERR="--logtostderr=true"
KUBE_LOG_LEVEL="--v=0"
KUBE_ALLOW_PRIV="--allow-privileged=false"
KUBE_MASTER="--master=http://172.16.10.10:8080"
编辑节点服务器 Node1/2 /etc/kubernetes/kubelet
文件(以Node1为例)
# KUBELET IP
KUBELET_ADDRESS="--address=127.0.0.1"
# 改成本机IP
KUBELET_HOSTNAME="--hostname-override=172.17.10.11"
# API SERVER 服务器(master)地址
KUBELET_API_SERVER="--api-servers=http://172.17.10.10:8080"
# pod infrastructure container
KUBELET_POD_INFRA_CONTAINER="--pod-infra-container-image=registry.access.redhat.com/rhel7/pod-infrastructure:latest"
# Add your own!
KUBELET_ARGS=""
启动并设置开机自启
systemctl start kubelet
systemctl start kube-proxy
systemctl enable kubelet
systemctl enable kube-proxy
Master上执行 查看节点状态
kubectl get nodes
返回
NAME STATUS AGE
172.16.10.11 Ready 1s
172.16.10.12 Ready 1s
手工安装 Docker
安装 Docker
!正常安装 kubernetes-node 的时候会自动安装 docker,此步骤可跳过
curl -fsSL https://get.docker.com/ | sh
启动 Docker
sudo systemctl start docker
验证 Docker 是否安装成功
sudo docker run hello-world
部分参考自:
https://www.cnblogs.com/zoulixiang/p/9504324.html
https://blog.csdn.net/qq_38252499/article/details/99214276
版权声明:
作者:Kiyo
链接:https://www.wkiyo.cn/html/2022-03/i1153.html
来源:Kiyo's space
文章版权归作者所有,未经允许请勿转载。
共有 0 条评论