码迷,mamicode.com
首页 > Web开发 > 详细

使用kubeadm安装kubernetes

时间:2019-10-31 19:00:25      阅读:141      评论:0      收藏:0      [点我收藏+]

标签:没有   目录   swa   命令   host   lis   efault   更新   star   

实验环境介绍

计算机名 IP地址 操作系统及内核版本
k8s-master.mfyxw.com 192.168.80.100 CentOS7.6内核推荐:4.4+及以上
k8s-node1.mfyxw.com 192.168.80.110 CentOS7.6内核推荐:4.4+及以上
k8s-node2.mfyxw.com 192.168.80.120 CentOS7.6内核推荐:4.4+及以上
  1. 各节点均需要都关闭selinux和防火墙firewalld,并把防火墙自启取消
    命令:
    #设置关闭selinux和防火墙,立即生效
    setenforce 0 && systemctl stop firewalld && systemctl disable firewalld
  2. 各节点均需要修改hosts文件
    命令:
    vi /etc/hosts
    192.168.80.100 k8s-master.mfyxw.com k8s-master
    192.168.80.110 k8s-node1.mfyxw.com k8s-node1
    192.168.80.120 k8s-node2.mfyxw.com k8s-node2
    技术图片
  3. 各节点均需要把内核升级到4.4+及以上版本,CentOS 7.x 系统自带的 3.10.x 内核存在一些 Bugs,导致运行的 Docker、Kubernetes 不稳定
    命令:
    uname -r
    rpm --import https://www.elrepo.org/RPM-GPG-KEY-elrepo.org
    yum -y install https://www.elrepo.org/elrepo-release-7.0-4.el7.elrepo.noarch.rpm
    技术图片
    //查询有哪些可以更新到哪些内核版本
    yum --disablerepo="*" --enablerepo="elrepo-kernel" list available
    //安装4.4.X内核 --enablerepo 选项开启 CentOS 系统上的指定仓库。默认开启的是 elrepo,这里用 elrepo-kernel 替换。
    yum -y install --enablerepo=elrepo-kernel install kernel-lt
    技术图片
    //查询到本机都安装了哪些内核版本
    awk -F\‘ ‘$1=="menuentry " {print i++ " : " $2}‘ /etc/grub2.cfg
    grub2-set-default 0 //设置默认内核使用的版本 也可以编辑/etc/default/grub 文件,把GRUB_DEFAULT=0中的0修改为对应查询到的内核的序号
    //或使用命令:grub2-set-default ‘CentOS Linux (4.4.197-1.el7.elrepo.x86_64) 7 (Core)‘
    reboot //重启系统,使新内核启动
    技术图片
    再次确认是否更新到最新版本的内核
    uname -r
    技术图片
    4.各节点均需要安装iptables,因为kube-proxy会向iptables或者ipvs写规则
    命令:
    #安装iptables服务
    yum -y install iptables-services
    技术图片
    #清空防火墙规则并保存
    命令:
    iptables -F
    service iptables save
    技术图片
    #启动iptables并设置开机启动
    命令:
    service iptables status
    service iptables start
    systemctl enable iptables
    技术图片
    5.各节点均需要下载docker-ce的repo文件放置/etc/yum.repo.d/目录下
    如没有wget命令,请先使用yum -y install wget来安装
    命令:
    cd /etc/yum.repos.d
    wget https://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
    技术图片
    6.各节点均需要在/etc/yum.repo.d/目录下新建一个kubernetes.repo文件
    命令:
    vi /etc/yum.repos.d/Kubernetes.repo
    内容如下:
    [Kubernetes]
    name=Kubernetes repo
    baseurl=https://mirrors.aliyun.com/kubernetes/yum/repos/kubernetes-el7-x86_64/
    enable=1
    gpgcheck=1
    gpgkey=https://mirrors.aliyun.com/kubernetes/yum/doc/rpm-package-key.gpg
    技术图片
    7.各节点均需要安装docker-ce,kubeadm,kubelet,kubectl
    命令:
    yum -y install docker-ce kubeadm kubectl kubelet
    技术图片
    8.各节点均需要docker镜像加速器(建议)
    命令:
    mkdir /etc/docker
    vi /etc/docker/daemo.json
    {
    "registry-mirrors": ["https://jltw059v.mirror.aliyuncs.com"]
    }
    技术图片
  4. 各节点均需要把docker和kubelet加入开机自启并启动docker
    命令:
    systemctl enable docker && systemctl enable kubelet && systemctl start docker
    ps aux | grep docker
    技术图片
    10.各节点均需要检查cat /proc/sys/net/bridge/bridge-nf-call-ip6tables和cat /proc/sys/net/bridge/bridge-nf-call-iptables的值是否都为1,如果不是,请按如下方法修改
    命令:
    cat /proc/sys/net/bridge/bridge-nf-call-ip6tables
    cat /proc/sys/net/bridge/bridge-nf-call-iptables
    cat <<EOF >/etc/sysctl.d/k8s.conf
    net.ipv4.ip_forward = 1
    net.bridge.bridge-nf-call-ip6tables = 1
    net.bridge.bridge-nf-call-iptables = 1
    EOF
    sysctl --system
    技术图片
    11.在k8s-master节点新建一个sh脚本
    命令:
    vi k8s-master.sh
    脚本内容如下:
    #!/bin/bash

K8S_VERSION=v1.16.2
ETCD_VERSION=3.3.15-0
PAUSE_VERSION=3.1
DNS_VERSION=1.6.2
FLANNEL_VERSION=v0.11.0-amd64

#pull镜像到本地
docker pull registry.cn-hangzhou.aliyuncs.com/google_containers/kube-apiserver:$K8S_VERSION
docker pull registry.cn-hangzhou.aliyuncs.com/google_containers/kube-scheduler:$K8S_VERSION
docker pull registry.cn-hangzhou.aliyuncs.com/google_containers/kube-controller-manager:$K8S_VERSION
docker pull registry.cn-hangzhou.aliyuncs.com/google_containers/etcd:$ETCD_VERSION
docker pull registry.cn-hangzhou.aliyuncs.com/google_containers/kube-proxy:$K8S_VERSION
docker pull registry.cn-hangzhou.aliyuncs.com/google_containers/pause:$PAUSE_VERSION
docker pull registry.cn-hangzhou.aliyuncs.com/google_containers/coredns:$DNS_VERSION
docker pull quay-mirror.qiniu.com/coreos/flannel:$FLANNEL_VERSION

#修改tag,因k8s默认找镜像的时候,会去k8s.gcr.io/coredns:XXXXX查找
docker tag registry.cn-hangzhou.aliyuncs.com/google_containers/kube-apiserver:$K8S_VERSION k8s.gcr.io/kube-apiserver:$K8S_VERSION
docker tag registry.cn-hangzhou.aliyuncs.com/google_containers/kube-scheduler:$K8S_VERSION k8s.gcr.io/kube-scheduler:$K8S_VERSION
docker tag registry.cn-hangzhou.aliyuncs.com/google_containers/kube-controller-manager:$K8S_VERSION k8s.gcr.io/kube-controller-manager:$K8S_VERSION
docker tag registry.cn-hangzhou.aliyuncs.com/google_containers/etcd:$ETCD_VERSION k8s.gcr.io/etcd:$ETCD_VERSION
docker tag registry.cn-hangzhou.aliyuncs.com/google_containers/kube-proxy:$K8S_VERSION k8s.gcr.io/kube-proxy:$K8S_VERSION
docker tag registry.cn-hangzhou.aliyuncs.com/google_containers/pause:$PAUSE_VERSION k8s.gcr.io/pause:$PAUSE_VERSION
docker tag registry.cn-hangzhou.aliyuncs.com/google_containers/coredns:$DNS_VERSION k8s.gcr.io/coredns:$DNS_VERSION
docker tag quay-mirror.qiniu.com/coreos/flannel:$FLANNEL_VERSION quay.io/coreos/flannel:$FLANNEL_VERSION
技术图片
给k8s-master.sh脚本添加执行权限
chmod 755 k8s-master.sh
./k8s-master.sh
技术图片
12.查询下是否镜像下载完成
命令:
docker images -a
技术图片
13.在各node节点上新建一个k8s-node.sh脚本文件,
vi /root/k8s-node.sh
添加如下内容
#!/bin/bash

K8S_VERSION=v1.16.2
PAUSE_VERSION=3.1
DNS_VERSION=1.6.2
FLANNEL_VERSION=v0.11.0-amd64
#pull镜像到本地
docker pull registry.cn-hangzhou.aliyuncs.com/google_containers/kube-proxy:$K8S_VERSION
docker pull registry.cn-hangzhou.aliyuncs.com/google_containers/pause:$PAUSE_VERSION
docker pull registry.cn-hangzhou.aliyuncs.com/google_containers/coredns:$DNS_VERSION
docker pull quay-mirror.qiniu.com/coreos/flannel:$FLANNEL_VERSION

#修改tag
docker tag registry.cn-hangzhou.aliyuncs.com/google_containers/kube-proxy:$K8S_VERSION k8s.gcr.io/kube-proxy:$K8S_VERSION
docker tag registry.cn-hangzhou.aliyuncs.com/google_containers/pause:$PAUSE_VERSION k8s.gcr.io/pause:$PAUSE_VERSION
docker tag registry.cn-hangzhou.aliyuncs.com/google_containers/coredns:$DNS_VERSION k8s.gcr.io/coredns:$DNS_VERSION
docker tag quay-mirror.qiniu.com/coreos/flannel:$FLANNEL_VERSION quay.io/coreos/flannel:$FLANNEL_VERSION
技术图片
给/root/k8s-node.sh脚本添加可执行权限并执行脚本
命令
chmod 755 /root/k8s-node.sh
技术图片
14.在各node节点上查看下载的镜像
.技术图片
技术图片
15.在各节点上,把swap交换空间给关闭
命令
swapoff -a //立即生效
编辑配置文件使开机自动不开启交换空间
vi /etc/fstab在swap交换分区前面添加#号注释
技术图片
16.在k8s-master节点上使用kubeadm初始化(kubernetes版本使用1.16.2是因为在下载镜像下载了此镜像版本)
命令
kubeadm init --kubernetes-version=1.16.2 --pod-network-cidr 10.244.0.0/16 --service-cidr 10.96.0.0/12
技术图片
注意:kubernetes要求最低需要双核CPU(master和node节点都需要双核)
技术图片
节点k8s-master成功完成了初始化
技术图片
kubeadm join 192.168.80.100:6443 --token tlxsrq.7cilafwfvxh09k7z \
--discovery-token-ca-cert-hash sha256:8145748aa23b2563580c39065dde084863b59202c209a4566ac2df377b9f66b3
因为是做实验,故使用root用户来运行,不切换到普通用户运行如下命令
mkdir -p $HOME/.kube
sudo cp -i /etc/kubernetes/admin.conf $HOME/.kube/config
sudo chown $(id -u):$(id -g) $HOME/.kube/config
技术图片
17.查看pod节点和node节点
命令:
kubectl get pods -n kube-system
kubectl get nodes
在查看node上显示NotReady(未就绪状态)是由于flannel没有启动
技术图片
在flannel的github(https://github.com/coreos/flannel)上说到,kubernetes1.7+以上需要使用如下命令来运行flannel
kubectl apply -f https://raw.githubusercontent.com/coreos/flannel/master/Documentation/kube-flannel.yml
技术图片
技术图片
flannel已经运行,再次查看nodes和pods -n kube-system
技术图片
18.在各node节点上运行如下命令加入集群
命令:
kubeadm join 192.168.80.100:6443 --token tlxsrq.7cilafwfvxh09k7z \
--discovery-token-ca-cert-hash sha256:8145748aa23b2563580c39065dde084863b59202c209a4566ac2df377b9f66b3
技术图片
技术图片
19.再次在k8s-master节点上运行如下命令查询集群所有节点情况
命令:
kubectl get nodes
技术图片

使用kubeadm安装kubernetes

标签:没有   目录   swa   命令   host   lis   efault   更新   star   

原文地址:https://blog.51cto.com/7309656/2446761

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!