【无标题】

1.检查操作系统的版本(推荐使用7.5以上的版本)

cat /etc/redhat-release

2.主机名的解析,为了方便后面集群节点间的直接调用,在/etc/hosts文件添加下面信息

192.168.225.130 master

192.168.225.131 node1

192.168.225.132 node2

配置完成后使用ping命名查看是否配置正确 

ping master

3.时间同步

kubernetes要求集群中的节点时间必须精确一致,这里直接使用chronyd服务从网络同步时间

#启动chronyd服务

systemctl start chronyd

#设置chronyd服务开机启动

systemctl enable chronyd

4.禁用iptables和firewalld服务

kubernetes和docker在运行中会产生大量的iptables规则,为了不让系统规则和他们混淆,直接关闭系统的防火墙

#关闭firewalld服务

systemctl stop firewalld

#禁止firewalld服务开机启动

systemctl disable firewalld

#-----------------------------

#关闭iptables服务

systemctl stop iptables

#禁止iptables服务开机启动

systemctl disable iptables

5.禁用selinux

selinux是linux系统的一个安全服务,不关闭会产生各种各样的问题

编辑/etc/selinux/config文件,修改SELINUX的值为disabled,修改后重启linux服务

 6.禁用swap分区

swap分区指的是虚拟内存分区,它的作用是在物理内存使用完后,将磁盘空间虚拟成内存使用。

启动swap设备会对系统性能产生非常负面的影响,因此kubernetes要求每个节点都要禁用swap分区。

编辑/etc/fstab,注释掉swap分区一行

7.修改linux内核参数

编辑/etc/sysctl.d/kubernetes.conf文件,添加如下配置

net.bridge.bridge-nf-call-ip6tables = 1

net.bridge.bridge-nf-call-iptables = 1

net.ipv4.ip.forward = 1

重新加载配置

sysctl -p

加载网桥过滤模块

modprobe br_netfilter

查看网桥过滤模块是否加载成功

lsmod | grep br_netfilter

  1. 配置ipvs功能

在kubernetes中service有两种代理模型,一种是基于iptables的,一种是基于ipvs的,两者比较的话,ipvs性能明显要高一些,但是如果要使用它,需要手动载入ipvs模块

安装ipset和ipvsadm

yum install ipset ipvsadmin -y

#如果提示No package ipvsadmin available.需要使用 yum install ipvsadm

yum install ipvsadm

添加需要加载的模块写入脚本文件 /etc/sysconfig/modules/ipvs.modules

modprobe -- ip_vs

modprobe -- ip_vs_rr

modprobe -- ip_vs_wrr

modprobe -- ip_vs_sh

modprobe -- nf_conntrack_ipv4

添加脚本文件执行权限

chmod +x /etc/sysconfig/modules/ipvs.modules

执行脚本文件

/bin/bash /etc/sysconfig/modules/ipvs.modules

查看模块是否加载成功

lsmod | grep -e ip_vs -e nf_conntrack_ipv4

9. 重启服务器

reboot

10.查看配置是否生效

selinux 和 swap 是否都已经禁用

#查看selinux状态

getenforce

#查看内存使用情况

free -m

二、组件的安装(docker、kubeadm、kubelet、kubectl)

1.docker的安装

#切换镜像源

wget https://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo -O /etc/yum.repos.d/docker-ce.repo

#查看当前镜像中支持的docker版本

yum list docker-ce --showduplicates

#安装指定版本的

docker-ce yum install --setopt=obsoletes=0 docker-ce-18.06.3.ce-3.el7 -y

#添加docker的配置文件 /etc/docker/daemon.json

{

        "exec-opts" : ["native.cgroupdriver=systemd"],

        "registry-mirrors": [ "https://k1ktap5m.mirror.aliyuncs.com"]

}

#启动

docker systemctl start docker

#设置docker开机自启

systemctl enable docker

2. 安装kubernetes组件

#切换国内镜像源

#编辑/etc/yum.repos.d/kubernetes.repo,添加下面配置

[kubernetes]

name=Kubernetes

baseurl=http://mirrors.aliyun.com/kubernetes/yum/repos/kubernetes-el7-x86_64

enabled=1

gpgcheck=0 r

epo_gpgcheck=0

gpgkey=http://mirrors.aliyun.com/kubernetes/yum/doc/yum-key.gpg http://mirrors.aliyun.com/kubernetes/yum/doc/rpm-package-key.gpg

#安装kubeadm、kubelet、kubectl

yum install --setopt=obsoletes=0 kubeadm-1.17.4-0 kubelet-1.17.4-0 kubectl-1.17.4-0 -y

#配置kubelet的cgroup

#编辑/etc/sysconfig/kubelet,添加如下配置

KUBELET_CGROUP_ARGS="--cgroup-driver=systemd"

KUBE_PROXY_MODE="ipvs"

#设置开机自启

systemctl enable kubelet

3.准备集群镜像

3.1 查看所需镜像名称和版本

kubeadm config images list

3.2 由于网络原因,需要先从阿里云镜像仓库中下载镜像然后重新命名镜像名称

编写脚本文件(k8simages.sh)

#!/bin/bash
images=(
    kube-apiserver:v1.17.4
    kube-controller-manager:v1.17.4
    kube-scheduler:v1.17.4
    kube-proxy:v1.17.4
    pause:3.1
    etcd:3.4.3-0
    coredns:1.6.5
)
 
for imageName in ${images[@]} ; do
    docker pull registry.cn-hangzhou.aliyuncs.com/google_containers/$imageName
    docker tag registry.cn-hangzhou.aliyuncs.com/google_containers/$imageName k8s.gcr.io/$imageName
    docker rmi registry.cn-hangzhou.aliyuncs.com/google_containers/$imageName
done

增加脚本文件的执行权限

chmod +x k8simages.sh

 执行脚本

./k8simages.sh

查看拉取后的镜像

docker images

4.集群初始化(只需在master节点上执行即可)

--apiserver-advertise-address 的值为你的master节点的ip地址

kubeadm init --kubernetes-version=v1.17.4 \ --pod-network-cidr=10.244.0.0/16 \ --service-cidr=10.96.0.0/12 \ --apiserver-advertise-address=192.168.225.130

完成后给出如下提示

4.1 创建必要文件

mkdir -p $HOME/.kube
sudo cp -i /etc/kubernetes/admin.conf $HOME/.kube/config
sudo chown $(id -u):$(id -g) $HOME/.kube/config

4.2 将node节点加入到集群中(根据提示到node节点执行命令)

kubeadm join 192.168.225.130:6443 --token k0rvxt.rejwm1apuipgoi71 \
     --discovery-token-ca-cert-hash sha256:f202c7c57bad77f660ddffd2c827d10532ea77ce3347d629424a1e9e27d689fe 

加入后结果

4.3 网络插件的安装 flannel (只需在master节点执行)

#获取flannel
wget https://raw.githubusercontent.com/coreos/flannel/master/Documentation/kube-flannel.yml
#使用配置文件启动flannel
kubectl apply -f kube-flannel.yml

4.4 查看集群状态

kubectl get nodes

三台都是Ready状态表示成功

#如果长时间为NotReady 状态,需要修改/var/lib/kubelet/kubeadm-flags.env,删除 --network-plugin=cni
vim /var/lib/kubelet/kubeadm-flags.env
#重新启动
systemctl daemon-reload
systemctl restart kubelet

查看所有pod的状态

kubectl get pods --all-namespaces

三、遇到的问题

1. 使用pod 的ip 无法在集群中的其他节点上访问的问题?

这个是flannel安装的问题,需要重新安装正确的flannel版本。

2.cluster-ip无法访问的问题?

这里需要更改kube-proxy-xxx 的网络模式

#将mode改为'ipvs'
[root@master ~]# kubectl edit cm kube-proxy -n kube-system
...
ipvs:
      excludeCIDRs: null
      minSyncPeriod: 0s
      scheduler: ""
      strictARP: false
      syncPeriod: 30s
    kind: KubeProxyConfiguration
    metricsBindAddress: 127.0.0.1:10249
    mode: "ipvs"
 
#更改完成之后删除掉以前的kube-proxy-xxxx,删除后kubectl会自动生成新的pod
kubectl delete pod kube-proxy-xxxx -n kube-system

还需要更改网卡设置Checksum offloading

#查看网卡的checksum是否关闭
[root@master ~]# ethtool -k flannel.1 | grep checksum
rx-checksumming: on
tx-checksumming: on     ##### 当前为 on
    tx-checksum-ipv4: off [fixed]
    tx-checksum-ip-generic: on    ##### 当前为 on
    tx-checksum-ipv6: off [fixed]
    tx-checksum-fcoe-crc: off [fixed]
    tx-checksum-sctp: off [fixed]
 
#暂时关闭
[root@master ~]# ethtool -K flannel.1 tx-checksum-ip-generic off  
 
#永久关闭
[root@master ~]# vi /etc/systemd/system/k8s-flannel-tx-checksum-off.service
[Unit]
Description=Turn off checksum offload on flannel.1
After=sys-devices-virtual-net-flannel.1.device
 
[Install]
WantedBy=sys-devices-virtual-net-flannel.1.device
 
[Service]
Type=oneshot
ExecStart=/sbin/ethtool -K flannel.1 tx-checksum-ip-generic off
 
#开机自启和启动服务命令
[root@master ~]# systemctl enable k8s-flannel-tx-checksum-off
 
[root@master ~]# systemctl start  k8s-flannel-tx-checksum-off

到此Kubernetes 集群的安装就ok了,快去试试吧!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值