关于容器:Oracle-Linux安装K8S集群

  1. 环境筹备
    装置Oracle 8.6,留神此处抉择 Minimal Install
  • 装置结束后执行命令装置一些必要组件。

    dnf update -y && reboot #更新零碎到最新
    dnf remove firewalld  #卸载不须要的组件
    dnf install vim wget nc socat tc ebtables iptables-* conntrack ipvsadm #装置必要组件
  • 显式加载br_netfilter模块:

    cat > /etc/rc.sysinit << EOF
    #!/bin/bash
    for file in /etc/sysconfig/modules/*.modules ; do
    [ -x \$file ] && \$file
    done
    EOF
    cat > /etc/sysconfig/modules/br_netfilter.modules << EOF
    modprobe br_netfilter
    EOF
    chmod +x /etc/sysconfig/modules/br_netfilter.modules
  • 调整零碎设置:

    sed -i 's/SELINUX=enforcing/SELINUX=disabled/g' /etc/selinux/config #敞开Selinux
    sed -i '/swap/s/^/#/' /etc/fstab #关闭系统替换分区
  • 容许 iptables 查看桥接流量:

    cat <<EOF | sudo tee /etc/modules-load.d/k8s.conf
    br_netfilter
    EOF
    
    cat <<EOF | sudo tee /etc/sysctl.d/k8s.conf
    net.bridge.bridge-nf-call-ip6tables = 1
    net.bridge.bridge-nf-call-iptables = 1
    EOF
    sudo sysctl --system
  • 容许流量转发:

    grep 'net.ipv4.ip_forward = 1' /etc/systcl.conf || echo 'net.ipv4.ip_forward = 1' >> /etc/sysctl.conf 
    sysctl -p
  • 棘手改下名字:

    hostnamectl set-hostname node0 #依照本人需要,在hosts外面加上其余节点的IP和名字
  1. 装置容器运行时
    最新的k8s1.24X版本曾经不再反对Docker Engine,这里选用containerd作为容器运行时。装置步骤参考 https://github.com/containerd… ,不再赘述。只需注意以下几点:
  • 间接依照Option 1: From the official binaries的指引装置,先装置containerd,配置systemd,再装置runc,最初装置CNI plugins
  • 须要手工创立/usr/local/lib/systemd/system/目录以搁置service文件。
  • 须要手工创立 /etc/containerd/目录,而后运行

    containerd config default > /etc/containerd/config.toml 

    生成配置文件。

  • /etc/containerd/config.toml中指定Cgroup驱动,而后重启containerd服务

    [plugins."io.containerd.grpc.v1.cri".containerd.runtimes.runc]
    ...
    [plugins."io.containerd.grpc.v1.cri".containerd.runtimes.runc.options]
      SystemdCgroup = true
  1. 装置k8s

k8s的官网文档提供了三种装置形式。通过实际,还是举荐应用无包管理器的形式。不论是yum 还是apt,采纳的源都是google的官网源。出于家喻户晓的起因,拜访起来十分麻烦,还是间接应用无包治理的形式。以下装置步骤间接从官网搬运过去:

  • 装置 crictlkubeadm/kubelet 容器运行时接口(CRI)所需)

    CRICTL_VERSION="v1.22.0"
    ARCH="amd64"
    curl -L "https://github.com/kubernetes-sigs/cri-tools/releases/download/${CRICTL_VERSION}/crictl-${CRICTL_VERSION}-linux-${ARCH}.tar.gz" | sudo tar -C $DOWNLOAD_DIR -xz
  • 装置 kubeadmkubeletkubectl 并增加 kubelet 零碎服务:

    RELEASE="$(curl -sSL https://dl.k8s.io/release/stable.txt)"
    ARCH="amd64"
    cd $DOWNLOAD_DIR
    sudo curl -L --remote-name-all https://storage.googleapis.com/kubernetes-release/release/${RELEASE}/bin/linux/${ARCH}/{kubeadm,kubelet,kubectl}
    sudo chmod +x {kubeadm,kubelet,kubectl}
    
    RELEASE_VERSION="v0.4.0"
    curl -sSL "https://raw.githubusercontent.com/kubernetes/release/${RELEASE_VERSION}/cmd/kubepkg/templates/latest/deb/kubelet/lib/systemd/system/kubelet.service" | sed "s:/usr/bin:${DOWNLOAD_DIR}:g" | sudo tee /etc/systemd/system/kubelet.service
    sudo mkdir -p /etc/systemd/system/kubelet.service.d
    curl -sSL "https://raw.githubusercontent.com/kubernetes/release/${RELEASE_VERSION}/cmd/kubepkg/templates/latest/deb/kubeadm/10-kubeadm.conf" | sed "s:/usr/bin:${DOWNLOAD_DIR}:g" | sudo tee /etc/systemd/system/kubelet.service.d/10-kubeadm.conf
  • 激活并启动 kubelet:

    systemctl enable --now kubelet

    此时,如果是采纳了虚拟机,就能够clone这台机器作为其余节点了。

4.初始化集群

  • 拉取相干镜像:

    kubeadm config images pull --image-repository k8s-gcr.m.daocloud.io  #基于所有人都晓得的起因,这里抉择了国内源
  • 批改containerd 配置:

    crictl img |grep pause #查看pause镜像名
    
    cat /etc/containerd/config.toml |grep pause #察看pause的镜像名。
    将 /etc/containerd/config.toml中 pause 镜像名批改为 crictl img |grep pause 的输入后果。
  • 初始化集群:

    kubeadm init --control-plane-endpoint 10.0.0.50 --pod-network-cidr=192.168.0.0/16  --image-repository k8s-gcr.m.daocloud.io --v=9 #其中control-plane-endpoint的值为管制主机的地址。--pod-network-cidr 按需配置。
  • 装置CNI插件Calico:

    kubectl create -f https://projectcalico.docs.tigera.io/manifests/tigera-operator.yaml
    kubectl create -f https://projectcalico.docs.tigera.io/manifests/custom-resources.yaml #默认应用192.168.0.0/16,如果不是,须要先把custom-resources.yaml下载下来,将 ipPools项中的值批改成理论值。
  • 察看一下集群状态:

    kubectl get nodes #个别过几分钟即可。

    等所有状态变为Ready即可。

  1. 其余
    想起来再增加。

评论

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

这个站点使用 Akismet 来减少垃圾评论。了解你的评论数据如何被处理