1. 程式人生 > >Kubernetes(k8s)中文文件 CentOS部署Kubernetes叢集_Kubernetes中文社群

Kubernetes(k8s)中文文件 CentOS部署Kubernetes叢集_Kubernetes中文社群

譯者:張以法

前提條件

你需要2臺或以上安裝有CentOS的機器

啟動一個叢集

本文是針對CentOS系統的Kubernetes入門教程。通過手動配置,你將會理解所有底層的包、服務、埠等。

本文只會讓一個節點工作。多節點需要在Kubernetes之外配置一個可用的的網路環境,儘管這個額外的配置條件是顯而易見的,(本節也不會去配置)。

Kubernetes包提供了一些服務:kube-apiserver, kube-scheduler, kube-controller-manager,kubelet, kube-proxy。這些服務通過systemd進行管理,配置資訊都集中存放在一個地方:/etc/kubernetes。我們將會把這些服務執行到不同的主機上。第一臺主機,centosmaster,將是Kubernetes 叢集的master主機。這臺機器上將執行kube-apiserver, kubecontroller-manager和kube-scheduler這幾個服務,此外,master主機上還將執行etcd。其餘的主機,fed-minion,將是從節點,將會執行kubelet, proxy和docker。

系統資訊:

主機:

centos-master = 192.168.121.9

centos-minion = 192.168.121.65

準備主機:

新增virt7-testing源,在所有主機上(centos-master和centos-minion),使用下面資訊新增源:

[virt7-testing]
name=virt7-testing
baseurl=http://cbs.centos.org/repos/virt7-testing/x86_64/os/
gpgcheck=0

  • 在所有主機上(centos-master和centos-minion)都安裝Kubernetes。這對etcd,docker和cadvisor也適用。
yum -y install --enablerepo=virt7-testing kubernetes

*注意使用etcd-0.4.6-7(這是該文件的臨時版本)

如果你沒有配套virt7-testing源安裝etcd 0.4.6-7版,請用下面命令解除安裝它:

yum erase etcd

原因是在當前的的 virt7-testing源中,etcd包被更新了,會引起服務錯誤。 執行下面兩行命令安裝etcd-0.4.6-7

yum install http://cbs.centos.org/kojifiles/packages/etcd/0.4.6/7.el7.centos/x86_64/etcd-0.4.6-7.el7.centos.x86_64.rpm
yum -y install --enablerepo=virt7-testing kubernetes
  • 在所有主機的/etc/hosts檔案中加入master和node節點,如果DNS中已經有了主機名,就不需要加了。
echo "192.168.121.9 centos-master
192.168.121.65 centos-minion" >> /etc/hosts
  • 編輯/etc/kubernetes/config檔案,加入以下內容:

# Comma separated list of nodes in the etcd cluster
KUBE_ETCD_SERVERS=”–etcd_servers=http://centos-master:4001″

# 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會無法正常執行。
systemctl disable iptables-services firewalld
systemctl stop iptables-services firewalld

配置master主機上Kubernetes服務

  • 按照下面的示例編輯/etc/kubernetes/apiserver檔案:

# The address on the local server to listen to.
KUBE_API_ADDRESS=”–address=0.0.0.0″

# The port on the local server to listen on.
KUBE_API_PORT=”–port=8080″

# How the replication controller and scheduler find the kube-apiserver
KUBE_MASTER=”–master=http://centos-master:8080″

# Port kubelets listen on
KUBELET_PORT=”–kubelet_port=10250″

# Address range to use for services
KUBE_SERVICE_ADDRESSES=”–service-cluster-ip-range=10.254.0.0/16″

# Add your own!
KUBE_API_ARGS=””

  • 啟動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服務 我們需要在節點上配置kubelet並啟動kubelet和proxy

  • 按照下面的示例編輯/etc/kubernetes/kubelet檔案:Kubernetes中文文件

# The address for the info server to serve on
KUBELET_ADDRESS=”–address=0.0.0.0″

# The port for the info server to serve on
KUBELET_PORT=”–port=10250″

# You may leave this blank to use the actual hostname
KUBELET_HOSTNAME=”–hostname_override=centos-minion”

# 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
$ kubectl get nodes
NAME LABELS STATUS
centos-minion <none> Ready

叢集現在應該在運行了,啟動一個用於測試的pod吧。

K8S中文社群微信公眾號