在虚拟机上安装Kubernetes集群配置

在虚拟机上安装Kubernetes集群配置。

参考于在Linux上使用kubeadm安装Kubernetes,我们将在CentOS 7.3上安装Kubernetes。因为我们想要在多台机器上尝试集群配置,所以我们会在已安装CentOS 7的虚拟机上安装Kubernetes。
虚拟机的配置和之前的旧安装步骤一样。我们会准备1台主节点和3台从节点的虚拟机。

centos-master = 192.168.121.9
centos-minion-1 = 192.168.121.65
centos-minion-2 = 192.168.121.66
centos-minion-3 = 192.168.121.67

请参考我在GitHub上放置的设置文件等内容。
* https://github.com/syunasin/kubernetes/tree/master/setup

环境

主机
* Core i3-4020U处理器(1.9GHz)
* 16GB内存
* CentOS7.3操作系统

虚拟机x4
* 内存1GB
* 硬盘10GB
* CentOS7.3

创建虚拟机

假设 KVM 环境已经创建完成。
以下的操作将在主机上以 root 用户身份执行。

获取CentOS7的DVD映像

# mkdir -p /data/iso
# cd /data/iso
# wget http://ftp.iij.ad.jp/pub/linux/centos/7/isos/x86_64/CentOS-7-x86_64-DVD-1611.iso

创建虚拟硬盘

# mkdir -p /data/hdd/kubernetes
# cd /data/hdd/kubernetes
# qemu-img create -f qcow2 centos-master.qcow2 10G
# qemu-img create -f qcow2 centos-minion-1.qcow2 10G
# qemu-img create -f qcow2 centos-minion-2.qcow2 10G
# qemu-img create -f qcow2 centos-minion-3.qcow2 10G

创建虚拟网络 (CJ畅享虚拟网络)

用以下的 XML 创建并配置网络。

<network>
  <name>kubenet</name>
  <forward mode='nat'>
    <nat>
      <port start='1024' end='65535'/>
    </nat>
  </forward>
  <bridge name='virbr1' stp='off' delay='0'/>
  <ip address='192.168.121.1' netmask='255.255.255.0'/>
</network>

通过以下步骤,将创建一个名为 kubenet 的 192.168.121.* 网络。

# virsh net-define /tmp/kubenet.xml
# virsh net-start kubenet
# virsh net-autostart kubenet
# virsh net-list

创建虚拟机

为了自动安装CentOS,我准备了一个kickstart文件。以下是用于主控端(master)的kickstart文件。请更改IP地址和主机名,以创建一个类似的文件,用于从控端(minion)。

#version=DEVEL
# System authorization information
auth --enableshadow --passalgo=sha512
# Use CDROM installation media
cdrom
# Use graphical install
graphical
# Run the Setup Agent on first boot
firstboot --enable
ignoredisk --only-use=vda
# Keyboard layouts
keyboard --vckeymap=jp --xlayouts='jp'
# System language
lang ja_JP.UTF-8

# Network information
network  --bootproto=static --device=eth0 --onboot=on --activate --gateway=192.168.122.1 --ip=192.168.122.9 --nameserver=192.168.122.1 --netmask=255.255.255.0 --noipv6
network  --hostname=centos-master

# Root password
rootpw --plaintext root
# System services
#services --enabled="chronyd"
# System timezone
timezone Asia/Tokyo --isUtc
user --groups=wheel --name=kube --password=kube --plaintext --gecos="kube"
# System bootloader configuration
bootloader --location=mbr --boot-drive=vda
autopart --type=lvm

# Partition clearing information
clearpart --all --initlabel --drives=vda

install
reboot
zerombr
text

%packages
@core
@base
%end

%post --log=/root/postinstall.log
yum update -y
%end

执行以下命令,启动主节点的虚拟机。同时,启动3个用于从节点的虚拟机。
需要修改的参数如下:
* –name
* –disk
* –initrd-inject
* –extra-args

# virt-install \
    --virt-type kvm \
    --name centos-master \
    --vcpus 1 \
    --cpu host \
    --ram 1024 \
    --disk path=/data/hdd/kubernetes/master.qcow2 \
    --network network:kubenet \
    --graphics vnc \
    --os-type linux \
    --os-variant rhel7 \
    --boot hd \
    --location /data/iso/CentOS-7-x86_64-DVD-1611.iso \
    --initrd-inject /tmp/master-ks.cfg \
    --extra-args "inst.ks=file:/master-ks.cfg" \

在安装完成后,有时不需要重新启动。在这种情况下,请从 virt-manager 启动。

# virt-manager
virt-manager が起動したら、仮想マシンを右クリックして起動を選択します。

师傅的设定

我会在主服务器上安装Kubernetes。

登录主掌者账号

从主机登录到master。
用户为kube,密码为kube。
在master上以root用户身份执行kube的安装。

$ ssh kube@192.168.122.9
kube@192.168.122.9's password: kube
$ sudo su -
[sudo] password for kube: kube
#

Kubernetes 仓库的配置

我们要创建 Kubernetes 的 yum 仓库。
请将以下内容保存到 /etc/yum.repos.d/kubernetes.repo 文件中。

# vi /etc/yum.repos.d/kubernetes.repo
[kubernetes]
name=Kubernetes
baseurl=https://packages.cloud.google.com/yum/repos/kubernetes-el7-x86_64
enabled=1
gpgcheck=1
repo_gpgcheck=1
gpgkey=https://packages.cloud.google.com/yum/doc/yum-key.gpg
        https://packages.cloud.google.com/yum/doc/rpm-package-key.gpg

“/etc/sysctl.d/k8s.conf” 的配置

请在 /etc/sysctl.d/k8s.conf 文件中进行以下设置。

# vi /etc/sysctl.d/k8s.conf
net.bridge.bridge-nf-call-ip6tables = 1
net.bridge.bridge-nf-call-iptables = 1

hosts 文件的配置

在/etc/hosts文件中添加以下内容。

centos-master   192.168.121.9
centos-minion-1 192.168.121.65
centos-minion-2 192.168.121.66
centos-minion-3 192.168.121.67

禁用防火墙

禁用防火墙。

# systemctl stop firewalld
# systemctl disable firewalld

禁用SELinux

由于Kubernetes似乎还不支持SELinux,因此我们将其禁用。
将/etc/sysconfig/selinux中的SELINUX=enforcing更改为SELINUX=disabled。
编辑完成后,请先重新启动。
重新启动完成后,请再次登录并切换为root用户。

# vi /etc/sysconfig/selinux
# reboot
$ ssh kube@192.168.122.9
kube@192.168.122.9's password: kube
$ sudo su -
[sudo] password for kube: kube
#

安装kubernetes。

# setenforce 0
# yum install -y docker kubelet kubeadm kubectl kubernetes-cni
# systemctl enable docker && systemctl start docker
# systemctl enable kubelet && systemctl start kubelet

Kubernetes的初始化

执行 “kubeadm init” 命令。如果安装成功,

您的 Kubernetes 主服务器已成功初始化!

如果失败,可以通过执行 kubeadm reset 命令将状态重置为初始化前的状态。

# kubeadm init
[root@centos-master kube]# kubeadm init
[kubeadm] WARNING: kubeadm is in beta, please do not use it for production clusters.
[init] Using Kubernetes version: v1.6.4
[init] Using Authorization mode: RBAC
[preflight] Running pre-flight checks
[preflight] WARNING: hostname "centos-master" could not be reached
[preflight] WARNING: hostname "centos-master" lookup centos-master on 192.168.121.1:53: no such host
[certificates] Generated CA certificate and key.
[certificates] Generated API server certificate and key.
[certificates] API Server serving cert is signed for DNS names [centos-master kubernetes kubernetes.default kubernetes.default.svc kubernetes.default.svc.cluster.local] and IPs [10.96.0.1 192.168.121.9]
[certificates] Generated API server kubelet client certificate and key.
[certificates] Generated service account token signing key and public key.
[certificates] Generated front-proxy CA certificate and key.
[certificates] Generated front-proxy client certificate and key.
[certificates] Valid certificates and keys now exist in "/etc/kubernetes/pki"
[kubeconfig] Wrote KubeConfig file to disk: "/etc/kubernetes/admin.conf"
[kubeconfig] Wrote KubeConfig file to disk: "/etc/kubernetes/kubelet.conf"
[kubeconfig] Wrote KubeConfig file to disk: "/etc/kubernetes/controller-manager.conf"
[kubeconfig] Wrote KubeConfig file to disk: "/etc/kubernetes/scheduler.conf"
[apiclient] Created API client, waiting for the control plane to become ready
[apiclient] All control plane components are healthy after 69.402003 seconds
[apiclient] Waiting for at least one node to register
[apiclient] First node has registered after 2.624214 seconds
[token] Using token: 4b0978.d0855f49cbe81a34
[apiconfig] Created RBAC rules
[addons] Created essential addon: kube-proxy
[addons] Created essential addon: kube-dns

Your Kubernetes master has initialized successfully!

To start using your cluster, you need to run (as a regular user):

  sudo cp /etc/kubernetes/admin.conf $HOME/
  sudo chown $(id -u):$(id -g) $HOME/admin.conf
  export KUBECONFIG=$HOME/admin.conf

You should now deploy a pod network to the cluster.
Run "kubectl apply -f [podnetwork].yaml" with one of the options listed at:
  http://kubernetes.io/docs/admin/addons/

You can now join any number of machines by running the following on each node
as root:

  kubeadm join --token 4b0978.d0855f49cbe81a34 192.168.121.9:6443
# 

设置环境变量 KUBECONFIG。也将环境变量的设置添加到 /root/.bash_profile。

# export KUBECONFIG=/etc/kubernetes/admin.conf
# vi /root/.bash_profile

因为需要在稍后加入minion时使用,所以请记下以下内容。token会根据环境的不同而异。

  kubeadm join --token 4b0978.d0855f49cbe81a34 192.168.121.9:6443

安装 Pod 网络

从 Networking and Network Policy 插件中选择一个网络进行安装。我们这里选择安装 Weave Net。

# kubectl apply -f https://git.io/weave-kube-1.6

确认行动

我会先确认一下主人是否正在运行。

# kubectl get nodes
NAME            STATUS    AGE       VERSION
centos-master   Ready     1m       v1.6.4

我会确认 pod 是否正在运行。需要一些时间才能达到全部运行状态。

# kubectl get pods --all-namespaces
NAMESPACE     NAME                                    READY     STATUS    RESTARTS   AGE
kube-system   etcd-centos-master                      1/1       Running   0          3m
kube-system   kube-apiserver-centos-master            1/1       Running   0          2m
kube-system   kube-controller-manager-centos-master   1/1       Running   0          2m
kube-system   kube-dns-3913472980-6qlgm               3/3       Running   0          3m
kube-system   kube-proxy-7qwjg                        1/1       Running   0          3m
kube-system   kube-scheduler-centos-master            1/1       Running   0          2m
kube-system   weave-net-wdpbh                         2/2       Running   0          1m

小黄人的配置

进行minion的设置。以下是minion-1的设置。请同样设置minion-2和minion-3。

小黄人登录了

使用主机登录到 minion-1。
用户名为 kube,密码为 kube。
在 minion-1 上以 root 用户身份安装 kube。

$ ssh kube@192.168.122.65
kube@192.168.122.65's password: kube
$ sudo su -
[sudo] password for kube: kube
#

Kubernetes的安装

请按照主节点的设置,在从节点上执行以下步骤。请参考主节点的步骤。

    • kubernet のリポジトリの設定

 

    • /etc/sysctl.d/k8s.conf の設定

 

    • /etc/hosts の設定

 

    • ファイアウォールの無効化

 

    • SELinux の無効化

 

    kubernetes のインストール

增加小黄人。

在 Kubernetes 初始化时,执行先前记下的 join 指令。

# kubeadm join --token 4b0978.d0855f49cbe81a34 192.168.121.9:6443

登录主服务器并确认minion-1已经添加成功。需要一段时间来实现Ready,Running状态。

# ssh kube@192.168.122.9
kube@192.168.122.9's password: kube
# sudo su -
[sudo] password for kube: kube
# kubectl get nodes
NAME              STATUS    AGE       VERSION
centos-master     Ready     1h        v1.6.4
centos-minion-1   Ready     1m        v1.6.4
# kubectl get pods --all-namespaces
NAMESPACE     NAME                                    READY     STATUS    RESTARTS   AGE
kube-system   etcd-centos-master                      1/1       Running   1          12m
kube-system   kube-apiserver-centos-master            1/1       Running   1          12m
kube-system   kube-controller-manager-centos-master   1/1       Running   1          12m
kube-system   kube-dns-3913472980-6qlgm               3/3       Running   0          17m
kube-system   kube-proxy-27c8w                        1/1       Running   0          59s
kube-system   kube-proxy-7qwjg                        1/1       Running   1          17m
kube-system   kube-scheduler-centos-master            1/1       Running   1          12m
kube-system   weave-net-pvqf3                         2/2       Running   0          59s
kube-system   weave-net-wdpbh                         2/2       Running   0          6m

确认集群配置

当您安装了Master和Minion后,最终的配置将如下所示。在Master上执行操作。

# kubectl get nodes
NAME              STATUS    AGE       VERSION
centos-master     Ready     38m       v1.6.4
centos-minion-1   Ready     22m       v1.6.4
centos-minion-2   Ready     10m       v1.6.4
centos-minion-3   Ready     1m        v1.6.4
# kubectl get pods --all-namespaces
NAMESPACE     NAME                                    READY     STATUS    RESTARTS   AGE
kube-system   etcd-centos-master                      1/1       Running   1          33m
kube-system   kube-apiserver-centos-master            1/1       Running   1          33m
kube-system   kube-controller-manager-centos-master   1/1       Running   1          33m
kube-system   kube-dns-3913472980-6qlgm               3/3       Running   0          38m
kube-system   kube-proxy-1g22c                        1/1       Running   0          10m
kube-system   kube-proxy-27c8w                        1/1       Running   0          22m
kube-system   kube-proxy-29q4c                        1/1       Running   0          1m
kube-system   kube-proxy-7qwjg                        1/1       Running   1          38m
kube-system   kube-scheduler-centos-master            1/1       Running   1          33m
kube-system   weave-net-0dvs3                         2/2       Running   1          10m
kube-system   weave-net-kjlj5                         2/2       Running   1          1m
kube-system   weave-net-pvqf3                         2/2       Running   1          22m
kube-system   weave-net-wdpbh                         2/2       Running   0          28m

仪表盘的安装

在主服务器上安装显示Pod列表等的仪表板。
以下所有操作都在主服务器上执行。

安裝儀表板。

# kubectl create -f https://git.io/kube-dashboard

安装 nginx

为了从主机访问仪表盘,我们将安装nginx。我认为如果进行Kubernetes认证设置,可以直接连接到主服务的API服务器并显示仪表盘,但是我不知道如何进行设置。

需要在/etc/yum.repo.d/nginx.repo中配置nginx仓库。

# vi /etc/yum.repo.d/nginx.repo
[nginx]
name=nginx repo
baseurl=http://nginx.org/packages/centos/7/$basearch/
gpgcheck=0
enabled=1

安装Nginx。

# yum install -y nginx

将反向代理设置添加到nginx配置中。
在/etc/nginx/nginx.conf的http设置中添加以下内容。

    server {
        listen 18001;
        location / {
            proxy_pass http://localhost:8001;
        }
    }

启动nginx。

# systemctl start nginx
# systemctl enable nginx

启动 Kubernetes 的代理。在前台运行。

# kube proxy
Starting to serve on 127.0.0.1:8001

当以这种状态,通过主机浏览器访问 http://192.168.121.9:18001/ui,将显示仪表盘。

请以中国本土的方式重述以下内容,只需提供一个选项:

参考 -> 参考一下

    • https://kubernetes.io/docs/getting-started-guides/kubeadm/

 

    • https://kubernetes.io/docs/getting-started-guides/centos/centos_manual_config/

 

    https://github.com/kubernetes/dashboard
广告
将在 10 秒后关闭
bannerAds