K8s集群部署

使用kubeadm搭建k8s集群

集群环境规划

4台虚拟机,每台至少2G内存,2个CPU,能联网

  • 192.168.10.102 k8smaster节点
  • 192.168.10.103 k8snode1节点
  • 192.168.10.104 k8snode2节点
  • 192.168.10.105 nfs服务器

虚拟机配置

4台虚拟机都需要操作

# 关闭防火墙
systemctl stop firewalld
systemctl disable firewalld

# 关闭selinux
sed -i 's/enforcing/disabled/' /etc/selinux/config  # 永久
setenforce 0  # 临时

# 关闭swap
swapoff -a  # 临时
sed -ri 's/.*swap.*/#&/' /etc/fstab    # 永久

# 根据规划设置主机名[不同的节点执行设置不同的主机名]
hostnamectl set-hostname k8smaster
hostnamectl set-hostname k8snode1
hostnamectl set-hostname k8snode2
hostnamectl set-hostname nfs

# 在master添加hosts [nfs服务器的主机名映射可以不需要]
cat >> /etc/hosts << EOF
192.168.10.102 k8smaster
192.168.10.103 k8snode1
192.168.10.104 k8snode2
EOF

# 将桥接的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  # 生效

# 时间同步
yum install ntpdate -y
ntpdate time.windows.com

安装docker

除了nfs服务器,其余3个节点都需要安装

wget https://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo -O /etc/yum.repos.d/docker-ce.repo

yum -y install docker-ce-18.06.1.ce-3.el7

systemctl enable docker && systemctl start docker

cat > /etc/docker/daemon.json << EOF
{
  "registry-mirrors": ["https://b9pmyelo.mirror.aliyuncs.com"]
}
EOF

systemctl restart docker

安装kubeadm,kubelet,kubectl

除了nfs服务器,其余3个节点都需要安装
配置阿里云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=0
repo_gpgcheck=0
gpgkey=https://mirrors.aliyun.com/kubernetes/yum/doc/yum-key.gpg https://mirrors.aliyun.com/kubernetes/yum/doc/rpm-package-key.gpg
EOF

安装kubeadm,kubelet,kubectl

yum install -y kubelet-1.18.0 kubeadm-1.18.0 kubectl-1.18.0
systemctl enable kubelet

安装Master

在k8sMaster服务器上执行
初始化Master,只需要修改其中的192.168.10.102为自己的服务器ip

kubeadm init \
  --apiserver-advertise-address=192.168.10.102 \
  --image-repository registry.aliyuncs.com/google_containers \
  --kubernetes-version v1.18.0 \
  --service-cidr=10.96.0.0/12 \
  --pod-network-cidr=10.244.0.0/16

上诉命令得到的结果如下:

Your Kubernetes master has initialized successfully!
 
To start using your cluster, you need to run the following as a regular user:
 
  mkdir -p $HOME/.kube
  sudo cp -i /etc/kubernetes/admin.conf $HOME/.kube/config
  sudo chown $(id -u):$(id -g) $HOME/.kube/config
 
You should now deploy a pod network to the cluster.
Run "kubectl apply -f [podnetwork].yaml" with one of the options listed at:
  https://kubernetes.io/docs/concepts/cluster-administration/addons/
 
You can now join any number of machines by running the following on each node
as root:
 
  kubeadm join 192.168.10.102:6443 --token 702gz5.49zhotgsiyqimwqw --discovery-token-ca-cert-hash sha256:2bc50229343849e8021d2aa19d9d314539b40ec7a311b5bb6ca1d3cd10957c2f

从得到的结果中复制执行:

```powershell
  mkdir -p $HOME/.kube
  sudo cp -i /etc/kubernetes/admin.conf $HOME/.kube/config
  sudo chown $(id -u):$(id -g) $HOME/.kube/config

安装Node节点

在k8snode1和k8snode2上执行
根据master初始化返回得到的结果[kubeadm join…]

kubeadm join 192.168.10.102:6443 --token esce21.q6hetwm8si29qxwn \
    --discovery-token-ca-cert-hash sha256:00603a05805807501d7181c3d60b478788408cfe6cedefedb1f97569708be9c5

注意:如果日志找不到了,可以用下面命令找到其中的token值和sha256值:

kubeadm token create --print-join-command

安装CNI网络插件

在k8sMaster节点执行

wget https://raw.githubusercontent.com/coreos/flannel/master/Documentation/kube-flannel.yml

下载后需要 修改其中的image为国内镜像源。如果无法下载请参考 创建kube-flannel.yaml
部署插件应用

kubectl apply -f kube-flannel.yaml

搭建Harbor私服

在k8sMaster节点执行
下载harbor软件包
在这里插入图片描述
上传到k8sMaster的/root目录,解压得到一个harbor目录

tar -zxvf harbor-offline-installer-v2.1.0-rc1.tgz

进入harbor目录,修改配置文件

cd harbor
mv harbor.yml.tmpl harbor.yml
vim harbor.yml
	修改hostname为k8sMaster的ip
	注释https里面的内容
	记住其中的harbor_admin_password: Harbor12345(初始化登录密码)

在这里插入图片描述
执行脚本下载相关镜像,并且运行镜像
注意:需要提前在k8smaster上安装docker-compose(自行安装)

./install.sh

界面使用k8sMaster的ip访问: 192.168.10.102:80 [admin/Harbor12345]
配置k8sMaster节点镜像从Harbor拉取

vim /etc/docker/daemon.json
	{ 
		"insecure-registries":["192.168.10.102"]  #这个ip是k8sMaster的ip
	}

重启docker和harbor

	systemctl daemon-reload
	systemctl restart docker
	## harbor目录下执行
	docker-compose stop
	docker-compose start

所有node节点配置Harbor镜像拉取

node节点k8snode1 k8snode2上执行

vim /etc/docker/daemon.json
	{ 
		"insecure-registries":["192.168.10.102"]  #这个ip是k8sMaster的ip
	}
systemctl daemon-reload
systemctl restart docker

任意节点登录harbor并推送镜像到harbor仓库

docker login 192.168.10.102
输入用户名密码:  admin     Harbor12345
docker tag 本地镜像:tag  仓库地址/项目地址/容器名:tag
## 例如: docker tag nginx:latest 192.168.10.102/test/nginx:1.0
## 其中的test需要登录harbor界面,创建一个项目的名称
docker push 192.168.10.102/test/nginx:1.0

nfs存储搭建

在nfs服务器执行

yum install -y nfs-utils
vim /etc/exports
	/data/nfs *(rw,no_root_squash)   [指定/data/nfs目录为挂载地址]
mkdir /data/nfs
在k8s集群中所有的node节点上安装nfs:  yum install -y nfs-utils
在nfs服务器上启动nfs:systemctl start nfs
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值