k8s安装——ubuntu

目录

一、环境准备

二、安装docker(所有机器——是指所有的节点包含master和node,后面也一样单独装的会说明)

三、设置k8s环境准备条件(所有机器)

四、安装与配置k8s

        1 安装 kubelet kubeadm kubectl(master上执行)

        2 部署 master (master上执行)

(1)首先查看kubeadm config 依赖的images有哪些:

(2)然后从国内镜像拉取这些镜像(有些是可以直接拉取的,比如 k8s.gcr.io/coredns/coredns:v1.8.6)

 (3)然后根据(1)中的依赖对这些镜像进行重命名(这里要注意重命名的版本号有的是带v的,有的是不带的)注意看清楚。

    3 执行初始化操作

    4 获取加入集群的命令

    5 部署工作节点(在node上执行)

     (1)安装环境

     (2)加入集群

五、部署 Calico(master机器)

六、完成


一、环境准备

本次安装的docker和k8s版本为:

ubuntu -v20.04

k8s -v1.23.1

主机

内网地址

说明

47.200.162.6

172.31.186.226

master节点,能连外网,至少2核CPU,2G内存

47.200.168.250

172.31.186.227

node节点,能连外网,至少2核CPU,2G内存

二、安装docker(所有机器——是指所有的节点包含master和node,后面也一样单独装的会说明)

# 安装docker所需的工具(安装最新版即可)
apt-get update
apt-get install docker.io -y
# 设置开机启动并启动docker  
sudo systemctl start docker
sudo systemctl enable docker

三、设置k8s环境准备条件(所有机器)

# 禁用交换分区(在旧版的 k8s 中 kubelet 都要求关闭 swapoff ,但最新版的 kubelet 其实已经支持 swap ,因此这一步其实可以不做。)
swapoff -a
# 永久禁用,打开/etc/fstab注释掉swap那一行。  
sudo vim /etc/fstab
# 修改内核参数(首先确认你的系统已经加载了 br_netfilter 模块,默认是没有该模块的,需要你先安装 bridge-utils)
apt-get install -y bridge-utils
modprobe br_netfilter
lsmod | grep br_netfilter
# 如果报错找不到包,需要先更新 apt-get update -y

四、安装与配置k8s

        1 安装 kubelet kubeadm kubectl(master上执行)

# 安装基础环境
apt-get install -y ca-certificates curl software-properties-common apt-transport-https curl
curl -s https://mirrors.aliyun.com/kubernetes/apt/doc/apt-key.gpg | sudo apt-key add -
# 执行配置k8s阿里云源  
vim /etc/apt/sources.list.d/kubernetes.list
#加入以下内容
deb https://mirrors.aliyun.com/kubernetes/apt/ kubernetes-xenial main
# 执行更新
apt-get update -y
# 安装kubeadm、kubectl、kubelet  
apt-get install -y kubelet=1.23.1-00 kubeadm=1.23.1-00 kubectl=1.23.1-00
# 阻止自动更新(apt upgrade时忽略)。所以更新的时候先unhold,更新完再hold。
apt-mark hold kubelet kubeadm kubectl

安装如果报错的话,需要先卸载原有的kubectl、kubeadm、kubelet 然后再执行安装       

        2 部署 master (master上执行)

        创建kubeadm-config.yaml 配置文件,文件内容如下:

apiVersion: kubeadm.k8s.io/v1beta3
bootstrapTokens:
- groups:
  - system:bootstrappers:kubeadm:default-node-token
  token: abcdef.0123456789abcdef
  ttl: 24h0m0s
  usages:
  - signing
  - authentication
kind: InitConfiguration
localAPIEndpoint:
  advertiseAddress: 172.31.186.226
  bindPort: 6443
nodeRegistration:
  criSocket: /var/run/dockershim.sock
  imagePullPolicy: IfNotPresent
  name: master
  taints: null
---
apiServer:
  timeoutForControlPlane: 4m0s
apiVersion: kubeadm.k8s.io/v1beta3
certificatesDir: /etc/kubernetes/pki
clusterName: kubernetes
controllerManager: {}
dns: {}
etcd:
  local:
    dataDir: /var/lib/etcd
imageRepository: registry.cn-hangzhou.aliyuncs.com/google_containers
kind: ClusterConfiguration
kubernetesVersion: 1.23.1
networking:
  dnsDomain: cluster.local
  serviceSubnet: 10.96.0.0/12
scheduler: {}
---
kind: KubeletConfiguration
apiVersion: kubelet.config.k8s.io/v1beta1
#cgroupDriver: systemd
cgroupDriver: cgroupfs

        修改 文件中的advertiseAddress 参数为当前机器的局域网地址

        在运行 kubeadm init 之前可以先执行 kubeadm config images pull 来测试与 gcr.io 的连接,kubeadm config images pull尝试是否可以拉取镜像,如果你的服务器再国内,由于某些原因,是无法访问"k8s.gcr.io", "gcr.io", "quay.io"

先测试:

kubeadm config images pull

如果不能正常拉取,那么接着往下,如果可以正常拉取,可以直接跳转到 下一步 四.3

(1)首先查看kubeadm config 依赖的images有哪些:

#查看kubeadm config所需的镜像
kubeadm config images list
#执行结果如下
k8s.gcr.io/kube-apiserver:v1.23.8
k8s.gcr.io/kube-controller-manager:v1.23.8
k8s.gcr.io/kube-scheduler:v1.23.8
k8s.gcr.io/kube-proxy:v1.23.8
k8s.gcr.io/pause:3.6
k8s.gcr.io/etcd:3.5.1-0
k8s.gcr.io/coredns/coredns:v1.8.6

(2)然后从国内镜像拉取这些镜像(有些是可以直接拉取的,比如 k8s.gcr.io/coredns/coredns:v1.8.6)

#从国内镜像拉取
docker pull registry.cn-hangzhou.aliyuncs.com/google_containers/kube-apiserver:v1.23.8
docker pull registry.cn-hangzhou.aliyuncs.com/google_containers/kube-controller-manager:v1.23.8
docker pull registry.cn-hangzhou.aliyuncs.com/google_containers/kube-scheduler:v1.23.8
docker pull registry.cn-hangzhou.aliyuncs.com/google_containers/kube-proxy:v1.23.8
docker pull registry.cn-hangzhou.aliyuncs.com/google_containers/pause:3.6
docker pull registry.cn-hangzhou.aliyuncs.com/google_containers/etcd:3.5.1-0
docker pull coredns/coredns:1.8.6

 (3)然后根据(1)中的依赖对这些镜像进行重命名(这里要注意重命名的版本号有的是带v的,有的是不带的)注意看清楚。

#将拉取下来的images重命名为kubeadm config所需的镜像名字
docker tag registry.cn-hangzhou.aliyuncs.com/google_containers/kube-apiserver:v1.23.8 k8s.gcr.io/kube-apiserver:v1.23.8
docker tag registry.cn-hangzhou.aliyuncs.com/google_containers/kube-controller-manager:v1.23.8 k8s.gcr.io/kube-controller-manager:v1.23.8
docker tag registry.cn-hangzhou.aliyuncs.com/google_containers/kube-scheduler:v1.23.8 k8s.gcr.io/kube-scheduler:v1.23.8
docker tag registry.cn-hangzhou.aliyuncs.com/google_containers/kube-proxy:v1.23.8 k8s.gcr.io/kube-proxy:v1.23.8
docker tag registry.cn-hangzhou.aliyuncs.com/google_containers/pause:3.6 k8s.gcr.io/pause:3.6
docker tag registry.cn-hangzhou.aliyuncs.com/google_containers/etcd:3.5.1-0 k8s.gcr.io/etcd:3.5.1-0
docker tag coredns/coredns:1.8.6 k8s.gcr.io/coredns/coredns:v1.8.6

    3 执行初始化操作

kubeadm init --config kubeadm-config.yaml

执行成功后会提醒如下三件事

k8s安装——ubuntu_第1张图片

会提示你输入如下命令,复制粘贴过来,执行即可。

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

    4 获取加入集群的命令

记住node加入集群的命令 上面kubeadm init执行成功后会返回给你node节点加入集群的命令,等会要在node节点上执行,需要保存下来,如果忘记了,可以使用如下命令获取。

kubeadm token create --print-join-command

    5 部署工作节点(在node上执行)

     (1)安装环境

# 安装基础环境
apt-get install -y ca-certificates curl software-properties-common apt-transport-https curl
curl -s https://mirrors.aliyun.com/kubernetes/apt/doc/apt-key.gpg | sudo apt-key add -
# 执行配置k8s阿里云源  
vim /etc/apt/sources.list.d/kubernetes.list
#加入以下内容
deb https://mirrors.aliyun.com/kubernetes/apt/ kubernetes-xenial main
# 执行更新
apt-get update -y
# 安装kubeadm、kubectl、kubelet  
apt-get install -y kubelet=1.23.1-00 kubeadm=1.23.1-00 kubectl=1.23.1-00
# 阻止自动更新(apt upgrade时忽略)。所以更新的时候先unhold,更新完再hold。
apt-mark hold kubelet kubeadm kubectl

     (2)加入集群

        这里加入集群的命令每个人都不一样,可以登录master节点,使用kubeadm token create --print-join-command 来获取。获取后执行如下。

kubeadm join 172.31.186.200:6443 --token fmty0x.5v15q0m9nzwd8lcy     --discovery-token-ca-cert-hash sha256:604205e4fd92840baa05977e1770cefcd45ebae251761d94144572f66b1f4e1d

        如果此处报错,则需要重启 即可

kubeadm reset

加入成功后,可以在master节点上使用kubectl get nodes命令查看到加入的节点

五、部署 Calico(master机器)

        以上步骤安装完后,机器搭建起来了,但状态还是NotReady状态,如下图,master机器需要安装Calico。

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

安装完成后需要等待k8s重新拉起节点

六、完成

在master执行,即可看到节点已为Ready状态

kubectl get nodes

你可能感兴趣的:(Docker,Linux,安装教程,linux,docker,运维,kubernetes)