container

kubeadm安装Kubernetes集群

使用kubeadm快速部署Kubernetes(v1.13.1)集群

  • Kubernetes技术已经成为原生云技术的事实标准,它是目前基础软件领域最为热门的分布式调度和管理平台。
  • Kubernetes 1.13 的核心特性包括:利用 kubeadm 简化集群管理、容器存储接口(CSI )以及将 CoreDNS 作为默认 DNS 。

节点环境配置

  • 一个master节点,两个node节点,操作系统均为CentOS 7.5。4核,4G,40G,无swap。
    所有操作均以root用户进行。
节点           主机名                 IP                组件
master         master.s4lm0x.com    172.16.183.142    kubeadm,kubelet,docker,kubectl
node01         node01.s4lm0x.com    172.16.183.143    kubeadm,kubelet,docker
node02         node02.s4lm0c.com    172.16.183.144    kubeadm,kubelet,docker

在各节点关闭Firewalld、SELinux,并禁止开机自启

# systemctl stop firewalld
# systemctl disable firewalld
# setenforce 0
# sed -i "s/SELINUX=enforcing/SELINUX=disabled/g" /etc/selinux/config    

设定/etc/hosts解析到所有集群主机

172.16.183.142    master    master.s4lm0x.com
172.16.183.142    node01    node01.s4lm0x.com
172.16.183.142    node02    node02.s4lm0x.com

在个节点中配置yum源

docker源

[docker-ce-stable]
name=Docker CE Stable - $basearch
baseurl=https://mirrors.aliyun.com/docker-ce/linux/centos/7/$basearch/stable
enabled=1
gpgcheck=1
gpgkey=https://mirrors.aliyun.com/docker-ce/linux/centos/gpg

Kubernetes源

[Kubernetes-stable]
name=Kubernetes Stable
baseurl=https://mirrors.aliyun.com/kubernetes/yum/repos/kubernetes-el7-x86_64/
enabled=1
gpgcheck=0

设置docker所需参数

# modprobe br_netfilter
# cat << EOF | tee /etc/sysctl.d/k8s.conf
net.ipv4.ip_forward = 1
net.bridge.bridge-nf-call-ip6tables = 1
net.bridge.bridge-nf-call-iptables = 1
EOF
# sysctl -p /etc/sysctl.d/k8s.conf

启用ipvs内核模块

  • 创建内核模块载入脚本/etc/sysconfig/modules/ipvs.modules,设定自动载入的内核模块。如下:
#!/bin/bash
ipvs_modules_dir="/usr/lib/modules/$(uname -r)/kernel/net/netfilter/ipvs"
for i in $(ls $ipvs_modules_dir | sed  -r 's@(.*).ko.xz@\1@'); do
    /sbin/modinfo -F filename $i  &> /dev/null
    if [ $? -eq 0 ]; then
        /sbin/modprobe $i
    fi
done
  • 修改文件权限,并手动为当前系统加载内核模块:
# chmod +x /etc/sysconfig/modules/ipvs.modules
# bash chmod +x /etc/sysconfig/modules/ipvs.modules

配置时间同步服务

  • 在所有节点安装chrony,并将master作为时间服务器,node节点同步master节点的时间。
# yum install -y chrony
# vim /etc/chrony.conf
    将3-6行注释,并在其后加入如下行,node节点仅需执行下面的这步操作
server master.s4lm0x.com iburst
    将第26行改为如下
allow 172.16.0.0/24
    将大概是第29行前面的#去掉,如下
local stratum 10
  • 保存退出之后,启动并设置其开机自启动。
# systemctl start chronyd
# systemctl enable chronyd
  • 查看时间同步情况
# timedatectl

在master节点安装kubeadm、kubelet、kubectl、docker,并初始化

  • kubelet无需此时启动,设置开机自启动即可
# yum install -y kubeadm kubelet kubectl docker-ce
# systemctl enable kubelet docker
# systemctl start docker
# kubeadm init --pod-network-cidr=10.244.0.0/16 --service-cidr=10.96.0.0/12 --ignore-preflight-errors=SystemVerification --kubernetes-version=v1.13.1
  • --kubernetes-version:指定要部署的Kubenretes程序版本,要与当前的kubeadm支持的版本保持一致
  • --pod-network-cidr:指定Pod创建时分配使用的网络地址,通常应该与要部署使用的网络插件(例如flannel等)的默认设定保持一致,10.244.0.0/16是flannel默认使用的网络。
  • --service-cidr:指定为Service分配使用的网络地址,它由kubernetes管理,默认即为10.96.0.0/12。
  • --ignore-preflight-errors:SystemVerification为忽略docker错误,当前通过Kubernetes充分验证的docker版本为18.06,系统中通过yum直接安装的docker为18.09.0版。

需要注意的是,命令运行结束后,可将kubeadm jion这一段记录,以便node节点加入集群

kubeadm jion

  • 如果没有保存,使用如下命令重新创建node节点加入集群的命令
# kubeadm token create --print-join-command

复制认证为Kubernetes系统管理员的配置文件到root用户家目录

# mkdir -p $HOME/.kube
# cp -i /etc/kubernetes/admin.conf $HOME/.kube/config

添加fannel网络附件,并开启 DirectRouting(替代默认的 vxlan)

  • kube-flannel.yaml 中 增加一行 "DirectRouting": true
# wget https://raw.githubusercontent.com/coreos/flannel/master/Documentation/kube-flannel.yml
# vim kube-flannel.yaml
...
net-conf.json: |
    {
      "Network": "10.244.0.0/16",
      "Backend": {
        "DirectRouting": true,
        "Type": "vxlan"
      }
    }
...
# kubectl apply -f kube-flannel.yml

node节点安装kubeadm、kubelet、docker,并加入集群

# yum install -y kubeadm kubelet docker-ce
# systemctl enable kubelet docker
# systemctl start docker
# kubeadm join 172.16.183.142:6443 --token ypi0is.j4fy9wdv0zk2r8da --discovery-token-ca-cert-hash sha256:9df753c8e3d7d09de042248b305cf3c59c506096c355bb2eab7b7d576da898de

验证节点是否就绪

# kubectl get nodes

参考

kubernetes.io

微信扫一扫,向我赞赏

微信扫一扫,向我赞赏

微信扫一扫,向我赞赏

支付宝扫一扫,向我赞赏

回复

This is just a placeholder img.