最精简kubernetes(1.15.1)(k8s)集群部署教程--基于CentOS 7

2024-02-23 15:32

本文主要是介绍最精简kubernetes(1.15.1)(k8s)集群部署教程--基于CentOS 7,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

一、k8s环境要求

  • 运行以下之一的一台或多台机器:
    • Ubuntu 16.04+
    • Debian 9
    • CentOS 7
    • RHEL 7
    • Fedora 25/26 (best-effort)
    • HypriotOS v1.0.1+
    • Container Linux (tested with 1800.6.0)
  • 每台机器2 GB或更多的RAM(任何更少的内存将为您的应用留下很小的空间)
  • 2个CPU或更多
  • 群集中所有计算机之间的网络连通
  • 每个节点有唯一主机名,MAC地址和product_uuid(一般只用关注主机名)
  • 端口在您的计算机上打开(这个一般都会满足)
  • 禁用Swap。必须禁用Swap才能使kubelet正常工作(Swap disabled)

二、开始安装(CentOS7)

修改hostname及hosts

  1. 修改机器主机名,我这里改为k8s-master、k8s-node1、k8s-node2、k8s-node3
    vi /etc/hostname
  2. 添加hosts
    vi /etc/hosts
  3. 修改完成后重启
  4. 重启后,各机器通过主机名可互相ping通 各节点能ping通

安装docker

docker版本需要和k8s版本匹配,1.15.1需要docker至少是18.09及以上版本

  • 卸载旧版本(没安装可忽略)

    # 在 master 节点和 worker 节点都要执行
    sudo yum remove -y docker \
    docker-client \
    docker-client-latest \
    docker-common \
    docker-latest \
    docker-latest-logrotate \
    docker-logrotate \
    docker-selinux \
    docker-engine-selinux \
    docker-engine
    
  • 删除镜像、容器等
    rm -rf /var/lib/docker

  • 设置 yum repository

    # 在 master 节点和 worker 节点都要执行
    sudo yum install -y yum-utils \
    device-mapper-persistent-data \
    lvm2sudo yum-config-manager \
    --add-repo \
    https://download.docker.com/linux/centos/docker-ce.repo
    
  • 安装docker

    # 在 master 节点和 worker 节点都要执行
    sudo yum install -y docker-ce-18.09.7 docker-ce-cli-18.09.7 containerd.io
    
  • 修改cgroup,创建或修改/etc/docker/daemon.json:

    {"exec-opts": ["native.cgroupdriver=systemd"]
    }
    
  • 启动及开机启动

    systemctl start docker
    systemctl enable docker
    
  • 检查 docker 版本及cgroup

    # 在 master 节点和 worker 节点都要执行
    docker version
    docker info | grep Cgroup   # 结果:Cgroup Driver: systemd
    

k8s前期环境配置

  • 配置k8s的yum源

    # 在 master 节点和 worker 节点都要执行
    cat <<EOF > /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
    repo_gpgcheck=0
    gpgkey=http://mirrors.aliyun.com/kubernetes/yum/doc/yum-key.gpghttp://mirrors.aliyun.com/kubernetes/yum/doc/rpm-package-key.gpg
    EOF
    
  • 关闭 防火墙、SeLinux、swap

    # 在 master 节点和 worker 节点都要执行
    systemctl stop firewalld
    systemctl disable firewalldsetenforce 0
    sed -i "s/SELINUX=enforcing/SELINUX=disabled/g" /etc/selinux/configswapoff -a
    yes | cp /etc/fstab /etc/fstab_bak
    cat /etc/fstab_bak |grep -v swap > /etc/fstab
    
  • 修改 /etc/sysctl.conf

    # 在 master 节点和 worker 节点都要执行
    vim /etc/sysctl.conf# 向其中添加
    vm.swappiness = 0
    net.ipv4.ip_forward = 1
    net.bridge.bridge-nf-call-ip6tables = 1
    net.bridge.bridge-nf-call-iptables = 1
    
  • 执行命令以应用

    # 在 master 节点和 worker 节点都要执行
    sysctl -p
    

k8s安装

  • 安装kubelet、kubeadm、kubectl
    # 在 master 节点和 worker 节点都要执行
    yum install -y kubelet-1.15.1 kubeadm-1.15.1 kubectl-1.15.1
    
  • 启动 kubelet
    # 在 master 节点和 worker 节点都要执行
    systemctl enable kubelet && systemctl start kubelet
    

集群初始化

  • 使用kubeadm config print init-defaults可以打印集群初始化默认的使用的配置,根据此制作出本次使用kubeadm初始化集群所需的配置文件kubeadm.yaml(根据自身情况修改)

    # 在master上创建kubeadm-config.yaml
    apiVersion: kubeadm.k8s.io/v1beta2
    kind: InitConfiguration
    localAPIEndpoint:advertiseAddress: k8s-masterIP地址  # 需要修改bindPort: 6443
    nodeRegistration:taints:- effect: PreferNoSchedulekey: node-role.kubernetes.io/master
    ---
    apiVersion: kubeadm.k8s.io/v1beta2
    kind: ClusterConfiguration
    kubernetesVersion: v1.15.1
    imageRepository: registry.cn-hangzhou.aliyuncs.com/google_containers
    controlPlaneEndpoint: "k8s-master:6443"    #需要修改
    networking:podSubnet: 10.244.0.0/16  #每种网络配置不同
    
  • podSubnet 所使用的网段不能与节点所在的网段重叠

  • 初始化master

    # 只在 master 节点执行
    kubeadm init --config=kubeadm-config.yaml --upload-certs
    

    根据您服务器网速的情况,您需要等候 1 – 10 分钟

  • 执行结果如下图所示:

    Your Kubernetes master has initialized successfully!To start using your cluster, you need to run the following as a regular user:mkdir -p $HOME/.kubesudo cp -i /etc/kubernetes/admin.conf $HOME/.kube/configsudo chown $(id -u):$(id -g) $HOME/.kube/configYou should now deploy a pod network to the cluster.
    Run "kubectl apply -f [podnetwork].yaml" with one of the options listed at:/docs/concepts/cluster-administration/addons/You can now join any number of machines by running the following on each node
    as root:kubeadm join <master-ip>:<master-port> --token <token> --discovery-token-ca-cert-hash sha256:<hash>
    
  • 初始化 root 用户的 kubectl 配置

    # 只在 master 节点执行
    rm -rf  $HOME/.kube/
    mkdir -p $HOME/.kube
    cp -i /etc/kubernetes/admin.conf $HOME/.kube/config
    chown $(id -u):$(id -g) $HOME/.kube/config
    

安装pod网络

  • 官网上有多种网络可选,每种网络都有自己的网段ip范围,和kubeadm-config.yaml里配置的podSubnet对应,也就是你想装那种网络,podSubnet就配置上对应的网段,这里选择安装flannel
    kubectl apply -f https://docs.projectcalico.org/v3.8/manifests/canal.yaml
    
  • 执行如下命令,等待 3-10 分钟,直到所有的容器组处于 Running 状态
    watch kubectl get pod -n kube-system
    

加入集群

  • 获得 join命令参数
    # 只在 master 节点执行
    kubeadm token create --print-join-command
    
  • 可获取kubeadm join 命令及参数,如下所示
    # kubeadm token create 命令的输出
    kubeadm join k8s-master:6443 --token mpfjma.4vjjg8flqihor4vt     --discovery-token-ca-cert-hash sha256:6f7a8e40a810323672de5eee6f4d19aa2dbdb38411845a1bf5dd63485c43d303
    
  • 在所有的 node节点执行
    kubeadm join k8s-master:6443 --token mpfjma.4vjjg8flqihor4vt     --discovery-token-ca-cert-hash sha256:6f7a8e40a810323672de5eee6f4d19aa2dbdb38411845a1bf5dd63485c43d303
    
  • 检测结果
    # 只在 master 节点执行
    kubectl get nodes
    
    结果
    在这里插入图片描述

三、其他

从master以外的节点控制集群

将API服务器代理到localhost

四、卸载集群

  • 集群重置
    #所有节点
    kubeadm reset
    
  • 卸载
    #所有节点
    yum remove kubelet-1.15.1 kubeadm-1.15.1 kubectl-1.15.1
    

六、问题排查日志查看

  • 查看系统日志
    tail -f /var/log/messages
  • 查看pod描述,也可用于查看其他组件
    kubectl describe pod pod-name -n namespace
  • 查看pod日志
    kubectl logs pod-name -n namespace
  • 进入容器
    kubectl exec -it pod-name -n namespace -- /bin/bash

五、k8s常用命令

  • kubectl create namespace quota-pod-example
  • kubectl label node centos-2gb-sfo1-03 role=frontend
  • kubectl apply -f deployment.yaml
  • kubectl delete -f deployment.yaml
  • kubectl label node nodeName label=a
  • kubectl get node --show-labels
  • kubectl label node nodeName label-删除label标签
  • kubectl -n kube-system get pods | grep Evicted |awk '{print$1}'|xargs kubectl -n kube-system delete pods 批量删除被驱逐pod;

如果需要安装更高版本,需要更新docker版本和k8s版本,其他周边配置不变;

整理不易,感谢赞赏~~~~

在这里插入图片描述

这篇关于最精简kubernetes(1.15.1)(k8s)集群部署教程--基于CentOS 7的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/739087

相关文章

闲置电脑也能活出第二春?鲁大师AiNAS让你动动手指就能轻松部署

对于大多数人而言,在这个“数据爆炸”的时代或多或少都遇到过存储告急的情况,这使得“存储焦虑”不再是个别现象,而将会是随着软件的不断臃肿而越来越普遍的情况。从不少手机厂商都开始将存储上限提升至1TB可以见得,我们似乎正处在互联网信息飞速增长的阶段,对于存储的需求也将会不断扩大。对于苹果用户而言,这一问题愈发严峻,毕竟512GB和1TB版本的iPhone可不是人人都消费得起的,因此成熟的外置存储方案开

Spring Security 从入门到进阶系列教程

Spring Security 入门系列 《保护 Web 应用的安全》 《Spring-Security-入门(一):登录与退出》 《Spring-Security-入门(二):基于数据库验证》 《Spring-Security-入门(三):密码加密》 《Spring-Security-入门(四):自定义-Filter》 《Spring-Security-入门(五):在 Sprin

服务器集群同步时间手记

1.时间服务器配置(必须root用户) (1)检查ntp是否安装 [root@node1 桌面]# rpm -qa|grep ntpntp-4.2.6p5-10.el6.centos.x86_64fontpackages-filesystem-1.41-1.1.el6.noarchntpdate-4.2.6p5-10.el6.centos.x86_64 (2)修改ntp配置文件 [r

HDFS—集群扩容及缩容

白名单:表示在白名单的主机IP地址可以,用来存储数据。 配置白名单步骤如下: 1)在NameNode节点的/opt/module/hadoop-3.1.4/etc/hadoop目录下分别创建whitelist 和blacklist文件 (1)创建白名单 [lytfly@hadoop102 hadoop]$ vim whitelist 在whitelist中添加如下主机名称,假如集群正常工作的节

Hadoop集群数据均衡之磁盘间数据均衡

生产环境,由于硬盘空间不足,往往需要增加一块硬盘。刚加载的硬盘没有数据时,可以执行磁盘数据均衡命令。(Hadoop3.x新特性) plan后面带的节点的名字必须是已经存在的,并且是需要均衡的节点。 如果节点不存在,会报如下错误: 如果节点只有一个硬盘的话,不会创建均衡计划: (1)生成均衡计划 hdfs diskbalancer -plan hadoop102 (2)执行均衡计划 hd

Makefile简明使用教程

文章目录 规则makefile文件的基本语法:加在命令前的特殊符号:.PHONY伪目标: Makefilev1 直观写法v2 加上中间过程v3 伪目标v4 变量 make 选项-f-n-C Make 是一种流行的构建工具,常用于将源代码转换成可执行文件或者其他形式的输出文件(如库文件、文档等)。Make 可以自动化地执行编译、链接等一系列操作。 规则 makefile文件

阿里开源语音识别SenseVoiceWindows环境部署

SenseVoice介绍 SenseVoice 专注于高精度多语言语音识别、情感辨识和音频事件检测多语言识别: 采用超过 40 万小时数据训练,支持超过 50 种语言,识别效果上优于 Whisper 模型。富文本识别:具备优秀的情感识别,能够在测试数据上达到和超过目前最佳情感识别模型的效果。支持声音事件检测能力,支持音乐、掌声、笑声、哭声、咳嗽、喷嚏等多种常见人机交互事件进行检测。高效推

搭建Kafka+zookeeper集群调度

前言 硬件环境 172.18.0.5        kafkazk1        Kafka+zookeeper                Kafka Broker集群 172.18.0.6        kafkazk2        Kafka+zookeeper                Kafka Broker集群 172.18.0.7        kafkazk3

Kubernetes PodSecurityPolicy:PSP能实现的5种主要安全策略

Kubernetes PodSecurityPolicy:PSP能实现的5种主要安全策略 1. 特权模式限制2. 宿主机资源隔离3. 用户和组管理4. 权限提升控制5. SELinux配置 💖The Begin💖点点关注,收藏不迷路💖 Kubernetes的PodSecurityPolicy(PSP)是一个关键的安全特性,它在Pod创建之前实施安全策略,确保P

90、k8s之secret+configMap

一、secret配置管理 配置管理: 加密配置:保存密码,token,其他敏感信息的k8s资源 应用配置:我们需要定制化的给应用进行配置,我们需要把定制好的配置文件同步到pod当中容器 1.1、加密配置: secret: [root@master01 ~]# kubectl get secrets ##查看加密配置[root@master01 ~]# kubectl get se