栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 系统运维 > 运维 > Linux

kubernetes学习笔记之搭建kubernetes集群(ubuntu)

Linux 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

kubernetes学习笔记之搭建kubernetes集群(ubuntu)

kubernetes实验
添加root用户

zzs@master:~$ sudo passwd root

更改镜像源

root@master:/etc/apt# vim sources.list
#清除全部内容ggdG
deb http://mirrors.aliyun.com/ubuntu/ xenial main restricted
deb http://mirrors.aliyun.com/ubuntu/ xenial-updates main restricted
deb http://mirrors.aliyun.com/ubuntu/ xenial universe
deb http://mirrors.aliyun.com/ubuntu/ xenial-updates universe
deb http://mirrors.aliyun.com/ubuntu/ xenial multiverse
deb http://mirrors.aliyun.com/ubuntu/ xenial-updates multiverse
deb http://mirrors.aliyun.com/ubuntu/ xenial-backports main restricted universe multiverse
deb http://mirrors.aliyun.com/ubuntu xenial-security main restricted
deb http://mirrors.aliyun.com/ubuntu xenial-security universe
deb http://mirrors.aliyun.com/ubuntu xenial-security multiverse

禁止防火墙:# ufw disable

root@master:/etc/apt# ufw disable
Firewall stopped and disabled on system startup

关闭 swap:

root@master:/etc/apt# cat /etc/fstab 
# /etc/fstab: static file system information.
#
# Use 'blkid' to print the universally unique identifier for a
# device; this may be used with UUID= as a more robust way to name devices
# that works even if disks are added and removed. See fstab(5).
#
#                
# / was on /dev/sda1 during installation
UUID=4ac71650-5c12-4eb7-9ae5-435e4e538015 /               ext4    errors=remount-ro 0       1
# swap was on /dev/sda5 during installation
#UUID=4fa6c3dd-b33c-4790-ae43-f2c30addcb38 none            swap    sw              0       0

禁止 selinux:

apt-get update
root@master:/etc/apt# apt install -y selinux-utils
root@master:/etc/apt# setenforce 0
setenforce: SELinux is disabled
root@master:/etc/apt# setenforce -r now
usage:  setenforce [ Enforcing | Permissive | 1 | 0 ]
root@master:/etc/apt# getenforce 
Disabled

克隆虚拟机为node1,node2两个节点。
修改主机名

vim /etc/hostnae
vim /etc/hosts
安装docker
apt-get update
apt-get install -y curl telnet wget man apt-transport-https ca-certificates software-properties-common vim libltdl7

(https://download.docker.com/linux/ubuntu/dists/bionic/pool/stable/amd64/docker-ce_18.06.1ce3-0~ubuntu_amd64.deb)

dpkg -i /home/zzs/docker-ce_18.06.1~ce~3-0~ubuntu_amd64.deb 
docker version
# systemctl enable docker
# systemctl start docker
# systemctl status docker
docker -v
root@master:/home/zzs# cat /etc/docker/daemon.json
{
  "registry-mirrors": ["https://h7l6c354.mirror.aliyuncs.com"]
}
root@master:/home/zzs# systemctl daemon-reload
root@master:/home/zzs# systemctl restart docker
zzs@master:~$ sudo groupadd docker
zzs@master:~$ sudo usermod -aG docker $USER
安装 Kubernetes

Kubernetes 版本:k8s 1.13.1

配置 k8s 镜像加速器

创建文件/etc/apt/sources.list.d/kubernetes.list,内容如下:

root@master:/# vim /etc/apt/sources.list.d/kubernetes.list 
deb http://mirrors.ustc.edu.cn/kubernetes/apt kubernetes-xenial main

apt update 更新操作系统源

gpg --keyserver keyserver.ubuntu.com --recv-keys 836F4BEB
gpg --export --armor 836F4BEB | sudo apt-key add - 
apt update
kubernetes 系统网络配置:

创建/etc/sysctl.d/k8s.conf 文件,内容如下:

root@master:/# cat /etc/sysctl.d/k8s.conf
net.bridge.bridge-nf-call-ip6tables = 1
net.bridge.bridge-nf-call-iptables = 1
vm.swappiness = 0

(将 k8s 通信网络添加到 iptables 中)
使配置文件生效:

root@master:/# modprobe br_netfilter
root@master:/# sysctl -p /etc/sysctl.d/k8s.conf 

安装 k8s

apt update
apt-get install -y kubelet=1.13.1-00 kubernetes-cni=0.6.0-00 kubeadm=1.13.1-00 kubectl=1.13.1-00
systemctl enable kubelet
systemctl start kubelet
shutdown -r now
配置 master 1) 创建工作目录
$ mkdir /home/hj/working
$ cd /home/hj/working/
2) 创建 kubeadm.conf 配置文件

创建 k8s 的管理工具 kubeadm 对应的配置文件
/home/hj/working/目录下,生成配置文件:

kubeadm config print init-defaults ClusterConfiguration > kubeadm.conf

通过在 kubeadm 配置文件中指定 docker 仓库地址,便于内网快速部署。
修改 kubeadm.conf:
修改 imageRepository: k8s.gcr.io为

imageRepository: registry.cn-beijing.aliyuncs.com/imcto

修改 kubernetes 版本 kubernetesVersion: v1.13.0改为

kubernetesVersion: v1.13.1

修改 kubeadm.conf 中的 API 服务器地址,后面会频繁使用这个地址。

localAPIEndpoint:
advertiseAddress: 192.168.10.133 (master 主机的 ip 地址)
bindPort: 6443

配置子网网络:

networking:
dnsDomain: cluster.local
podSubnet: 10.244.0.0/16
serviceSubnet: 10.96.0.0/12
scheduler: {}

这里的 10.244.0.0/16 和 10.96.0.0/12 分别是 k8s 内部 pods 和 services 的子
网网络,最好使用这个地址,后续 flannel 网络需要用到。

3) 拉取 K8s 必备的模块镜像

查看一下都需要哪些镜像文件需要拉取:

kubeadm config images list --config kubeadm.conf

拉取镜像,下载全部当前版本的 k8s 所关联的镜像:

kubeadm config images pull --config ./kubeadm.conf
4) 初始化 kubernetes 环境:

#初始化并且启动

kubeadm init --config ./kubeadm.conf

注:这里会生成一个 token,需要记住。例如:abcdef.0123456789abcdef
更多 kubeadm 配置文件参数详见
kubeadm config print-defaults
k8s 启动成功输出内容较多,但是记住末尾的内容, 按照官方提示,执行以下操
作:
1、执行如下命令

mkdir -p $HOME/.kube
sudo cp -i /etc/kubernetes/admin.conf $HOME/.kube/config
sudo chown $(id -u):$(id -g) $HOME/.kube/config
5) 验证 kubernetes 启动结果:

验证输入,注意显示 master 状态是 NotReady,证明初始化服务器成功

zzs@master:~/working$  kubectl get nodes
NAME STATUS ROLES AGE VERSION
master NotReady master 12m v1.13.1

目前只有一个 master,还没有 node,而且是 NotReady 状态,那么我们需要将 node
加入到 master 管理的集群中来。在加入之前,我们需要先配置 k8s 集群的内部通信网
络,这里采用的是 flannel 网络。

6) 部署集群内部通信 flannel 网络
zzs@master:~$ cd $HOME/working
wget https://raw.githubusercontent.com/coreos/flannel/a70459be0084506e4ec919aa1c114638878db11b/documentation/kube-flannel.yml

编辑这个 kube-flannel.yml 文件,确保 flannel 网络是对的,找到 net-conf.json 标记
的内容是否正确。

net-conf.json: |
{ "Network": "10.244.0.0/16", "Backend": 
{ "Type": "vxlan"
}

这个"10.244.0.0/16"和 ./kubeadm.conf 中的 podsubnet 的地址要一致。
应用当前 flannel 配置文件

zzs@master:~/working$ kubectl apply -f kube-flannel.yml 

安装 flannel 网络后 执行 kubectl get nodes 输出结果如下

zzs@master:~/working$ systemctl restart kubelet
zzs@master:~/working$ kubectl get nodes
NAME     STATUS   ROLES    AGE   VERSION
master   Ready    master   8h    v1.13.1

(此时 master 已经是 Ready 状态了,表示已经配置成功了,那么我们就需要配置
node 来加入这个集群。)

配置 node 1) 确认外部环境

关闭 swap
禁止 selinux
关闭防火墙

2) 配置 k8s 集群的 Node 主机环境

启动 k8s 后台服务:

systemctl enable kubelet
systemctl start kubelet

将 master 机器的/etc/kubernetes/admin.conf 拷贝一份到 node1 和 node2:(写自己的IP地址和目录)

sudo scp /etc/kubernetes/admin.conf zzs@192.168.10.132:/home/zzs/
sudo scp /etc/kubernetes/admin.conf zzs@192.168.10.131:/home/zzs/

登录 node 终端,创建基础 kube 配置文件环境

zzs@node1:~$ mkdir -p $HOME/.kube
zzs@node1:~$ sudo cp -i $HOME/admin.conf $HOME/.kube/config
zzs@node1:~$ sudo chown $(id -u):$(id -g) $HOME/.kube/config

node1 和 node2 分别连接 master 加入 master 集群。这里用的是 kubeadm join
指令:

zzs@node1:~/.kube$ sudo  kubeadm join 192.168.10.133:6443 --token abcdef.0123456789abcdef --discovery-token-ca-cert-hash sha256:66326cad87851e64a1652326184361e61085ccdbe839bbee7dcf9330bb7366c6

这里要注意,使用的 hash 应该是 master 主机 kubeadm init 成功之后生
成的 hash 码。

如果忘记 hash 码:
root@master:~/.kube# kubeadm token create --print-join-command --ttl 0
root@master:~/.kube# kubeadm token list

应用两个 node 主机分别应用 flannel 网络
将 master 中的 kube-flannel.yml 分别传递给两个 node 节点.

sudo scp /home/zzs/working/kube-flannel.yml zzs@192.168.10.132:/home/zzs/
sudo scp /home/zzs/working/kube-flannel.yml zzs@192.168.10.131:/home/zzs/

分别启动 flannel 网络

zzs@node1:~$ kubectl apply -f kube-flannel.yml
zzs@node2:~$ kubectl apply -f kube-flannel.yml

查看 node 是否已经加入到 k8s 集群中(需要等一段时间才能ready

zzs@master:~/working$ kubectl get nodes
NAME     STATUS   ROLES    AGE     VERSION
master   Ready    master   9h      v1.13.1
node1    Ready       9m28s   v1.13.1
node2    Ready       8m49s   v1.13.1
转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/388844.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号