zoukankan      html  css  js  c++  java
  • 使用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技术分享",加入我们一起学习交流,并且回复’分享’会有大数据,云计算资源惊喜等着你~

  • 相关阅读:
    Atitit  atiMail atiDns新特性 v2  q39
    Atitit  atiMail atiDns新特性 v2  q39
    Atitit.aticmd v4  新特性q39 添加定时器释放功能
    Atitit.aticmd v4  新特性q39 添加定时器释放功能
    Atitit. Atiposter 发帖机 新特性 poster new feature   v7 q39
    Atitit. Atiposter 发帖机 新特性 poster new feature   v7 q39
    Atitit.编程语言and 自然语言的比较and 编程语言未来的发展
    Atitit.编程语言and 自然语言的比较and 编程语言未来的发展
    atitit.解决struts2 SpringObjectFactory.getClassInstance NullPointerException  v2 q31
    知也atitit.解决struts2 SpringObjectFactory.getClassInstance NullPointerException  v2 q31无涯 - I
  • 原文地址:https://www.cnblogs.com/SmallBird-Nest/p/11506271.html
Copyright © 2011-2022 走看看