• 使用kubeadm方式安装K8S


    Kubeadm安装

    kubeadm是Kubernetes官方提供的用于快速安装Kubernetes集群的工具,伴随Kubernetes每个版本的发布都会同步更新,kubeadm会对集群配置方面的一些实践做调整,通过实验kubeadm可以学习到Kubernetes官方在集群配置上一些新的最佳实践。

    安装Docker ce

    Docker安装
    每个机器都需要装

    环境准备

    编辑hosts对应关系
    cat <<EOF >>/etc/hosts
    192.168.37.61 Smile1
    192.168.37.62 Smile2
    192.168.37.63 Smile3
    EOF
    
    关闭防火墙
    systemctl stop firewalld.service  
    systemctl disable firewalld.service
    
    禁用SELINUX
    sudo setenforce 0
    sed -i "s/^SELINUX=enforcing/SELINUX=disabled/g" /etc/selinux/config
    
    关闭swap
    swapoff -a
    sed -i 's/.*swap.*/#&/' /etc/fstab 
    
    配置内核参数添加如下内容

    cat > /etc/sysctl.d/k8s.conf <<EOF
    net.bridge.bridge-nf-call-ip6tables = 1
    net.bridge.bridge-nf-call-iptables = 1
    EOF

    配置K8S的yum源

    cat < /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.gpg
    http://mirrors.aliyun.com/kubernetes/yum/doc/rpm-package-key.gpg
    EOF

    安装kubelet、kubeadm、kubectl

    yum makecache fast
    yum install -y kubelet kubeadm kubectl
    

    调整启动方式

    kubelet的启动环境变量要与docker的cgroup-driver驱动一样

    docker info | grep -i cgroup
    Cgroup Driver: cgroupfs  --> 运行命令显示
    

    docker的cgroup-driver是cgroupfs,而k8s默认是systemd
    修改docker的cgroup-driver

    vim /etc/docker/daemon.json
    加入内容 : { "exec-opts": ["native.cgroupdriver=systemd"] }
    
    最终文件内容

    {
    "registry-mirrors": [
    "https://dockerhub.azk8s.cn",
    "https://reg-mirror.qiniu.com"
    ],
    "exec-opts": ["native.cgroupdriver=systemd"]
    }

    重启Docker
    systemctl restart docker
    systemctl status docker
    

    启动kubelet服务

    systemctl enable kubelet.service
    systemctl start kubelet.service
    

    配置Master节点

    进行kubernetes集群初始化

    Master节点执行命令 :
    kubeadm init --kubernetes-version=1.15.0
    --apiserver-advertise-address=192.168.37.61
    --image-repository=gcr.azk8s.cn/google_containers
    --pod-network-cidr=10.244.0.0/16
    --token-ttl 0

    --kubernetes-version : 指定版本号
    --apiserver-advertise-address : 指定主机地址
    其中设置image-repository这一步很重要,kubeadm默认从官网k8s.grc.io下载所需镜像,国内无法访问,因此需要指定阿里云或者是其他国内镜像仓库地址。

    定义POD的网段为: 10.244.0.0/16,

    初始化成功后会返回如下信息
    //这个返回信息三条命令是配置kubectl工具的命令
    mkdir -p $HOME/.kube
    sudo cp -i /etc/kubernetes/admin.conf $HOME/.kube/config
    sudo chown $(id -u):$(id -g) $HOME/.kube/config
    
    // 这个返回信息是配置Node节点的命令
    kubeadm join 192.168.98.230:6443 --token dexs09.ftjp7y7obq6a3t6n 
          --discovery-token-ca-cert-hash sha256:4aace846f8a6c381902592049591152fd7250b63e500e370a4b64902d202f7f2
    
    配置kubectl工具

    运行初始化成功后返回的三条命令

    部署pod的网络

    有很多种选择参考
    我们选择的是flannel,其它的几种可能会有问题

    wget https://raw.githubusercontent.com/coreos/flannel/a70459be0084506e4ec919aa1c114638878db11b/Documentation/kube-flannel.yml
    
    //在kube-flannel.yml里面默认的镜像下载地址是quay.io,国内无法访问,这里替换所有的quay.io为 quay-mirror.qiniu.com
    sed -i "s/quay.io/quay-mirror.qiniu.com/g" kube-flannel.yml
    
    执行安装命令
    kubectl apply -f kube-flannel.yml
    
    查看运行状态
    kubectl get pod --all-namespaces -o wide
    

    确保所有的pod都处在运行状态

    部署Node节点

    将所有的node节点加入到kubernets集群

    //在Node节点上执行(这个命令就是集群初始化之后的返回信息)
    kubeadm join 192.168.98.230:6443 --token dexs09.ftjp7y7obq6a3t6n 
              --discovery-token-ca-cert-hash sha256:4aace846f8a6c381902592049591152fd7250b63e500e370a4b64902d202f7f2
    

    最后检测集群各节点的运行状态

    kubectl get nodes
    

    再次查看各个pod的状态,确保都是处于Runing状态

    kubectl get pod --all-namespaces -o wide
    

    如果有问题,重新配置Master

    kubeadm reset
    

    我每天会写文章记录云计算技术学习之路,另外我自己整理了些云计算的学习资料,目前全部放在我的公众号"SmallBird技术分享",加入我们一起学习交流,并且回复’分享’会有大数据,云计算资源惊喜等着你~

  • 相关阅读:
    板邓:php获取数组元素个数
    板邓:PHP解决Using $this when not in object context in【转】
    板邓:MYSQL distinct关键字查询重复值只显示一条记录
    板邓: php 过滤文章的html标签方法
    板邓:PHP使用mb_strimwidth截取中文字符串方法大全
    板邓:php str_replace单双引号的替换问题
    板邓:PHP下利用PHPMailer配合QQ邮箱下的域名邮箱发送邮件(转)
    板邓:wordpress自定义伪静态 WP_Rewrite
    板邓:wordpress获取当前页面的id、别名
    获取文件夹名
  • 原文地址:https://www.cnblogs.com/SmallBird-Nest/p/11506271.html
Copyright © 2020-2023  润新知