k8s centos7 引导 适用于最新版本

K8S 安装前置引导

k8s 安装需要三台服务器 其中为一台主节点 Master, 以及多台工作节点 Node, 这里指的是两台工作节点

这里假设以 VMware 启动三台模拟器作为运行环境,这里写明些注意点

  • 在 VMware 编辑 - 虚拟网 - 查看 net 桥接 - 查看网关以及子网掩码
  • 清华镜像源(百度)官方下载 centos7
  • 安装时最好 2 核 4G 的配置 当然多多益善
  • 安装版本为基础服务器即可
  • 要设置网络连接 在配置中 设置 IPV4 的地址 以上诉网关为基础 设置一个静态 IP,设置子网吗,网关,dns(网关地址),外面设置主机名,例如 k8s-master k8s-node01 k8s-node02 类推
  • k8s 命令参照 kubeadm kubectl 官网

系统镜像源 - 加速下载

推荐阿里镜像源,速度一般般吗,但是人家全啊,版本也新 阿里镜像源

  • centos
curl -o /etc/yum.repos.d/CentOS-Base.repo https://mirrors.aliyun.com/repo/Centos-7.repo
  • epel
curl -o /etc/yum.repos.d/epel.repo https://mirrors.aliyun.com/repo/epel-7.repo
  • elrepo 这个主要用来升级内核
yum install -y https://www.elrepo.org/elrepo-release-7.el7.elrepo.noarch.rpm
cp /etc/yum.repos.d/elrepo.repo /etc/yum.repos.d/elrepo.repo.bak
# 编辑 /etc/yum.repos.d/elrepo.repo 文件,在 mirrorlist= 开头的行前面加 # 注释掉;并将 elrepo.org/linux 替换为 mirrors.aliyun.com/elrepo 以下是快捷指令
sed -i 's/mirrorlist=/# mirrorlist=/g' /etc/yum.repos.d/elrepo.repo
sed -i 's/elrepo.org\/linux/mirrors.aliyun.com\/elrepo/g' /etc/yum.repos.d/elrepo.repo
  • kubernets - k8s
cat <<EOF > /etc/yum.repos.d/kubernetes.repo
[kubernetes]
name=Kubernetes
baseurl=https://mirrors.aliyun.com/kubernetes/yum/repos/kubernetes-el7-x86_64/
enabled=1
gpgcheck=1
repo_gpgcheck=1
gpgkey=https://mirrors.aliyun.com/kubernetes/yum/doc/yum-key.gpg https://mirrors.aliyun.com/kubernetes/yum/doc/rpm-package-key.gpg
EOF
  • docker-ce docker; containerd 加速
yum clean all -y && yum makecache fast -y
# 安装一些必要工具已经环境工具
yum install -y yum-utils device-mapper-persistent-data lvm2 net-tools vim
yum-config-manager --add-repo https://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
sed -i 's+download.docker.com+mirrors.aliyun.com/docker-ce+' /etc/yum.repos.d/docker-ce.repo
  • 最后配置完成执行以下命令
yum makecache fast -y

系统环境准备工作

  1. 升级内核

    uname -sr
    yum --disablerepo="*" --enablerepo="elrepo-kernel" list available
    yum -y --enablerepo=elrepo-kernel install kernel-ml
    sed -i 's/GRUB_DEFAULT=saved/GRUB_DEFAULT=0/g' /etc/default/grub
    grub2-mkconfig -o /boot/grub2/grub.cfg
    reboot #重启
    
  1. iptables 设置

    cat <<EOF | sudo tee /etc/modules-load.d/k8s.conf
    overlay
    br_netfilter
    EOF
    
    modprobe overlay
    modprobe br_netfilter
    
    # 设置所需的 sysctl 参数,参数在重新启动后保持不变
    cat <<EOF | sudo tee /etc/sysctl.d/k8s.conf
    net.bridge.bridge-nf-call-iptables  = 1
    net.bridge.bridge-nf-call-ip6tables = 1
    net.ipv4.ip_forward                 = 1
    EOF
    
    # 应用 sysctl 参数而不重新启动
    sudo sysctl --system -p
    
    # 查看 br_netfilter 和 overlay 是否被应用
    lsmod | grep br_netfilter && lsmod | grep overlay
    
    
  1. 安装docker

    # 上面的镜像准备工作已经将全部准备好 接下直接安装工作
    yum -y install docker-ce
    
    # 配置docker加速下载
    sudo tee /etc/docker/daemon.json <<-'EOF'
    {
      "exec-opts": ["native.cgroupdriver=systemd"],    
      "registry-mirrors": [
        "https://7koha918.mirror.aliyuncs.com",
        "https://hub-mirror.c.163.com"
      ]
    }
    EOF
    
    #启动并启用docker
    systemctl start docker && systemctl enable docker
    
    docker info
    
  1. 关闭防火墙

    systemctl stop firewalld && systemctl disable firewalld
    
  1. 主机名设置 解析(每个节点都要设置)

    hostnamectl set-hostname <hostname>
    
    # 例子
    hostnamectl set-hostname k8s-master
    # 将每个节点的对应ip互相映射
    cat >> /etc/hosts << EOF
    192.168.6.200 k8s-master
    192.168.6.201 k8s-node1
    192.168.6.202 k8s-node2
    EOF
    
  1. 时间同步

    yum install ntpdate -y && ntpdate time.windows.com
    
  1. 关闭 SELinux

    getenforce && setenforce 0
    
    # 开机也禁用
    sed -i 's/^SELINUX=enforcing$/SELINUX=permissive/' /etc/selinux/config
    
  1. 关闭 swap 分区

    sed -ri 's/.*swap.*/#&/' /etc/fstab && swapoff -a
    
  1. 启用ivps

    yum -y install ipset ipvsadm
    
    cat > /etc/sysconfig/modules/ipvs.modules <<EOF
    #!/bin/bash
    modprobe -- ip_vs
    modprobe -- ip_vs_rr
    modprobe -- ip_vs_wrr
    modprobe -- ip_vs_sh
    modprobe -- nf_conntrack
    EOF
    
    # 授权运行检查
    chmod 755 /etc/sysconfig/modules/ipvs.modules && bash /etc/sysconfig/modules/ipvs.modules && lsmod | grep -e ip_vs -e nf_conntrack_ipv4
    
  1. 重启

    reboot
    

k8s环境安装

  1. 安装K8S相关应用
# 查看支持的版本 最好安装最新版本的上一个版本 新的版本太坑了 例如最新是 1.26的话就安装 1.25的最后一个版本 如果想安装最新版本,一样支持
yum list kube* --showduplicates
# 安装
yum install -y kubelet-1.25.6 kubectl-1.25.6 kubeadm-1.25.6 --disableexcludes=kubernetes
# 检查所需的镜像资源 配置国内镜像 registry.cn-hangzhou.aliyuncs.com/google_containers 其中需要 记住 registry.cn-hangzhou.aliyuncs.com/google_containers/pause:* 这个镜像 * 代表版本号 后面会有用
kubeadm config images list --image-repository=registry.cn-hangzhou.aliyuncs.com/google_containers

# 启用 kubelet
systemctl enable kubelet && systemctl restart kubelet
  1. 安装中间桥接插件 cri-docker cri-docker地址 下载最新的例如centos7 文件带el

    # 下载可以本地下完上传或者直接 curl下载 例子
    curl -o ./cri-dockerd-0.3.1-3.el7.x86_64.rpm https://github.com/Mirantis/cri-dockerd/releases/download/v0.3.1/cri-dockerd-0.3.1-3.el7.x86_64.rpm
    
    # 编辑中间件相关环境 将上面的pause镜像配置进去  查找到--container-runtime-endpoint fd:// 在之后追加  --pod-infra-container-image=registry.cn-hangzhou.aliyuncs.com/google_containers/pause:3.8 追加前面有空格
    vim /usr/lib/systemd/system/cri-docker.service
    # 不使用上诉编辑方式也可以直接使用下面语句快速设置 记得要修改pause镜像版本
    sed -i 's/--container-runtime-endpoint fd:\/\//--container-runtime-endpoint fd:\/\/ --pod-infra-container-image=registry.cn-hangzhou.aliyuncs.com\/google_containers\/pause:3.8/g' /usr/lib/systemd/system/cri-docker.service
    
    # 启用 cri-docker
    systemctl start cri-docker && systemctl enable cri-docker
    
  1. 初始化master节点

    # 192.168.6.200 - 本机IP  K8S版本-v1.25.6 加速镜像 - registry.cn-hangzhou.aliyuncs.com/google_containers 驱动容器方式 unix:///var/run/cri-dockerd.sock
    kubeadm init  --apiserver-advertise-address=192.168.6.200  --image-repository=registry.cn-hangzhou.aliyuncs.com/google_containers  --kubernetes-version=v1.25.6 --service-cidr=10.96.0.0/12  --pod-network-cidr=10.244.0.0/16 --cri-socket=unix:///var/run/cri-dockerd.sock
    
    # 执行 加入后手工操作的部分 在完成后会有提示
    mkdir -p $HOME/.kube
    sudo cp -i /etc/kubernetes/admin.conf $HOME/.kube/config
    sudo chown $(id -u):$(id -g) $HOME/.kube/config
    
    export KUBECONFIG=/etc/kubernetes/admin.conf
    
    
  1. node节点加入

    # node 节点加入 驱动容器方式 unix:///var/run/cri-dockerd.sock 在加入完成后最后会有节点如何加入的命令行 由于是docker驱动 需要另外加入参数
    kubeadm join 192.168.6.200:6443 --token 54j9k3.udgq8fw7ttrdiy5j \
       --discovery-token-ca-cert-hash sha256:6b3fc2139c792e7d5a9676a433b3736e8dfe0778ca385a0d46fbd8288164da40 --cri-socket=unix:///var/run/cri-dockerd.sock
    # 上诉加入token失效后 可以在master节点用以下命令继续创建加入token
    kubeadm token create --print-join-command #临时有效
    kubeadm token create --ttl 0 --print-join-command # 永久有效
    
  1. 添加网络插件【必要】以上都完成后在完成这个不走才能让k8s正常运行 官方介绍 这里使用官方中的 Calico

    # 使用下面的命令可以查看到状态都是 Not Ready 需要完成下面的操作
    kubectl get nodes
    # 下载不要使用master分支 使用对应tag最新的稳定的分支 例如先最新是 3.25 https://raw.githubusercontent.com/projectcalico/calico/v3.25.0/manifests/calico.yaml 自己在 github中找 目录/manifests/calico.yaml 下面是例子下载, 也可以下载本地上传 文件还需要进一步修改
    
    curl -o ./calico.yaml https://raw.githubusercontent.com/projectcalico/calico/v3.25.0/manifests/calico.yaml
    
    # 修改部分参数 查找 CLUSTER_TYPE 然后在下面增加本地网卡 下面是大致情况 其中 ens33 可以用ifconfig查看到设置对应的值
    #- name: CLUSTER_TYPE
    #  value: "k8s,bgp"
    #- name: IP_AUTODETECTION_METHOD
    #  value: "interface=ens33"
    # 查找 CALICO_IPV4POOL_CIDR
    # 默认是注释的 默认的地址与我们 初始化 master的  --pod-network-cidr 值不一致,这个要取消注释,设置同一个值
    # - name: CALICO_IPV4POOL_CIDR
    #   value: "10.244.0.0/16"
    vim calico.yaml
    
    # 执行改修改好的 yaml 文件
    kubectl apply -f calico.yaml
    
    # 查看进度情况
    kubectl get pods -n kube-system -o wide
    
    #等所有都正常运行了 再次查看节点情况 都是 Ready
    kubectl get nodes
    
  1. 备注
# 如果安装过程出现异常等 可以进行重置  驱动容器方式 unix:///var/run/cri-dockerd.sock
kubeadm reset --cri-socket=unix:///var/run/cri-dockerd.sock
  1. 完毕

K8S测试

  • 使用 Nginx 进行基础测试

    # 创建 一个命名空间 
    kubectl create namespace dev
    # 运行一个 nginx
    kubectl create deployment nginx --image=nginx -n dev
    # 暴露端口访问 NodePort
    kubectl expose deployment nginx --port=80 --type=NodePort -n dev
    # 查看暴露端口以及运行情况
    kubectl get pods,svc -n dev
    
    # 最后外部访问 随便一个节点ip 加端口访问
    
    # 不需要使用可以删除 简单的将命名空间删除 内部的相关内容也会删除
    kubectl delete namespace dev
    
  • 完毕
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 221,820评论 6 515
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 94,648评论 3 399
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 168,324评论 0 360
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 59,714评论 1 297
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 68,724评论 6 397
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 52,328评论 1 310
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 40,897评论 3 421
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 39,804评论 0 276
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 46,345评论 1 318
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 38,431评论 3 340
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 40,561评论 1 352
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 36,238评论 5 350
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 41,928评论 3 334
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 32,417评论 0 24
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 33,528评论 1 272
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 48,983评论 3 376
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 45,573评论 2 359

推荐阅读更多精彩内容