这是 Fedora 的入门指南。配置手工打造,因而需要了解所有底层软件包/服务/端口等等。
本指南只能使一个节点(以前的 minion)工作。多个节点需要在 Kubernetes 之外完成功能性网络配置。尽管额外的 Kubernetes 配置需求是显而易见的。
Kubernetes 包提供了一些服务:kube-apiserver、kube-scheduler、kube-control -manager、kubelet、kube-proxy。这些服务由 systemd 管理,配置位于中心位置:/etc/kubernetes
。
我们将打破主机之间的服务。第一个主机,fed-master,将是 Kubernetes 主节点。该主节点将运行 kube-apiserver、kube-control-manager 和 kube-scheduler。
此外,主服务器还将运行 etcd (如果 etcd 运行在不同的主机上就不需要了,但是本指南假设 etcd 和 Kubernetes 主服务器在同一主机上运行)。剩下的主机,fed-node 将是节点并运行 kubelet、proxy 和 docker。
系统信息:
主机:
fed-master = 192.168.121.9
fed-node = 192.168.121.65
准备主机:
在使用 RHEL 7.2 的 AWS EC2 上运行时,您需要通过编辑 /etc/yum.repos.d/redhat-rhui.repo
和更改 enable=0to
为 enable=1
来为 yum 启用 “extras” 仓库。
dnf -y install kubernetes
安装 etcd
dnf -y install etcd
将主机和节点添加到所有机器上的 /etc/hosts
(如果主机名已经在 DNS 中,则不需要)。通过使用 ping 等实用程序,确保 fed-master 和 fed-node 之间的通信工作正常。
echo "192.168.121.9 fed-master
192.168.121.65 fed-node" >> /etc/hosts
编辑 /etc/kubernetes/config
(在所有主机上应该是相同的)来设置主服务器的名称:
# 逗号分隔的 etcd 群集中的节点列表
KUBE_MASTER="--master=http://fed-master:8080"
禁用主节点和子节点上的防火墙,因为 Docker 与其他防火墙规则管理器不兼容。请注意,默认的 Fedora Server 安装中不存在 iptables.service。
systemctl mask firewalld.service
systemctl stop firewalld.service
systemctl disable iptables.service
systemctl stop iptables.service
在主服务器上配置 Kubernetes 服务。
/etc/kubernetes/apiserver
,包含以下内容。service-cluster-ip-range
的 IP 地址必须是未使用的地址块,同时也不能在其他任何地方使用。它们不需要路由或分配给任何东西。# 本地服务器上所要监听的地址。
KUBE_API_ADDRESS="--address=0.0.0.0"
# 逗号在 ETCD 集群分离节点列表
KUBE_ETCD_SERVERS="--etcd-servers=http://127.0.0.1:2379"
# 地址范围内使用的服务
KUBE_SERVICE_ADDRESSES="--service-cluster-ip-range=10.254.0.0/16"
# 添加你自己的!
KUBE_API_ARGS=""
编辑 /etc/etcd/etcd.conf
让 etcd 监听所有可用的 IP 地址,而不仅仅是 127.0.0.1。如果没有这样做,您可能会看到一个错误,例如 “connection refused”。
ETCD_LISTEN_CLIENT_URLS="http://0.0.0.0:2379"
在主节点上启动适当的服务:
for SERVICES in etcd kube-apiserver kube-controller-manager kube-scheduler; do
systemctl restart $SERVICES
systemctl enable $SERVICES
systemctl status $SERVICES
done
在节点上配置 Kubernetes 服务
我们需要在节点上配置 kubelet。
/etc/kubernetes/kubelet
,加入以下内容:###
# Kubernetes kubelet(节点)的配置
# info 服务器要服务的地址(设置为 0.0.0.0 或 "" 用于所有接口)
KUBELET_ADDRESS="--address=0.0.0.0"
# 可以留空,使用实际主机名
KUBELET_HOSTNAME="--hostname-override=fed-node"
# api-server 的位置
KUBELET_ARGS="--cgroup-driver=systemd --kubeconfig=/etc/kubernetes/master-kubeconfig.yaml"
编辑 /etc/kubernetes/master-kubeconfig.yaml
文件,添加以下信息:
kind: Config
clusters:
- name: local
cluster:
server: http://fed-master:8080
users:
- name: kubelet
contexts:
- context:
cluster: local
user: kubelet
name: kubelet-context
current-context: kubelet-context
在节点(fed-node)上启动适当的服务。
for SERVICES in kube-proxy kubelet docker; do
systemctl restart $SERVICES
systemctl enable $SERVICES
systemctl status $SERVICES
done
检查以确保集群在 fed-master 上可以看到 fed-node,并且它的状态更改为 _Ready_。
kubectl get nodes
NAME STATUS AGE VERSION
fed-node Ready 4h
要从 Kubernetes 集群中删除 _fed-node_,应该在 fed-master 上运行以下命令(这只是演示用):
kubectl delete -f ./node.json
到此为止!
集群应该正在运行!创建测试 pod。
IaaS 供应商 | 配置管理 | 操作系统| 网络 | 文档 | 合规 | 支持级别
——————– | ———— | —— | ———- | ——————————————— | ———| —————————- Bare-metal | custom | Fedora | none | 文档 | | 项目
有关所有解决方案的支持级别信息,请参见解决方案表。
此页是否对您有帮助?
Thanks for the feedback. If you have a specific, answerable question about how to use Kubernetes, ask it on Stack Overflow. Open an issue in the GitHub repo if you want to report a problem or suggest an improvement.