k8s 学习笔记1 k8s集群搭建

  1. 声明

(1)本文为作者原创,转载请注明出处;

(2)创作时间2023/3/13

  1. 安装环境

集群(单节点)在VMware Workstation上搭建主机信息如下:

Host

OS

Hostname

vmnet8

Role

CPU/Mem/Disk

1

Ubuntu20.04

k8s-master

11.0.1.20

master

4Core, 4G, 30G

2

Ubuntu20.04

k8s-worker

11.0.1.21

worker

4Core, 4G, 30G

这里只记录master节点的安装,work 节点安装只做简单介绍。

VMware上网络信息配置如下:

Net Name

vmnet8

Subnet

11.0.1.0/24

Gateway

11.0.1.2

PC IP

11.0.1.1

Master IP

11.0.1.20

Worker IP

11.0.1.21

  1. 系统准备

(1)关闭防火墙(所有节点)

systemctl stop ufw
systemctl disable ufw

(2)关闭swap(所有节点)

sed -i 's/.*swap.*/#&/' /etc/fstab
swapoff --all

(3)添加主机解析(所有节点)

cat >> /etc/hosts << EOF
11.0.1.20 k8s-master
11.0.1.21 k8s-worker
EOF

(4)主机间免密(所有节点)

ssh-keygen
# 将生成的公钥内容复制到所有work节点,略...

(5)修改hostname(所有节点)

hostnamectl set-hostname k8s-master  # master node
hostnamectl set-hostname k8s-worker  # worker node
  1. docker 安装

基础操作 略

注意:

要配置国内源;

要把cgroup driver 配置为systemd;

# example
sudo tee /etc/docker/daemon.json <<- 'EOF'
{"registry-mirrors": ["https://xxxxxx.mirror.aliyuncs.com"],
"exec-opts": [ "native.cgroupdriver=systemd" ] 
}
EOF
  1. 安装cri-dockerd

(1)检查系统信息

lsb_release  -rc
Release:        20.04
Codename:       focal

(2)下载安装文件

下载地址: https://github.com/Mirantis/cri-dockerd/releases/

wget https://github.com/Mirantis/cri-dockerd/releases/download/v0.3.1/cri-dockerd_0.3.1.3-0.ubuntu-focal_amd64.deb

右键复制上面的链接,在节点wget下载。由于墙的原因下载可能会失败,多尝试几次,也看运气。

(3)安装(所有节点)

说明:deb包安装方式是最简单的,推荐使用

dpkg -i cri-dockerd_0.3.1.3-0.ubuntu-focal_amd64.deb
systemctl status cri-docker.service

修改参数:

vim /usr/lib/systemd/system/cri-docker.service
ExecStart=/usr/bin/cri-dockerd --pod-infra-container-image=registry.aliyuncs.com/google_containers/pause:3.8 --container-runtime-endpoint fd:// --network-plugin=cni --cni-bin-dir=/opt/cni/bin --cni-cache-dir=/var/lib/cni/cache --cni-conf-dir=/etc/cni/net.d

systemctl daemon-reload && systemctl restart cri-docker.service

关于为什么要装cri-dockerd,网上说明很多也很详细,下面从其他博文摘录一些供参考:

从kubernetes 1.24开始,dockershim已经从kubelet中移除,但因为历史问题docker却不支持kubernetes 主推的CRI(容器运行时接口)标准,所以docker不能再作为kubernetes的容器运行时了,即从kubernetesv1.24开始不再使用docker了。

但是如果想继续使用docker的话,可以在kubelet和docker之间加上一个中间层cri-docker。cri-docker是一个支持CRI标准的shim(垫片)。一头通过CRI跟kubelet交互,另一头跟docker api交互,从而间接的实现了kubernetes以docker作为容器运行时。

源博:https://blog.51cto.com/flyfish225/5706901

  1. 安装k8s组件(所有节点)

参考阿里云官方步骤:

https://developer.aliyun.com/mirror/kubernetes?spm=a2c6h.13651102.0.0.2f871b11SfhTYQ

  1. 集群初始化

(1)初始化步骤

查看kubernets版本

kubelet --version
 Kubernetes v1.26.2

拉取系统镜像

kubeadm config images pull --image-repository=registry.aliyuncs.com/google_containers --cri-socket unix:///run/cri-dockerd.sock

docker image ls

初始化集群

    kubeadm init \
      --apiserver-advertise-address=11.0.1.20 \
      --image-repository registry.aliyuncs.com/google_containers \
      --kubernetes-version v1.26.2 \
      --service-cidr=10.0.0.0/16 \
      --pod-network-cidr=10.10.0.0/16 \
      --cri-socket unix://var/run/cri-dockerd.sock

--apiserver-advertise-address=11.0.1.20 是master节点IP;

--service-cidr=10.0.0.0/16 是service 资源 IP池,自己定;

--pod-network-cidr=10.10.0.0/16 是pod资源IP池,自己定;

--cri-socket unix://var/run/cri-dockerd.sock 这条要加上

成功后显示

其中有如下内容,安装worker节点会用到:

kubeadm join 11.0.1.20:6443 --token 29tg8a.kunc59rl9c1miyl1 --discovery-token-ca-cert-hash sha256:8b7b50b683b0c92b3bf2bdb7a420ec69384d95b27db7342df515372fa8f85c20

查看系统pod:

其中coredns这两个pod还没起来,需要安装cni网络插件。

kubectl 命令补全

    echo "source <(kubectl completion bash)" >> ~/.bash_profile
    source .bash_profile 

(2)排错

如果报错,通过下面这个命令可以看到报错内容:

journalctl -xeu kubelet

如果报pki 证书问题,往pki目录里丢一个ca证书就好:

mkdir /etc/kubenetes/pki
cd /etc/kubenetes/pki
openssl genrsa -out ca.key 4096
openssl req -new -x509 -days 3650 -key ca.key -out ca.crt -subject -subj "/C=CN/ST=SH/L=SH/CN=abcd.cn"

(3)重新初始化

重新init之前需要清理环境:

rm -rf /etc/kubernetes/manifest
rm -rf /var/lib/etcd/*
kubeadm reset -f --cri-socket unix://var/run/cri-dockerd.sock 
  1. 安装cni 网络插件 calico

(1)下载yaml

参考官网步骤:https://docs.tigera.io/calico/3.25/getting-started/kubernetes/quickstart

mkdir .kube
curl https://raw.githubusercontent.com/projectcalico/calico/v3.25.0/manifests/tigera-operator.yaml -O .kube/
kubectl create -f .kube/tigera-operator.yaml  #注意这里要用create而不是apply

curl https://raw.githubusercontent.com/projectcalico/calico/v3.25.0/manifests/custom-resources.yaml -O .kube/
#修改cidr参数,让该pod使用init时给pod network的网络
grep cidr  .kube/custom-resources.yaml
      cidr: 10.10.0.0/16
kubectl create -f .kube/custom-resources.yaml

(2)拉取镜像

由于网络原因,镜像可能拉取失败,导致pod起不来,这时可以手动拉取

# 获取需要拉取的镜像
kubectl describe pods -n calico-system | grep Image: | awk '{print $NF}'| sort |uniq
    docker.io/calico/cni:v3.25.0
    docker.io/calico/csi:v3.25.0
    docker.io/calico/kube-controllers:v3.25.0
    docker.io/calico/node-driver-registrar:v3.25.0
    docker.io/calico/node:v3.25.0
    docker.io/calico/pod2daemon-flexvol:v3.25.0
    docker.io/calico/typha:v3.25.0

docker pull docker.io/calico/xxxx #逐个手动拉取

镜像拉取成功后,pod就都跑起来了

  1. 检查

kubectl get pod -n kube-system
kubectl get node

10. worker 节点安装

步骤2,3,4,5,6完成后worker节点上执行7中出现的命令:

kubeadm join 11.0.1.20:6443 --token 29tg8a.kunc59rl9c1miyl1 --discovery-token-ca-cert-hash sha256:8b7b50b683b0c92b3bf2bdb7a420ec69384d95b27db7342df515372fa8f85c20

再次查看node,全部Ready就成功了

kubectl get nodes

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值