求知 文章 文库 Lib 视频 iPerson 课程 认证 咨询 工具 讲座 Model Center   Code  
会员   
要资料
 
 
 

Kubernetes教程
Kubernetes概述
Kubernetes设计架构
kubernetes设计理念
创建Kubernetes集群
基于Docker本地运行Kubernetes
使用Vagrant
本地运行Kubrenetes v1.0
Google Computer Engine入门
AWS EC2快速入门
在Azure上使用CoreOS和Weave的 Kubernetes
从零开始k8s
CoreOS部署Kubernetes集群
CloudStack部署Kubernetes集群
vSphere部署Kubernetes集群
Ferdora部署Kubernetes集群
CentOS部署Kubernetes集群
Ubuntu物理节点上部署Kubernets集群
Mesos部署Kubernetes集群
Kubernetes用户指南:应用程序管理
名词解释 Pods
名词解释 Labels
名词解释:Namespace
名词解释 Replication Controller
名词解释:Node
名词解释:ReplicaSets
名词解释 Services
名词解释 Volumes
名词解释:PV/PVC/StorageClass
名称解释:Deployment
名词解释:Secret
名词解释:StatefulSet
名词解释:DaemonSet
名词解释:Service Account
名词解释:CronJob
名词解释:Job
名词解释:Security Context和PSP
名词解释:Resource Quotas
名词解释:Network Policy
名词解释:Ingress
名词解释:ThirdPartyResources
名词解释:ConfigMap
名词解释:PodPreset
配置Kubernetes
管理应用:部署持续运行的应用
Horizontal Pod Autoscaling
管理应用:连接应用
管理应用: 在生产环境中使用Pods和容器
Kubernetes UI
Kube-API Server
授权插件
认证插件
API Server端口配置
Admission Controller
Service Accounts集群管理指南
使用Kubernetes在云上原生部署cassandra
Spark例子
Storm 示例
示例: 分布式任务队列 Celery, RabbitMQ和Flower
Kubernetes在Hazelcast平台上部署原生云应用
Meteor on Kuberenetes
配置文件使用入门
环境向导示例
在Kubernetes上运行你的第一个容器
kubectl
安装和设置kubectl
kubectl annotate
kubectl api-versions
kubectl apply
kubectl attach
kubectl cluster-info
kubectl config
kubectl config set-cluster
kubectl config set-context
kubectl config set-credentials
kubectl config set
kubectl config unset
kubectl config use-context
kubectl config view
kubectl create
kubectl delete
kubectl describe
kubectl edit
kubectl exec
kubectl logs
kubectl version
故障排查
应用程序相关的故障排查
 
 

Ferdora部署Kubernetes集群
 
1181 次浏览
75次  

前提条件

1. 你需要2台或以上安装有Fedora的机器

说明

本文是针对Fedora系统的Kubernetes入门教程。通过手动配置,你将会理解所有底层的包、服务、端口等。

本文只会让一个节点(之前称从节点)工作。多节点需要在Kubernetes之外配置一个可用的网络环境,尽管这个额外的配置条件是显而易见的,(本节也不会去配置)。

Kubernetes包提供了一些服务:kube-apiserver,kube-scheduler,kube-controllermanager,kubelet,kube-proxy。这些服务通过systemd进行管理,配置信息都集中存放在一个地方:/etc/kubernetes。我们将会把这些服务运行到不同的主机上。第一台主机,fedmaster,将是Kubernetes的master主机。这台机器上将运行kube-apiserver,kube-controllermanager和kube-scheduler这几个服务,此外,master主机上还将运行etcd(如果etcd运行在另一台主机上,那就不需要了,本文假设etcd和Kubernetesmaster运行在同一台主机上)。其余的主机,fed-node,将是从节点,上面运行kubelet, proxy和docker。

系统信息:

主机:

fed-master = 192.168.121.9
fed-node = 192.168.121.65

准备主机:

在所有主机上(fed-master和fed-node)都安装Kubernetes,。这对docker也适用。在fed-master上安装etcd。本文在kubernetes-0.18及之后版本上通过测试。

yum命令之后的 –enablerepo=update-testing 参数可以保证安装最新的Kubernetes预览版。如果不加这个参数,你安装的版本将是Fedora提供的较旧的稳定版。

如果你想获取最新的版本,你可以从Fedora Koji上下载最新的RPM包,然后yum install安装。而不是用下面的命令。

yum -y install --enablerepo=updates-testing kubernetes

安装etcd和iptables

yum -y install etcd iptables

在所有主机的/etc/hosts文件中加入master和node节点,如果DNS中已经有了主机名,就不需要加了。需要保证fed-master和fed-node之间可以正常通信,可使用ping测试网络是否连通。

echo “192.168.121.9 fed-master
192.168.121.65 fed-node” >> /etc/hosts

编辑/etc/kubernetes/config文件,加入以下内容。所有主机都是(包括master和node)。

# Comma separated list of nodes in the etcd cluster
KUBE_MASTER=”–master=http://fed-master:8080″
# logging to stderr means we get it in the systemd journal
KUBE_LOGTOSTDERR=”–logtostderr=true”
# journal message level, 0 is debug
KUBE_LOG_LEVEL=”–v=0″
# Should this cluster be allowed to run privileged docker containers
KUBE_ALLOW_PRIV=”–allow_privileged=false”

禁用master和node上的防火墙,因为如果有其他防火墙规则管理工具的话,docker会无法正常运行。请注意以默认方式安装的fedora服务器上,iptables服务并不存在。

systemctl disable iptables-services firewalld
systemctl stop iptables-services firewalld

配置master主机上Kubernetes服务

按照下面的示例编辑/etc/kubernetes/apiserver文件。注意–service-cluster-ip-range参数后跟的IP地址必须是在任何地方都未使用的地址段,这些地址无需路由也无需分配到任何东西上。

# The address on the local server to listen to.
KUBE_API_ADDRESS=”–address=0.0.0.0″
# Comma separated list of nodes in the etcd cluster
KUBE_ETCD_SERVERS=”–etcd_servers=http://127.0.0.1:4001″
# Address range to use for services
KUBE_SERVICE_ADDRESSES=”–service-cluster-ip-range=10.254.0.0/16″
# Add your own!
KUBE_API_ARGS=””

编辑/etc/etcd/etcd.conf文件,使得etcd监听除了127.0.0.1之外的所有IP,如果没有做这步,将会产生“connection refused”这样的错误。

ETCD_LISTEN_CLIENT_URLS=http://0.0.0.0:4001

启动master上恰当的服务

for SERVICES in etcd kube-apiserver kube-controller-manager kube-scheduler;do
systemctl restart $SERVICES
systemctl enable $SERVICES
systemctl status $SERVICES
done

添加node结点:

在Kubernetes的master上创建下面node.json文件:

{
“apiVersion”: “v1”,
“kind”: “Node”,
“metadata”: {
“name”: “fed-node”,
“labels”:{ “name”: “fed-node-label”}
},
“spec”: {
“externalID”: “fed-node”
}
}

现在在你的Kubernetes集群内部创建一个node对象,执行命令

$ kubectl create -f ./node.json
$ kubectl get nodes
NAME LABELS STATUS
fed-node name=fed-node-label Unknown

请注意上面的命令,它只在内部创建了一个fed-node的引用(原文representation),并不会真的提供fed-node节点。同时,假定fed-node节点(在name中指定的)能够被解析并可从Kubernetes的master节点访问。下面本文将论述如何提供Kubernetes node节点(fed-node)。

配置node节点上的Kubernetes服务

我们需要在节点上配置kubelet

按照下面的示例编辑/etc/kubernetes/kubelet文件:

###
# Kubernetes kubelet (node) config
# The address for the info server to serve on (set to 0.0.0.0 or "" for all interfaces)
KUBELET_ADDRESS="--address=0.0.0.0"
# You may leave this blank to use the actual hostname
KUBELET_HOSTNAME="--hostname_override=fed-node"
# location of the api-server
KUBELET_API_SERVER="--api_servers=http://fed-master:8080"
# Add your own!
#KUBELET_ARGS=""

启动节点上(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 LABELS STATUS
fed-node name=fed-node-label Ready

节点的删除 如果要想从Kubernetes集群中删除fed-node节点,需要在fed-master上执行下面命令(请别这样做,只是提示删除的方法)

kubectl delete -f ./node.json

你应该完成了吧!

集群现在应该在运行了,启动一个用于测试的Pod吧。


您可以捐助,支持我们的公益事业。

1元 10元 50元





认证码: 验证码,看不清楚?请点击刷新验证码 必填



1181 次浏览
75次
 捐助