Ubuntu下搭建Kubernetes集群--k8s部署

Posted xl2432

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Ubuntu下搭建Kubernetes集群--k8s部署相关的知识,希望对你有一定的参考价值。

1. 关闭swap并关闭防火墙

首先,我们需要先关闭swap和防火墙,否则在安装Kubernetes时会导致不成功:

# 临时关闭
swapoff -a

# 编辑/etc/fstab,注释掉包含swap的那一行即可,重启后可永久关闭

ufw disable

2.配置阿里源

sudo echo "deb http://mirrors.ustc.edu.cn/kubernetes/apt kubernetes-xenial main" > /etc/apt/sources.list.d/kubernetes.list

然后更新下:

sudo apt update

3. 安装组件

sudo apt install -y kubelet kubeadm kubectl
sudo apt-mark hold kubelet kubeadm kubectl #确保不会被自动更新

4. 配置kubelet的cgroup drive

需要确保kubelet的cgroup drive在docker的一致。
分别可以通过以下命令查看:

docker info | grep -i cgroup

cat /etc/systemd/system/kubelet.service.d/10-kubeadm.conf

若显示不一样,则添加或修改Environment="KUBELET_CGROUP_ARGS=--cgroup-dirver=cgroupfs"

systemctl daemon-reload
systemctl restart kubelet

5. 启动kubelet

systemctl enable kubelet && systemctl start kubelet

6. 下载K8S的Docker镜像

/etc/apt/sources.list中添加阿里源:


deb http://mirrors.aliyun.com/ubuntu/ xenial main
deb-src http://mirrors.aliyun.com/ubuntu/ xenial main
 
deb http://mirrors.aliyun.com/ubuntu/ xenial-updates main
deb-src http://mirrors.aliyun.com/ubuntu/ xenial-updates main
 
deb http://mirrors.aliyun.com/ubuntu/ xenial universe
deb-src http://mirrors.aliyun.com/ubuntu/ xenial universe
deb http://mirrors.aliyun.com/ubuntu/ xenial-updates universe
deb-src http://mirrors.aliyun.com/ubuntu/ xenial-updates universe
 
deb http://mirrors.aliyun.com/ubuntu/ xenial-security main
deb-src http://mirrors.aliyun.com/ubuntu/ xenial-security main
deb http://mirrors.aliyun.com/ubuntu/ xenial-security universe
deb-src http://mirrors.aliyun.com/ubuntu/ xenial-security universe

sudo apt update更新下源。

首先使用kubeadm config images list显示我们需要下载的镜像。
uploading-image-472461.png
技术图片

然后从mirrorgooglecontainers上把这些镜像都拉下来,以免在初始化的时候从k8s.gcr.io拉取:

docker pull mirrorgooglecontainers/kube-apiserver:v1.14.2
docker pull mirrorgooglecontainers/kube-controller-manager:v1.14.2
docker pull mirrorgooglecontainers/kube-scheduler:v1.14.2
docker pull mirrorgooglecontainers/kube-proxy:v1.14.2
docker pull mirrorgooglecontainers/pause:3.1
docker pull mirrorgooglecontainers/etcd:3.3.10
docker pull coredns/coredns:1.3.1

具体版本请自行修改。

然后修改tag成k8s执行init检查的镜像:


docker tag mirrorgooglecontainers/kube-apiserver:v1.14.2 k8s.gcr.io/kube-apiserver:v1.14.2
docker tag mirrorgooglecontainers/kube-controller-manager:v1.14.2 k8s.gcr.io/kube-controller-manager:v1.14.2
docker tag mirrorgooglecontainers/kube-scheduler:v1.14.2 k8s.gcr.io/kube-scheduler:v1.14.2
docker tag mirrorgooglecontainers/kube-proxy:v1.14.2 k8s.gcr.io/kube-proxy:v1.14.2
docker tag mirrorgooglecontainers/pause:3.1 k8s.gcr.io/pause:3.1
docker tag mirrorgooglecontainers/etcd:3.3.10 k8s.gcr.io/etcd:3.3.10
docker tag coredns/coredns:1.3.1 k8s.gcr.io/coredns:1.3.1

注意,至此基础的组件都安装完成,接下来要根据是master节点还是普通node节点来分别配置。

7. master节点配置

在master节点上运行:

kubeadm init --pod-network-cidr=10.0.0.0/24 --kubernetes-version=v1.14.2 --apiserver-advertise-address=10.0.2.15

注意:

pod-network-cidr: 选项--pod-network-cidr=10.0.0.0/24表示集群将使用网络的子网范围;

选项--kubernetes-version=v1.14.2指定K8S版本,必须和前面导入的镜像一致。

选项--apiserver-advertise-address表示绑定的网卡IP,这里是指定所用网络的网卡。

若执行kubeadm init出错或强制终止,则再需要执行该命令时,需要先执行kubeadm reset重置。

技术图片

执行成功后,它提示还需要执行:

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

此外最后还会提示其他节点加入集群时的命令:

kubeadm join 10.0.2.15:6443 --token zuhiop.bmxq2jofv1j68o9o     --discovery-token-ca-cert-hash sha256:b65ca09d1f18ef0af3ded2c831c609dfe48b19c5dc53a8398af5b735603828fb

不过需要注意的是这里的token值24小时后会失效,因此,当以后还想加入节点时,可以先用kubeadm token list命令查看当前的token表。

此时我们查看网络状态kubectl get pod -n kube-system,可以发现都处于Pending阻塞状态,此时,我们需要配置网络,直接使用Calico,即执行:

kubectl apply -f https://docs.projectcalico.org/v3.3/getting-started/kubernetes/installation/hosted/rbac-kdd.yaml
kubectl apply -f https://docs.projectcalico.org/v3.3/getting-started/kubernetes/installation/hosted/kubernetes-datastore/calico-networking/1.7/calico.yaml

过段时间,再执行kubectl get pod -n kube-system就会发现都处于running状态了。

最后将master设为工作节点:

kubectl taint nodes --all node-role.kubernetes.io/master-

执行成功时会显示

node/xl-virtualbox untainted

对于mater至此配置成功,可以使用kubectl get nodes命令查看节点状态。当然目前只有一个master节点。

8.普通工作节点

对于普通的node节点,只需执行:

kubeadm join 10.0.2.15:6443 --token zuhiop.bmxq2jofv1j68o9o     --discovery-token-ca-cert-hash sha256:b65ca09d1f18ef0af3ded2c831c609dfe48b19c5dc53a8398af5b735603828fb

就可以了。

以上是关于Ubuntu下搭建Kubernetes集群--k8s部署的主要内容,如果未能解决你的问题,请参考以下文章

kubernetes— 记一次用kubeadm搭建kubernetes v1.9.0集群

高可用kubernetes集群搭建

云原生之kubernetes实战在k8s集群下搭建gitlab

基于Linux(Ubuntu20.04)初步搭建k8s集群基础,详细教程

利用local nginx搭建k8s-1.17.4高可用kubernetes集群

云原生 • Kubernetes搭建 k8s 集群(Kubeadm 方式)