0、系统安装

镜像下载 与 虚拟机安装:https://releases.ubuntu.com/18.04/ubuntu-18.04.6-desktop-amd64.iso

1、准备工作

// 关闭交换空间:
swapoff -a     // 临时关闭
vi /etc/fstab  // 永久关闭
/*用#号 屏蔽掉 swap 那一行*/
// 主机名等在虚拟机创建时已经设置完毕
hostnamectl set-hostname k8s-master
// 设置hosts地址解析
vim /etc/hosts
192.168.253.8 k8s-master
192.168.253.11 k8s-node01
192.168.253.12 k8s-node02
192.168.253.21 k8s-Edge01
192.168.253.22 k8s-Edge02
// 换源
cp /etc/apt/sources.list /etc/apt/sources.list.backup // 官方源备份
apt install -y vim && vim /etc/apt/sources.list    // 插入阿里源
/*
deb http://mirrors.aliyun.com/ubuntu/ bionic main restricted universe multiverse
deb-src http://mirrors.aliyun.com/ubuntu/ bionic main restricted universe multiverse

deb http://mirrors.aliyun.com/ubuntu/ bionic-security main restricted universe multiverse
deb-src http://mirrors.aliyun.com/ubuntu/ bionic-security main restricted universe multiverse

deb http://mirrors.aliyun.com/ubuntu/ bionic-updates main restricted universe multiverse
deb-src http://mirrors.aliyun.com/ubuntu/ bionic-updates main restricted universe multiverse

deb http://mirrors.aliyun.com/ubuntu/ bionic-proposed main restricted universe multiverse
deb-src http://mirrors.aliyun.com/ubuntu/ bionic-proposed main restricted universe multiverse

deb http://mirrors.aliyun.com/ubuntu/ bionic-backports main restricted universe multiverse
deb-src http://mirrors.aliyun.com/ubuntu/ bionic-backports main restricted universe multiverse
*/
sudo apt update

2、软件环境(docker的安装)

(
cat <<EOF
deb [arch=amd64] https://download.docker.com/linux/ubuntu bionic stable
EOF
) > /etc/apt/sources.list.d/docker.list
curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo apt-key add -
apt update
apt -y install docker-ce-cli=5:18.09.9~3-0~ubuntu-bionic
apt-mark hold docker-ce-cli
apt -y install docker-ce=5:18.09.9~3-0~ubuntu-bionic // containerd.io 自动安装
apt-mark hold docker-ce containerd.io

docker安装完成后,使用docker info 查看生成信息,着重检查一下几点:

Cgroup Driver: systemd
Storage Driver: overlay2
    
如下程序可以对上述配置进行设置
# 创建或替换 /etc/docker/daemon.json 以启用 cgroup 的 systemd 驱动
$ sudo 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
systemctl daemon-reload
systemctl restart docker
// 注意:执行docker info无报错后发可往下执行!

3、正式安装k8s

(1)安装K8s相关软件

// 创建kubernetes的repo
sudo apt-get update && sudo apt-get install -y apt-transport-https curl
// 添加密钥
sudo curl -s https://mirrors.aliyun.com/kubernetes/apt/doc/apt-key.gpg | sudo apt-key add -
// 添加国内下载源,注意受限于版本限制,这里的xenial莫要去更改它!!
sudo tee /etc/apt/sources.list.d/kubernetes.list <<-'EOF'
deb https://mirrors.aliyun.com/kubernetes/apt kubernetes-xenial main
EOF
// 更新安装包信息
sudo apt-get update
// 查看当前环境下合适的安装版本
apt-cache madison kubelet
// 安装指定版本的K8S
apt-get install -y kubelet=1.15.12-00 kubeadm=1.15.12-00 kubectl=1.15.12-00
// 为保证项目中其他模块不受影响,此处对K8s版本进行锁定,以避免误操作使其版本发生变化
apt-mark hold kubelet=1.15.12-00 kubeadm=1.15.12-00 kubectl=1.15.12-00
// 设置开机自启动
systemctl enable kubelet && sudo systemctl start kubelet
// 截至目前虽然已安装好软件,当还无法部署,因为国内网络原因需要使用一些技巧拉取一下部署镜像!

(2)拉取k8s部署镜像

// 本文给大家提供了下载好的镜像文件
链接:https://pan.baidu.com/s/18QGGi-s3uTstRBQfVpQEQA
提取码:g378

// 查询当前环境需要的镜像
kubeadm config images list --kubernetes-version=v1.15.12
/*
系统输出如下:
	k8s.gcr.io/kube-apiserver:v1.15.12
	k8s.gcr.io/kube-controller-manager:v1.15.12
	k8s.gcr.io/kube-scheduler:v1.15.12
	k8s.gcr.io/kube-proxy:v1.15.12
	k8s.gcr.io/pause:3.1
	k8s.gcr.io/etcd:3.3.10
	k8s.gcr.io/coredns:1.3.1
*/
// 由于k8s.gcr.io、quay.io等被墙,相关镜像先再其他仓库下载,然后再重打标签进行使用
镜像下载方法:
可直接在PC上下载,如果PC能FQ当然最好不过了,不过不FQ也能下
官网镜像网址:   https://hub.docker.com/
docker tag gcmirrors/kube-apiserver-amd64:v1.15.12 k8s.gcr.io/kube-apiserver:v1.15.12

// 下载好后,按照txt文档对镜像进行导入,并重新打上官方标签
docker load < flanneld-v0.12.0-amd64.docker
// 更多细节可参考这篇博客:
https://www.cnblogs.com/embedded-linux/p/10776221.html

(3)k8s-Master节点部署

// 以上步骤执行完后即可开始进行k8s的部署
先生成一个引导令牌来验证加入集群的节点
TOKEN=$(sudo kubeadm token generate)
echo $TOKEN
// 初始化主节点
sudo kubeadm init --token=${TOKEN} --kubernetes-version=v1.15.12 --pod-network-cidr=10.244.0.0/16
// 创建成功会给出如下提示:
/*
Your Kubernetes control-plane 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/

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

kubeadm join 192.168.253.8:6443 --token yh4w3s.sdbg5np6v3reno5m \
    --discovery-token-ca-cert-hash sha256:3197f454f00883d7e0d1caa180c35ef2b42e20d414c38ac040a5a148598d105d 
*/

初始化成功后,按照文中提示,首先执行以下语句:

  mkdir -p $HOME/.kube
  sudo cp -i /etc/kubernetes/admin.conf $HOME/.kube/config
  sudo chown $(id -u):$(id -g) $HOME/.kube/config  //若当前用户不是root用户需要执行

上面语句执行完后,现在执行kubectl get nodes,会发现master节点并不是ready状态,原因是还没初始化节点网络,

链接:https://pan.baidu.com/s/1hjcMa5eM-CVDliFGNhHdiA 提取码:3udu

可执行下面语句进行镜像导入
docker load < flanneld-v0.12.0-amd64.docker
// 导入后,执行下面语句初始化节点网络
kubectl apply -f kube-flannel.yml
// 初始化成功后,再执行
kubectl get nodes
// 此时,master节点已成ready状态

如果kubeadm 生成的token过期后,此时集群需要增加节点则执行如下语句:

重新生成密钥:
kubeadm token create

openssl x509 -pubkey -in /etc/kubernetes/pki/ca.crt | openssl rsa -pubin -outform der 2>/dev/null |
openssl dgst -sha256 -hex | sed ‘s/^.* //’

kubeadm join --token aa78f6.8b4cafc8ed26c34f --discovery-token-ca-cert-hash sha256:0fd95a9bc67a7bf0ef42da968a0d55d92e52898ec37c971bd77ee501d845b538 172.16.6.79:6443 --skip-preflight-checks

截止到此处,k8s的master节点已部署完成。

(4)k8s-node节点部署

node节点只需要执行master节点自动生成的注册语句即可加入master集群

kubeadm join 192.168.253.8:6443 --token yh4w3s.sdbg5np6v3reno5m \
    --discovery-token-ca-cert-hash sha256:3197f454f00883d7e0d1caa180c35ef2b42e20d414c38ac040a5a148598d105d 
Logo

K8S/Kubernetes社区为您提供最前沿的新闻资讯和知识内容

更多推荐