K8S 简单部署笔记

基于B站尚硅谷教程的学习笔记

一、准备工作

  1. 确认学习的时候的部署的方式,使用kubeadm来部署

有两种部署方式,使用kubeadm工具部署,使用二进制部署。

这里kubeadm是官方的部署工具,操作简单。二进制部署有很多配置,可以更好的理解原理。

如果是离线部署,要提前准备好离线包,需要安装的docker,kubelet、kubeadm、kubectl

,calico或者flannel,各种组件的离线安装包ba文件等。

  1. 确认部署的架构,使用单节点master集群的方式

master没有集群效率低,演示够用的,master集群示例如下

  1. 使用VMware创建虚拟机,虚拟机硬件配置要求

    1. master 2c4g 20g

    2. node 4c8g 40g

创建3台虚拟机

安装好centos7系统 ,配置好固定ip(百度)

可以使用 ip addr 显示出当前机器的ip地址,可以用xshell进行ssh登录

我这里的地址是

master 192.168.83.130

node1 192.168.83.131

node2 192.168.83.132

为了方便 把主机名也修改为 master node1 node2

hostnamectl set-hostname master

进行一些准备工作

保证ip固定 可以使用本机xshell登录三台虚拟机,并且虚拟机之间互相可以ping通。

用Xshell是因为操作方便,提高效率

  1. 系统配置的准备,为了防止安装的时候报错

关闭防火墙

关闭selinux

关闭swapoff

可以写成sh脚本 都执行一遍

#关闭防火墙-临时关-永久关

systemctl stop firewalld

systemctl disable firewalld

#关闭selinux-永久关闭-临时关闭

sed -i 's/enforcing/disabled/' /etc/selinux/config

setenforce 0

#关闭swapoff-临时关-永久关闭

swapoff -a

sed -ri 's/.swap./#&/' /etc/fstab

# 在master节点中绑定IP和主机名

cat >> /etc/hosts << EOF

192.168.83.130 master

192.168.83.131 node1

192.168.83.132 node2

EOF

这里kube-proxy 用的是 iptables ,如果用ipvs配置不同

#设置流量转发 将ipv4的流量转发到iptables的链

cat > /etc/sysctl.d/k8s.conf << EOF

net.bridge.bridge-nf-call-ip6tables = 1

net.bridge.bridge-nf-call-iptables = 1

EOF

#执行生效

sysctl --system

  1. 同步时间,因为是联网的,之间联网同步时间,如果是离线的,要配置一个时间服务来同步时间 ,一般服务器上都有默认时间同步,不需要这步,如果没有需要

(如果没有科学上网,配置下国内镜像 ,后面在线安装docker等下载镜像也需要用到参考:

https://developer.aliyun.com/mirror/centos?spm=a2c6h.13651102.0.0.3e221b11CPsfq2

https://blog.csdn.net/weixin_45489155/article/details/106326704)

然后安装

yum -y install ntpdate

ntpdate time.windows.com

如果是离线情况下,方案为一台节点为服务器,其他节点同步这个节点的时间

以上就完成了准备工作

二、给所有的节点安装Dokcer、kubeadm、kubelet

  1. 安装Docker

在线安装:

配置好了镜像后,不知道可选的有哪些版本,先看一下。如果直接安装默认最新的不一定是稳定版本,选择安装一个稳定的版本

yum list docker-ce --showduplicates | sort -r

#同时都指定版本安装 要不然未指定版本的会是最新的,两个版本不一致

yum -y install docker-ce-19.03.0-3.el7 docker-ce-cli-19.03.0-3.el7

--------------

离线安装:

#下载docker-19.03.9离线包,

#上传到服务器/home/images目录下,解压

tar -zxvf docker-19.03.0.tgz

#授权docker文件目录为可执行文件

chmod -R 777 docker

#将docker文件夹复制到/usr/bin目录下

cp -r docker/* /usr/bin/

#创建/etc/docker目录

mkdir -p /etc/docker

---------------------

#新增配置文件/etc/docker/daemon.json文件 配置镜像方便下载,镜像地址自己选

cat <<EOF > /etc/docker/daemon.json

{

"registry-mirrors": ["https://vkayqpp3.mirror.aliyuncs.com"],

"insecure-registries": ["镜像仓库ip:5000"],

"exec-opts": ["native.cgroupdriver=systemd"],

"bip": "10.188.0.1/16",

"log-driver": "json-file",

"storage-driver": "overlay2","log-opts": { "max-size": "64m", "max-file": "3"}

}

EOF

#启动docker 并设置开机启动

systemctl enable docker && systemctl start docker

#查看docker版本

docker --version

#查看docker运行状态

systemctl status docker

#如果是已经启动了,后又去修改daemon配置文件的话,重新载入配置重启docker

systemctl daemon-reload

systemctl restart docker

systemctl enable docker

如果发现安装的不对,卸载已经安装的docker

yum list installed | grep docker  #使用yum安装的docker信息

yum -y remove docker-ce docker-ce-cli #删除安装的docker

rm -rf /var/lib/docker    #删除对应docker配置信息

  1. 安装kubeadm、kubelet、kubectl

在线安装:

#添加阿里云yum源

cat > /etc/yum.repos.d/kubernetes.repo << EOF

[kubernetes]

name=Kubernetes

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

#安装一个稳定版本

yum install -y kubelet-1.18.3 kubeadm-1.18.3 kubectl-1.18.3

#设置开机启动 并启动

systemctl enable kubelet && systemctl start kubelet

#初始化master节点只在master节点上执行 apiserver-advertise-address为当前节点的ip image-repository 为配置的镜像地址 service-cidr pod-network-cidr 不知道是什么的ip 只要不冲突就行

kubeadm init \

--apiserver-advertise-address=192.168.83.130 \

--image-repository registry.aliyuncs.com/google_containers \

--kubernetes-version v1.18.3 \

--service-cidr=10.1.0.0/16 \

--pod-network-cidr=10.244.0.0/16

#master点中 执行返回的信息

mkdir -p $HOME/.kube

sudo cp -i /etc/kubernetes/admin.conf $HOME/.kube/config

sudo chown $(id -u):$(id -g) $HOME/.kube/config

#查看node节点信息

kubectl get nodes

#node点中 执行返回的信息 加入节点

kubeadm join 192.168.83.130:6443 --token nd5928.n3akew59iad120gl \

--discovery-token-ca-cert-hash sha256:64e53782ab2021fc73a6e444112371d655491587e4e82911c5e4c7c2c792c6f7

#返回的token信息 有效期为24小时 过期了要重新获取

kubeadm token create --print-join-command

#要删除节点

kubectl delete node 节点名

配置完成后 可以看到节点的状态都为NotReady 还需要配置网络

  1. Master节点安装Calico 或者 Flannel 打通网络

我们的项目是用的calico ,ipvs转发的,还要配置ipvs的转发

在线安装:

kubectl apply -f https://docs.projectcalico.org/manifests/calico.yaml

kubectl get nodes

状态变为了Ready

  1. 创建pod测试一下

创建一个pod,安装一个ng的镜像测试下(master节点操作)

#下载ng的镜像创建一个pod

kubectl create deployment nginx --image=nginx

#看看创建成功没

kubectl get pod

#配置对外暴露端口

kubectl expose deployment nginx --port=80 --type=NodePort

kubectl get pod,svc

看到端口是32103

打开浏览器打开可以看到两个node节点都能打开ng

master节点也可以

http://192.168.83.130:32103/

http://192.168.83.131:32103/

http://192.168.83.132:32103/

测试成功就结束了。

猜你喜欢

转载自blog.csdn.net/zwyzzz888/article/details/122198473