在CentOS 7.2上部署Kubernetes集群

来源:互联网 发布:更改淘宝密码 编辑:程序博客网 时间:2024/04/25 17:05

本文参考Kubernetes官方文章centos_manual_config,介绍如何搭建一个拥有一个控制节点和三个工作节点的Kubernetes集群。

集群节点

192.168.120.121 kube-master192.168.120.122 kube-node1192.168.120.123 kube-node2192.168.120.124 kube-node3

部署前的准备

  • 关闭防火墙
# systemctl stop firewalld.service && systemctl disable firewalld.service
  • 禁用SELinux
# setenforce 0# sed -i.bak 's/SELINUX=enforcing/SELINUX=permissive/' /etc/selinux/config

安装Kubernetes、etcd和flannel

说明:默认安装的CentOS 7.2最小系统即包含可用于安装docker等软件的yum源。
在所有节点上执行以下命令安装Kubernetes等软件:

# yum -y install kubernetes etcd flannel

使用默认的yum源安装的以上软件的版本如下:

# rpm -qa | grep -E 'kube|docker|etcd|flannel'docker-common-1.12.6-16.el7.centos.x86_64kubernetes-master-1.5.2-0.5.gita552679.el7.x86_64docker-1.12.6-16.el7.centos.x86_64kubernetes-1.5.2-0.5.gita552679.el7.x86_64flannel-0.7.0-1.el7.x86_64kubernetes-client-1.5.2-0.5.gita552679.el7.x86_64docker-client-1.12.6-16.el7.centos.x86_64kubernetes-node-1.5.2-0.5.gita552679.el7.x86_64etcd-3.1.3-1.el7.x86_64

Kubernetes软件包提供了一些服务:kube-apiserver,kube-scheduler, kube-controller-manager, kubelet, kube-proxy。这些服务由systemd管理,配置集中保存在/etc/kubernetes目录下。

在控制节点上配置Kubernetes服务

设置kubernetes系统配置

参照以下内容编辑/etc/kubernetes/config:

KUBE_ETCD_SERVERS="--etcd-servers=http://kube-master:2379"KUBE_LOGTOSTDERR="--logtostderr=true"KUBE_LOG_LEVEL="--v=0"KUBE_ALLOW_PRIV="--allow-privileged=false"KUBE_MASTER="--master=http://kube-master:8080"

配置etcd服务

参照以下内容编辑/etc/etcd/etcd.conf:

ETCD_NAME=defaultETCD_DATA_DIR="/var/lib/etcd/default.etcd"ETCD_LISTEN_CLIENT_URLS="http://0.0.0.0:2379"ETCD_ADVERTISE_CLIENT_URLS="http://0.0.0.0:2379"

配置kube-apiserver服务

参照以下内容编辑/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:// 0.0.0.0:2379"KUBE_SERVICE_ADDRESSES="--service-cluster-ip-range=10.254.0.0/16"KUBE_ADMISSION_CONTROL="--admission-control=NamespaceLifecycle,NamespaceExists,LimitRanger,SecurityContextDeny,ServiceAccount,ResourceQuota"KUBE_API_ARGS=""

启动kube-apiserver服务

# systemctl start etcd# systemctl start kube-apiserver

kube-apiserver在启动时根据配置项“–admission-control=…ServiceAccount…”创建证书和私钥文件:

# ls /var/run/kubernetes/apiserver.crt  apiserver.key

配置kube-controller-manager服务

参照以下内容编辑/etc/kubernetes/controller-manager:

KUBE_CONTROLLER_MANAGER_ARGS="--service_account_private_key_file=/var/run/kubernetes/apiserver.key"

配置etcd保存网络覆盖配置

# etcdctl mkdir /kube-centos/network# etcdctl mk /kube-centos/network/config "{ \"Network\": \"172.30.0.0/16\", \"SubnetLen\": 24, \"Backend\": { \"Type\": \"vxlan\" } }"{ "Network": "172.30.0.0/16", "SubnetLen": 24, "Backend": { "Type": "vxlan" } }

配置flannel服务

参照以下内容编辑/etc/sysconfig/flanneld:

FLANNEL_ETCD="http://kube-master:2379"FLANNEL_ETCD_KEY="/kube-centos/network

(重新)启动所有的服务

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

在工作节点上配置Kubernetes服务

设置kubernetes系统配置

参照在Master节点上配置Kubernetes服务的设置kubernetes系统配置部分。

配置kubelet服务

参照以下内容编辑/etc/kubernetes/kubelet:

KUBELET_ADDRESS="--address=0.0.0.0"KUBELET_PORT="--port=10250"# hostname-override即工作节点主机名,如kube-node1。KUBELET_HOSTNAME="--hostname-override=kube-node1"KUBELET_API_SERVER="--api-servers=http://kube-master:8080"KUBELET_POD_INFRA_CONTAINER="--pod-infra-container-image=docker.io/kubernetes/pause:latest"KUBELET_ARGS=""

配置flannel服务

参照在Master节点上配置Kubernetes服务的配置flannel服务部分。

启动服务

执行如下命令启动合适的服务:

# for SERVICES in etcd kube-proxy kubelet flanneld docker; do        systemctl restart $SERVICES        systemctl enable $SERVICES        systemctl status $SERVICESdone

配置kubectl

执行以下命令完成kubectl的配置:

# kubectl config set-cluster default-cluster --server=http://kube-master:8080# kubectl config set-context default-context --cluster=default-cluster --user=default-admin# kubectl config use-context default-context

在控制节点或工作节点查看集群信息:

# kubectl get nodesNAME         STATUS    AGEkube-node1   Ready     1mkube-node2   Ready     1mkube-node3   Ready     1m

至此,完成Kubernetes集群的搭建。

原创粉丝点击