记录--k8s实践(二)部署Node节点,并加入集群
记录--k8s实践(二)部署Node节点,并加入集群一、Docker安装1. 安装依赖包2. 设置Docker源3. 安装Docker CE4. 启动Docker5. 命令补全6. 镜像加速7. 验证二、k8s安装准备工作1. 配置主机名2. 验证mac地址uuid3. 禁用swap4. 内核参数修改5. 修改Cgroup Driver6. 设置kubernetes源三、Node节点安装1. 版本
记录--k8s实践(二)部署Node节点,并加入集群
注:本文参考https://blog.51cto.com/3241766/2405624进行实践。
我对k8s的知识不太了解,只是感兴趣想实践一下。这篇记录只是想根据自己搭建的时候遇到的问题进行一些补充。大体步骤基本与原作者一致。
环境说明
主机名 | 系统版本 | ip地址 | docker version | kubelet version | kubeadm version | kubectl version | flannel version | 备注 |
---|---|---|---|---|---|---|---|---|
node02 | centos-release-7-7.1908.0.el7.centos.x86_64 | 192.168.137.203 | Docker 18.09.6 | V1.14.2 | V1.14.2 | V1.14.2 | V0.11.0 | node节点 |
为什么我要用centos7.7呢,因为7.6的我没找到,只找到精简版,但是vm里面装不了。顺便附上7.7的下载地址http://mirrors.aliyun.com/centos/7.7.1908/isos/x86_64/CentOS-7-x86_64-DVD-1908.iso
为什么我会从node02开始呢?因为我node01搭建成功之后才敢记录的。哈哈哈哈。。。
开始之前记得关闭防火墙哦,以免各种奇葩错误。
[root@centos7 ~]# systemctl stop firewalld
[root@centos7 ~]# systemctl disable firewalld
[root@centos7 ~]# setenforce 0
[root@centos7 ~]# sed -i 's/^ *SELINUX=enforcing/SELINUX=disabled/g' /etc/selinux/config
[root@centos7 ~]# systemctl stop firewalld #临时关闭防火墙
[root@centos7 ~]# systemctl disable firewalld #永久防火墙
[root@centos7 ~]# setenforce 0 #临时关闭selinux
[root@centos7 ~]# sed -i 's/^ *SELINUX=enforcing/SELINUX=disabled/g' /etc/selinux/config #永久关闭(需重启系统)
一、Docker安装
所有节点都需要安装docker,我这是node节点 肯定要装了。
1. 安装依赖包
[root@centos7 ~]# yum install -y yum-utils device-mapper-persistent-data lvm2
2. 设置Docker源
[root@centos7 ~]# yum-config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo
3. 安装Docker CE
3.1 docker安装版本查看
[root@centos7 ~]# yum list docker-ce --showduplicates | sort -r
最新版本跟作者当时写文章的时候不一样,但是我还是很老实地装了跟作者写的一样的版本,我是真的怂。
3.2 安装docker
[root@centos7 ~]# yum install docker-ce-18.09.6 docker-ce-cli-18.09.6 containerd.io
然后就可以进入一段漫长的等待了(可能是公司网太慢)
4. 启动Docker
[root@centos7 ~]# systemctl start docker
[root@centos7 ~]# systemctl enable docker
5. 命令补全
5.1 安装bash-completion
[root@centos7 ~]# yum -y install bash-completion
5.2 加载bash-completion
[root@centos7 /]# source /etc/profile.d/bash_completion.sh
6. 镜像加速
由于Docker Hub的服务器在国外,下载镜像会比较慢,可以配置镜像加速器。主要的加速器有:Docker官方提供的中国registry mirror、阿里云加速器、DaoCloud 加速器,本文以阿里加速器配置为例。
6.1 登陆阿里云容器模块
登陆地址为:https://cr.console.aliyun.com ,未注册的可以先注册阿里云账户
(很显然,我这里连图片都一起复制了 哈哈哈)
6.2 配置镜像加速器
配置daemon.json文件
[root@centos7 ~]# mkdir -p /etc/docker
[root@centos7 ~]# tee /etc/docker/daemon.json <<-'EOF'
{
"registry-mirrors": ["https://v16stybc.mirror.aliyuncs.com"]
}
EOF
重启服务
[root@centos7 ~]# systemctl daemon-reload
[root@centos7 ~]# systemctl restart docker
加速器配置完成
7. 验证
[root@centos7 ~]# docker --version
[root@centos7 ~]# docker run hello-world
通过查询docker版本和运行容器hello-world来验证docker是否安装成功。
二、k8s安装准备工作
!!!到了这里的时候,我才知道为什么我第一次安装master的时候拉取不到kubectl的那些镜像了!!!
我太粗心了。下面这句话 我当时应该是忽略了 直接没看到。
安装Centos是已经禁用了防火墙和selinux并设置了阿里源。master和node节点都执行本部分操作。
1. 配置主机名
1.1 修改主机名
[root@centos7 ~]# hostnamectl set-hostname node02
[root@centos7 ~]# more /etc/hostname
node02
退出重新登陆即可显示新设置的主机名node02
1.2 修改hosts文件
[root@node02 ~]# cat >> /etc/hosts << EOF
> 192.168.137.201 master
> 192.168.137.202 node01
> 192.168.137.203 node02
> EOF
2. 验证mac地址uuid
[root@node02 ~]# cat /sys/class/net/ens33/address
[root@node02 ~]# cat /sys/class/dmi/id/product_uuid
保证各节点mac和uuid唯一
3. 禁用swap
3.1 临时禁用
[root@node02 ~]# swapoff -a
3.2 永久禁用
若需要重启后也生效,在禁用swap后还需修改配置文件/etc/fstab,注释swap
[root@node02 ~]# sed -i.bak '/swap/s/^/#/' /etc/fstab
4. 内核参数修改
4.1 临时修改
[root@node02 ~]# sysctl net.bridge.bridge-nf-call-iptables=1
net.bridge.bridge-nf-call-iptables = 1
[root@node02 ~]# sysctl net.bridge.bridge-nf-call-ip6tables=1
net.bridge.bridge-nf-call-ip6tables = 1
4.2 永久修改
[root@node02 ~]# cat <<EOF > /etc/sysctl.d/k8s.conf
> net.bridge.bridge-nf-call-ip6tables = 1
> net.bridge.bridge-nf-call-iptables = 1
> EOF
[root@node02 ~]# sysctl -p /etc/sysctl.d/k8s.conf
net.bridge.bridge-nf-call-ip6tables = 1
net.bridge.bridge-nf-call-iptables = 1
5. 修改Cgroup Driver
5.1 修改daemon.json
修改daemon.json,新增‘“exec-opts”: [“native.cgroupdriver=systemd”]’
[root@node02 ~]# vi /etc/docker/daemon.json
[root@node02 ~]# cat /etc/docker/daemon.json
{
"registry-mirrors": ["https://jgw48re7.mirror.aliyuncs.com"],
"exec-opts": ["native.cgroupdriver=systemd"]
}
这是vi进去改,最好是重新写一份,上次忘了在第一个value后面加逗号
5.2 重新加载docker
[root@node02 ~]# systemctl daemon-reload
[root@node02 ~]# systemctl restart docker
修改cgroupdriver是为了消除告警:
[WARNING IsDockerSystemdCheck]: detected “cgroupfs” as the Docker cgroup driver. The recommended driver is “systemd”. Please follow the guide at https://kubernetes.io/docs/setup/cri/
我也不知道是什么警告 哈哈哈哈。
6. 设置kubernetes源
6.1 新增kubernetes源
(这里等下还要做解释)
[root@node02 ~]# cat <<EOF > /etc/yum.repos.d/kubernetes.repo
> [k8s-node02]
> name=k8s-node02
> 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
[] 中括号中的是repository id,唯一,用来标识不同仓库
name 仓库名称,自定义
baseurl 仓库地址
enable 是否启用该仓库,默认为1表示启用
gpgcheck 是否验证从该仓库获得程序包的合法性,1为验证
repo_gpgcheck 是否验证元数据的合法性 元数据就是程序包列表,1为验证
gpgkey=URL 数字签名的公钥文件所在位置,如果gpgcheck值为1,此处就需要指定gpgkey文件的位置,如果gpgcheck值为0就不需要此项了
6.2 更新缓存
[root@node02 ~]# yum clean all
[root@node02 ~]# yum -y makecache
我在yum -y makecache的时候出问题了,
说什么验证不通过,然后我就把验证给删掉了。删掉之后的内容如下:
[root@node02 ~]# cat /etc/yum.repos.d/kubernetes.repo
[k8s-node02]
name=k8s-node02
baseurl=https://mirrors.aliyun.com/kubernetes/yum/repos/kubernetes-el7-x86_64/
enabled=1
gpgcheck=0
去掉了验证的东西,然后再次执行下面的
更新缓存
[root@node02 ~]# yum clean all
[root@node02 ~]# yum -y makecache
三、Node节点安装
1. 版本查看
太多了,我们看到 1.14.2这里还是有的。
(原作者的话 :目前最新版是1.14.2,该版本支持的docker版本为1.13.1, 17.03, 17.06, 17.09, 18.06, 18.09。)
2. 安装kubelet、kubeadm和kubectl
2.1 安装三个包
[root@node02 ~]# yum install -y kubelet-1.14.2 kubeadm-1.14.2 kubectl-1.14.2
2.2 安装包说明
kubelet 运行在集群所有节点上,用于启动Pod和容器等对象的工具
kubeadm 用于初始化集群,启动集群的命令工具
kubectl 用于和集群通信的命令行,通过kubectl可以部署和管理应用,查看各种资源,创建、删除和更新各种组件
---------从这下面开始,我就不知道需不需要了,但是我还是走了下面的流程----------
2.3 启动kubelet
启动kubelet并设置开机启动
[root@master ~]# systemctl enable kubelet && systemctl start kubelet
2.4 kubelet命令补全
[root@node02 ~]# echo "source <(kubectl completion bash)" >> ~/.bash_profile
[root@node02 ~]# source .bash_profile
3. 下载镜像
Kubernetes几乎所有的安装组件和Docker镜像都放在goolge自己的网站上,直接访问可能会有网络问题,这里的解决办法是从阿里云镜像仓库下载镜像,拉取到本地以后改回默认的镜像tag。
3.1 镜像下载的脚本
这里警示自己一句 ,vi 创建新文件之后 一定要记得 按 i ,每次复制进去都蒙蔽为啥头上少了几行
[root@node02 k8s]# cat image.sh
#!/bin/bash
url=registry.cn-hangzhou.aliyuncs.com/google_containers
version=v1.14.2
images=(`kubeadm config images list --kubernetes-version=$version|awk -F '/' '{print $2}'`)
for imagename in ${images[@]} ; do
docker pull $url/$imagename
docker tag $url/$imagename k8s.gcr.io/$imagename
docker rmi -f $url/$imagename
done
–我是创建了一个文件夹 名字叫 k8s --用来放k8s的东西
url为阿里云镜像仓库地址,version为安装的kubernetes版本。
3.2 下载镜像
运行脚本image.sh,下载指定版本的镜像
[root@node02 k8s]# ./image.sh
[root@node02 k8s]# docker images
好了,到这里差不多就搭建好了。接下来就差加入集群了。
我在这里开始把这个镜像给克隆了一份,为了方便以后节点的拓展,不知道这么做是不是有点傻缺。。
4. 加入集群
以下这些操作到Master节点上执行,我反是已经记录下来了。就不再执行了
node节点加入集群
kubeadm join 192.168.137.201:6443 --token zdxjqn.1c1flw1dalm6ziab --discovery-token-ca-cert-hash sha256:4a3683b35163964e25464d57a401c335f4160610e7e88f5cad8d535fec5ff72d
我的差不多就是这样的了。如果报错的话,就去master节点上看看 token 是不是过期了,然后那个密钥好像是不变的。
哦豁,这个时候去看下之前搭建好的Dashboard后台,发现node02已经有了。
那个已就绪是 false,这个是什么鬼?
后面好像发现出现这个问题是kube-flannel-ds这个东西搞得鬼,
我的解决方法在另外一篇文章里面(https://blog.csdn.net/qq_27156945/article/details/101779282)。其实就是重新进行一次加入集群的操作。
对了 这里还有一个大痛点就是重启之后好像就全崩了。。
更多推荐
所有评论(0)