1.docker安装:

# yum install -y yum-utils

# yum-config-manager     --add-repo https://download.docker.com/linux/centos/docker-ce.repo

# yum install -y docker-ce-20.10.7-3.el7 docker-ce-cli-20.10.7-3.el7.x86_64 containerd.io-1.4.9-3.1.el7

启动和设置开机自启:

# systemctl start docker && systemctl enable docker 

配置docker的cgroup驱动为systemd

# vim /etc/docker/daemon.json

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

# systemctl restart docker

2.kubernetes准备

1. 配置服务器主机名

# hostnamectl set-hostname worker01 && bash

2. 配置主机hosts文件

# vim /etc/hosts

添加如下内容:

192.168.123.120 worker01

3. 关闭交换分区swap,提升性能

临时关闭:

# swapoff -a   

永久关闭,注释swap挂载:

# sed -i 's/.*swap*./#&/' /etc/fstab

4. 修改内核参数

# modprobe br_netfilter

验证是否成功:

# lsmod | grep br_netfilter
br_netfilter           22256  0 
bridge                151336  2 br_netfilter,ebtable_broute 

# cat > /etc/sysctl.d/k8s.conf <<EOF

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

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

net.ipv4.ip_forward = 1

EOF

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

5. 关闭fIrewalld防火墙

# systemctl stop firewalld && systemctl disable firewalld

6. 关闭selinux

临时关闭:

# setenforce 0

永久关闭:

# sed -i 's/SELINUX=enforcing/SELINUX=disabled/g' /etc/selinux/config

7. 配置yum源

配置epel源:

# wget -O /etc/yum.repos.d/epel.repo http://mirrors.aliyun.com/repo/epel-7.repo

配置kubernetes源:        

# cat > /etc/yum.repos.d/kubernetes.repo <<EOF

[kubernetes]

name=Kubernetes

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

enabled=1

gpgcheck=0

EOF

8. 配置时间同步

# yum install -y ntpdate

#同步网络时间

# ntpdate cn.pool.ntp.org

配置计划任务同步时间

# crontab -e 
* */4 * * * /usr/sbin/ntpdate cn.pool.ntp.org

# systemctl restart crond

9. 开启ipvs

# cat > /etc/sysconfig/modules/ipvs.modules <<EOF

#!/bin/bash

ipvs_modules="ip_vs ip_vs_lc ip_vs_wlc ip_vs_rr ip_vs_wrr ip_vs_lblc ip_vs_lblcr  ip_vs_dh ip_vs_sh ip_vs_nq ip_vs_sed ip_vs_ftp nf_conntrack"

for kernel_module in \${ipvs_modules}; do

/sbin/modinfo -F filename \${kernel_module} > /dev/null 2>&1

if [ 0 -eq 0 ]; then

/sbin/modprobe \${kernel_module}

fi

done

EOF

# chmod 755 /etc/sysconfig/modules/ipvs.modules

# bash /etc/sysconfig/modules/ipvs.modules

# lsmod | grep ip_vs

ipvs是什么?

     ipvs(IP Virtual Server)实现了传输层负载均衡,也就是4层LAN交换,作为linux内核的一部分。ipvs可以将基于TCP和UDP的服务请求转发到真实服务器上,并使真实服务器的服务在单个IP地址上显示为虚拟服务。

ipvs和iptables模式之间有哪些差异:

     1.ipvs为大型集群提供了更好的可扩展性和性能

     2.ipvs支持比iptables更复杂的复制均衡算法(最小负载、最少连接、加权等)

     3.ipvs支持服务器健康检查和连接重试等功能。

3.kubernetes安装:

1. k8s初始化软件包:

# yum -y install kubelet-1.21.2 kubeadm-1.21.2 kubectl-1.21.2

# systemctl enable kubelet

注:

        kubeadm:是一个工具,用来初始化kubernetes集群。

        kubelet:安装在集群所以节点上,用于启动pod。

        kubectl:通过kubectl可以部署和管理应用,查看各种资源、创建、删除和更新各                                   种组件。

2. kubeadm初始化k8s集群:

# kubeadm init --config kubeadm-config.yaml

# mkdir -p $HOME/.kube

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

# chown $(id -u):$(id -g) $HOME/.kube/config

# kubectl get node
NAME       STATUS     ROLES                  AGE    VERSION
worker01   NotReady   control-plane,master   9m4s   v1.21.2

让节点可以运行pod:

# kubectl taint nodes worker01(节点名称) node-role.kubernetes.io/master-

# cat kubeadm-config.yaml 
apiVersion: kubeadm.k8s.io/v1beta2
kind: ClusterConfiguration
kubernetesVersion: v1.21.2
controlPlaneEndpoint: 192.168.123.120:6443
imageRepository: registry.aliyuncs.com/google_containers
apiServer:
  certSANs:
  - 192.168.123.120
networking:
  podSubnet: 172.16.0.0/16
  serviceSubnet: 172.10.0.0/16
---
apiVersion: kubeproxy.config.k8s.io/v1alpha1
kind: KubeProxyConfiguration
mode: ipvs

4.网络插件安装:

采用开源的网络方案:kube-ovn,它是基于OVN的kubernetes网络组件,提供了大量目前kubernetes,不具备的网络功能,方便后续kubevirt虚拟机网络操作。

kube-ovn安装:

1.下载安装脚本:

# wget https://raw.githubusercontent.com/kubeovn/kube-ovn/release-1.9/dist/images/install.sh

2.编辑install.sh根据自己实际情况修改:

REGISTRY="kubeovn"                     # 镜像仓库地址
VERSION="v1.9.1"                       # 镜像版本/Tag
POD_CIDR="10.16.0.0/16"                # 默认子网 CIDR 不要和 SVC/NODE/JOIN CIDR 重叠
SVC_CIDR="10.96.0.0/12"                # 需要和 apiserver 的 service-cluster-ip-range 保持一致
JOIN_CIDR="100.64.0.0/16"              # Pod 和主机通信网络 CIDR,不要和 SVC/NODE/ CIDR 重叠 
LABEL="node-role.kubernetes.io/master" # 部署 OVN DB 节点的标签
IFACE=""                               # 容器网络所使用的的宿主机网卡名,如果为空则使用 Kubernetes 中的 Node IP 所在网卡
TUNNEL_TYPE="geneve"                   # 隧道封装协议,可选 geneve 或 vxlan

3.执行安装脚本:

# chmod +x install.sh

# bash install.sh

4.查看:

5.参考网址:

一键安装 · kubeovn/kube-ovn Wiki · GitHub

kube-ovn/install.md at master · kubeovn/kube-ovn · GitHub

Logo

开源、云原生的融合云平台

更多推荐