分享web开发知识

注册/登录|最近发布|今日推荐

主页 IT知识网页技术软件开发前端开发代码编程运营维护技术分享教程案例
当前位置:首页 > 前端开发

CentOS部署Kubernetes1.13集群-1(使用kubeadm安装K8S)

发布时间:2023-09-06 02:29责任编辑:蔡小小关键词:暂无标签

参考:https://www.kubernetes.org.cn/4956.html

1.准备

说明:准备工作需要在集群所有的主机上执行


1.1系统配置

在安装之前,需要先做如下准备。三台CentOS主机如下:

cat /etc/hosts192.168.0.19 tf-01192.168.0.20 tf-02192.168.0.21 tf-03

如果各个主机启用了防火墙,需要开放Kubernetes各个组件所需要的端口,可以查看Installing kubeadm中的”Check required ports”一节。 这里简单起见在各节点禁用防火墙:

systemctl stop firewalldsystemctl disable firewalld

禁用SELINUX:

setenforce 0vi /etc/selinux/configSELINUX=disabled

创建/etc/sysctl.d/k8s.conf文件,添加如下内容:

net.bridge.bridge-nf-call-ip6tables = 1net.bridge.bridge-nf-call-iptables = 1net.ipv4.ip_forward = 1

执行命令使修改生效。

modprobe br_netfiltersysctl -p /etc/sysctl.d/k8s.conf

1.2kube-proxy开启ipvs的前置条件

   由于ipvs已经加入到了内核的主干,所以为kube-proxy开启ipvs的前提需要加载以下的内核模块:

ip_vsip_vs_rrip_vs_wrrip_vs_shnf_conntrack_ipv4

在所有的Kubernetes节点上执行以下脚本:
cat > /etc/sysconfig/modules/ipvs.modules <<EOF#!/bin/bashmodprobe -- ip_vsmodprobe -- ip_vs_rrmodprobe -- ip_vs_wrrmodprobe -- ip_vs_shmodprobe -- nf_conntrack_ipv4EOFchmod 755 /etc/sysconfig/modules/ipvs.modules && bash /etc/sysconfig/modules/ipvs.modules && lsmod | grep -e ip_vs -e nf_conntrack_ipv4

上面脚本创建了的/etc/sysconfig/modules/ipvs.modules文件,保证在节点重启后能自动加载所需模块。

使用lsmod | grep -e ip_vs -e nf_conntrack_ipv4命令查看是否已经正确加载所需的内核模块。

lsmod | grep -e ip_vs -e nf_conntrack_ipv4

接下来还需要确保各个节点上已经安装了ipset软件包yum install ipset。 为了便于查看ipvs的代理规则,最好安装一下管理工具ipvsadm yum install ipvsadm。

yum install ipset

ipvsadm yum install ipvsadm

如果以上前提条件如果不满足,则即使kube-proxy的配置开启了ipvs模式,也会退回到iptables模式

1.3安装Docker

Kubernetes从1.6开始使用CRI(Container Runtime Interface)容器运行时接口。默认的容器运行时仍然是Docker,使用的是kubelet中内置dockershim CRI实现。

安装docker的yum源:

yum install -y yum-utils device-mapper-persistent-data lvm2yum-config-manager ????--add-repo ????https://download.docker.com/linux/centos/docker-ce.repo

查看最新的Docker版本:

yum list docker-ce.x86_64 ?--showduplicates |sort -rdocker-ce.x86_64 ???????????3:18.09.0-3.el7 ????????????????????docker-ce-stabledocker-ce.x86_64 ???????????18.06.1.ce-3.el7 ???????????????????docker-ce-stabledocker-ce.x86_64 ???????????18.06.0.ce-3.el7 ???????????????????docker-ce-stabledocker-ce.x86_64 ???????????18.03.1.ce-1.el7.centos ????????????docker-ce-stabledocker-ce.x86_64 ???????????18.03.0.ce-1.el7.centos ????????????docker-ce-stabledocker-ce.x86_64 ???????????17.12.1.ce-1.el7.centos ????????????docker-ce-stabledocker-ce.x86_64 ???????????17.12.0.ce-1.el7.centos ????????????docker-ce-stabledocker-ce.x86_64 ???????????17.09.1.ce-1.el7.centos ????????????docker-ce-stabledocker-ce.x86_64 ???????????17.09.0.ce-1.el7.centos ????????????docker-ce-stabledocker-ce.x86_64 ???????????17.06.2.ce-1.el7.centos ????????????docker-ce-stabledocker-ce.x86_64 ???????????17.06.1.ce-1.el7.centos ????????????docker-ce-stabledocker-ce.x86_64 ???????????17.06.0.ce-1.el7.centos ????????????docker-ce-stabledocker-ce.x86_64 ???????????17.03.3.ce-1.el7 ???????????????????docker-ce-stabledocker-ce.x86_64 ???????????17.03.2.ce-1.el7.centos ????????????docker-ce-stabledocker-ce.x86_64 ???????????17.03.1.ce-1.el7.centos ????????????docker-ce-stabledocker-ce.x86_64 ???????????17.03.0.ce-1.el7.centos ????????????docker-ce-stable

Kubernetes 1.12已经针对Docker的1.11.1, 1.12.1, 1.13.1, 17.03, 17.06, 17.09, 18.06等版本做了验证,需要注意Kubernetes 1.12最低支持的Docker版本是1.11.1。Kubernetes 1.13对Docker的版本依赖方面没有变化。 我们这里在各节点安装docker的18.06.1版本。

yum makecache fastyum install -y --setopt=obsoletes=0 ??docker-ce-18.06.1.ce-3.el7systemctl start dockersystemctl enable docker

确认一下iptables filter表中FOWARD链的默认策略(pllicy)为ACCEPT。

iptables -nvLChain INPUT (policy ACCEPT 263 packets, 19209 bytes) pkts bytes target ????prot opt in ????out ????source ??????????????destinationChain FORWARD (policy ACCEPT 0 packets, 0 bytes) pkts bytes target ????prot opt in ????out ????source ??????????????destination ???0 ????0 DOCKER-USER ?all ?-- ?* ?????* ??????0.0.0.0/0 ???????????0.0.0.0/0 ???0 ????0 DOCKER-ISOLATION-STAGE-1 ?all ?-- ?* ?????* ??????0.0.0.0/0 ???????????0.0.0.0/0 ???0 ????0 ACCEPT ????all ?-- ?* ?????docker0 ?0.0.0.0/0 ???????????0.0.0.0/0 ???????????ctstate RELATED,ESTABLISHED ???0 ????0 DOCKER ????all ?-- ?* ?????docker0 ?0.0.0.0/0 ???????????0.0.0.0/0 ???0 ????0 ACCEPT ????all ?-- ?docker0 !docker0 ?0.0.0.0/0 ???????????0.0.0.0/0 ???0 ????0 ACCEPT ????all ?-- ?docker0 docker0 ?0.0.0.0/0 ???????????0.0.0.0/0

Docker从1.13版本开始调整了默认的防火墙规则,禁用了iptables filter表中FOWARD链,这样会引起Kubernetes集群中跨Node的Pod无法通信。但这里通过安装docker 1806,发现默认策略又改回了ACCEPT,这个不知道是从哪个版本改回的,因为我们线上版本使用的1706还是需要手动调整这个策略的。

2.使用kubeadm部署Kubernetes


2.1 安装kubeadm和kubelet

下面在各节点安装kubeadm和kubelet:

cat <<EOF > /etc/yum.repos.d/kubernetes.repo[kubernetes]name=Kubernetesbaseurl=https://mirrors.aliyun.com/kubernetes/yum/repos/kubernetes-el7-x86_64enabled=1gpgcheck=0repo_gpgcheck=0gpgkey=https://mirrors.aliyun.com/kubernetes/yum/doc/yum-key.gpg ???????https://mirrors.aliyun.com/kubernetes/yum/doc/rpm-package-key.gpgEOF

注意:此处与参考的原文不同,原文用了google的资源,因为google联不上,此处改为aliyun,且不开启check(check=0)

yum makecache fastyum install -y kubelet kubeadm kubectl... Installed: ?kubeadm.x86_64 0:1.13.0-0 ???????????????????????????????????kubectl.x86_64 0:1.13.0-0 ??????????????????????????????????????????????????????????kubelet.x86_64 0:1.13.0-0Dependency Installed: ?cri-tools.x86_64 0:1.12.0-0 ?????????????????????????????????kubernetes-cni.x86_64 0:0.6.0-0 ??????????????????????????????????????????????????????socat.x86_64 0:1.7.3.2-2.el7

从安装结果可以看出还安装了cri-tools, kubernetes-cni, socat三个依赖:

  • 官方从Kubernetes 1.9开始就将cni依赖升级到了0.6.0版本,在当前1.12中仍然是这个版本
  • socat是kubelet的依赖
  • cri-tools是CRI(Container Runtime Interface)容器运行时接口的命令行工具

运行kubelet –help可以看到原来kubelet的绝大多数命令行flag参数都被DEPRECATED了,如:

......--address 0.0.0.0 ??The IP address for the Kubelet to serve on (set to 0.0.0.0 for all IPv4 interfaces and `::` for all IPv6 interfaces) (default 0.0.0.0) (DEPRECATED: This parameter should be set via the config file specified by the Kubelet‘s --config flag. See https://kubernetes.io/docs/tasks/administer-cluster/kubelet-config-file/ for more information.)......

而官方推荐我们使用–config指定配置文件,并在配置文件中指定原来这些flag所配置的内容。具体内容可以查看这里Set Kubelet parameters via a config file。这也是Kubernetes为了支持动态Kubelet配置(Dynamic Kubelet Configuration)才这么做的,参考Reconfigure a Node’s Kubelet in a Live Cluster。

kubelet的配置文件必须是json或yaml格式,具体可查看这里。

Kubernetes 1.8开始要求关闭系统的Swap,如果不关闭,默认配置下kubelet将无法启动。(如果不能关闭Swap,则需要修改kubelet的配置,下附)

关闭系统的Swap方法如下:

swapoff -a 

修改 /etc/fstab 文件,注释掉 SWAP 的自动挂载,使用free -m确认swap已经关闭。

vim /etc/fstab 

free -m

swappiness参数调整,修改/etc/sysctl.d/k8s.conf添加下面一行:

vm.swappiness=0

执行sysctl -p /etc/sysctl.d/k8s.conf使修改生效。

sysctl -p /etc/sysctl.d/k8s.conf

  

如果集群主机上还运行其他服务,关闭swap可能会对其他服务产生影响,则可以修改kubelet的配置去掉这个限制:

使用kubelet的启动参数–fail-swap-on=false去掉必须关闭Swap的限制。 修改/etc/sysconfig/kubelet,加入  KUBELET_EXTRA_ARGS=--fail-swap-on=false

KUBELET_EXTRA_ARGS=--fail-swap-on=false

  

2.2 使用kubeadm init初始化集群

在各节点开机启动kubelet服务:

  

  

  

  

  

  

  

  

  

  

  

  

  

CentOS部署Kubernetes1.13集群-1(使用kubeadm安装K8S)

原文地址:https://www.cnblogs.com/xianhan/p/10225639.html

知识推荐

我的编程学习网——分享web前端后端开发技术知识。 垃圾信息处理邮箱 tousu563@163.com 网站地图
icp备案号 闽ICP备2023006418号-8 不良信息举报平台 互联网安全管理备案 Copyright 2023 www.wodecom.cn All Rights Reserved