kubernetes(一) 单master集群搭建

kubernets介绍

Kubernetes 是用于自动部署,扩展和管理容器化应用程序的开源系统。它将组成应用程序的容器组合成逻辑单元,以便于管理和服务发现。Kubernetes 源自Google 15 年生产环境的运维经验,同时凝聚了社区的最佳创意和实践。也是迄今为止最流行的容器编排部署工具。

虚拟机准备

因为本次部署为单master双node节点,所以准备了3台虚拟机,系统版本为CentOS Linux release 7.6.1810,配置都为2核心4G内存。

环境准备

配置固定ip、主机名 (三台主机分别配置)

先配置主机名

[root@localhost ~]# hostnamectl set-hostname k8s-master
[root@localhost ~]# hostnamectl set-hostname k8s-node1
[root@localhost ~]# hostnamectl set-hostname k8s-node2

配置固定ip

[root@k8s-master ~]# vi /etc/sysconfig/network-scripts/ifcfg-ens33
TYPE="Ethernet"
PROXY_METHOD="none"
BROWSER_ONLY="no"
BOOTPROTO="none"
IPADDR=192.168.178.200
NETMASK=255.255.255.0
GATEWAY=192.168.178.2
DNS1=192.168.178.2
DNS2=222.222.222.222
DEFROUTE="yes"
IPV4_FAILURE_FATAL="no"
NAME="ens33"
UUID="d308a0b7-dab8-4e15-bf26-12c43fcec28f"
DEVICE="ens33"
ONBOOT="yes"

重启网卡

[root@k8s-master ~]#systemctl restart network

最后三台服务器主机名对应ip为:

主机名IP
k8s-master192.168.178.200
k8s-node1192.168.178.201
k8s-node2192.168.178.202

hosts文件配置

[root@k8s-master ~]# vi /etc/hosts
127.0.0.1   localhost localhost.localdomain localhost4 localhost4.localdomain4
::1         localhost localhost.localdomain localhost6 localhost6.localdomain6
192.168.178.200 k8s-master
192.168.178.201 k8s-node1
192.168.178.202 k8s-node2
[root@k8s-master ~]# scp /etc/hosts k8s-node1:/etc/hosts
[root@k8s-master ~]# scp /etc/hosts k8s-node2:/etc/hosts
yum源配置

因为服务器内置为国外源下载安装包较慢,全部替换为国内源
首先安装wget工具,三台服务器都要安装

[root@k8s-master ~]# yum install -y wget
新建备份文件夹
[root@k8s-master ~]# mkdir /etc/yum.repos.d/repo.bak
把原有仓库放到备份文件夹
[root@k8s-master ~]# mv /etc/yum.repos.d/*.repo /etc/yum.repos.d/repo.bak/

配置国内源

[root@k8s-master ~]# wget -O /etc/yum.repos.d/CentOS-Base.repo http://mirrors.aliyun.com/repo/Centos-7.repo
[root@k8s-master ~]# wget -O /etc/yum.repos.d/epel.repo http://mirrors.aliyun.com/repo/epel-7.repo
[root@k8s-master ~]# wget -O /etc/yum.repos.d/docker-ce.repo https://mirrors.tuna.tsinghua.edu.cn/docker-ce/linux/centos/docker-ce.repo

配置kubernetes国内源

cat <<EOF > /etc/yum.repos.d/kubernetes.repo
[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 clean all && yum makecache
其他配置

关闭防火墙

systemctl stop firewalld && systemctl disable firewalld

关闭selinux

sed -i  's/SELINUX=enforcing/SELINUX=disabled/' /etc/sysconfig/selinux

关闭swap分区

 sed -i 's%^/dev/mapper/centos-swap %#/dev/mapper/centos-swap%' /etc/fstab

内核配置

modprobe br_netfilter &&
cat <<EOF | sudo tee /etc/sysctl.d/k8s.conf
net.bridge.bridge-nf-call-ip6tables = 1
net.bridge.bridge-nf-call-iptables = 1
EOF

sysctl --system

docker配置

mkdir /etc/docker &&
cat > /etc/docker/daemon.json <<EOF
{
  "exec-opts": ["native.cgroupdriver=systemd"],
  "log-driver": "json-file",
  "log-opts": {
    "max-size": "100m"
  },
  "storage-driver": "overlay2"
}
EOF

安装docker和kubeadm

yum install -y kubeadm docker-ce

安装完成后重启服务器,注意三台都要这么配置哦!
重启完成后,启动docker和kubelet

systemctl start docker && systemctl enable docker && systemctl start kubelet && systemctl enable kubelet

查看需要的容器镜像

[root@k8s-master ~]# kubeadm config images list
W0731 14:26:02.629709   18908 configset.go:202] WARNING: kubeadm cannot validate component configs for API groups [kubelet.config.k8s.io kubeproxy.config.k8s.io]
k8s.gcr.io/kube-apiserver:v1.18.6
k8s.gcr.io/kube-controller-manager:v1.18.6
k8s.gcr.io/kube-scheduler:v1.18.6
k8s.gcr.io/kube-proxy:v1.18.6
k8s.gcr.io/pause:3.2
k8s.gcr.io/etcd:3.4.3-0
k8s.gcr.io/coredns:1.6.7

使用docker拉取镜像(需要梯子)

[root@k8s-master ~]#  kubeadm config images list > imageList
[root@k8s-master ~]# vi imagePull.sh
#!/bin/bash
list=`cat imageList`
for i in $list
do
docker pull $i
done
[root@k8s-master ~]# sh imagePull.sh

对于无法翻墙的朋友们,可以去我的百度网盘下载:
链接: https://pan.baidu.com/s/1vnuKYp8hdhiY5Yph-ykTcQ 密码: o53b
下载完镜像之后只需要解压然后执行里面的load脚本就行。
镜像下载完毕后,就可以进行集群初始化了

[root@k8s-master ~]# kubeadm init
......
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/

Then you can join any number of worker nodes by running the following on each as root:

kubeadm join 192.168.178.200:6443 --token cmmrn0.ococ5vqnk61t0fid \
    --discovery-token-ca-cert-hash sha256:ad1ab6666e18eda6a1aecae5121fa4905111c0e7599710779f1cb5d0cea2359d

按照提示执行一下操作

[root@k8s-master ~]# mkdir -p $HOME/.kube
[root@k8s-master ~]# cp -i /etc/kubernetes/admin.conf $HOME/.kube/config
[root@k8s-master ~]# chown $(id -u):$(id -g) $HOME/.kube/config

[root@k8s-node1 ~]# kubeadm join 192.168.178.200:6443 --token cmmrn0.ococ5vqnk61t0fid \
>     --discovery-token-ca-cert-hash sha256:ad1ab6666e18eda6a1aecae5121fa4905111c0e7599710779f1cb5d0cea2359d

[root@k8s-node2 ~]# kubeadm join 192.168.178.200:6443 --token cmmrn0.ococ5vqnk61t0fid \
>     --discovery-token-ca-cert-hash sha256:ad1ab6666e18eda6a1aecae5121fa4905111c0e7599710779f1cb5d0cea2359d

执行完上述命令后(没有报错)查看下集群状态

[root@k8s-master ~]# kubectl get node
NAME         STATUS     ROLES    AGE     VERSION
k8s-master   NotReady   master   12m     v1.18.6
k8s-node1    NotReady   <none>   3m8s    v1.18.6
k8s-node2    NotReady   <none>   2m17s   v1.18.6

发现集群节点不可用那是因为我们还没有安装网络插件,下面我们来安装网络插件
calico镜像网盘地址为:
链接: https://pan.baidu.com/s/11WM-FWuv7SyhlLH5oZJYdA 密码: j2jf

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

安装好插件后再来查看状态

[root@k8s-master ~]# kubectl get nodes
NAME         STATUS   ROLES    AGE    VERSION
k8s-master   Ready    master   151m   v1.18.6
k8s-node1    Ready    <none>   142m   v1.18.6
k8s-node2    Ready    <none>   141m   v1.18.6

至此集群安装好了
参考文档:1、https://kubernetes.io/docs/setup/production-environment/tools/kubeadm/install-kubeadm/
2、https://kubernetes.io/docs/setup/production-environment/container-runtimes
3、https://docs.projectcalico.org/getting-started/kubernetes/self-managed-onprem/onpremises

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值