Kubernetes是一个开源平台,用于自动化部署、扩展和管理容器化应用程序。它是一种流行的容器编排工具,提供了一种将大量容器作为一个单元进行管理的方法,而不是单独管理每个容器。
什么是Kubeadm?
如果你需要,Kubeadm工具是不错的。
- 一个简单的方法让你尝试Kubernetes,可能是第一次。
- 现有用户自动设置集群并测试其应用程序的方法。
- 其他生态系统和/或安装工具中的一个构建块,具有更大的范围。
你可以在各种机器上安装和使用kubeadm:你的笔记本电脑、一组云服务器、Raspberry Pi等等。无论你是在云端还是在企业内部部署,你都可以将kubeadm整合到Ansible或Terraform等配置系统中。
以下是Kubernetes集群设置的前提条件
- 至少两个Ubuntu节点[一个主节点和一个工作节点]。你可以根据你的要求拥有更多的工作节点,例如。Ubuntu或CentOS。
- 控制节点,建议至少有2vCPU和4GB内存
- 工作节点,建议至少有1vCPU和2GB内存。
- 10.X.X.X/X网络范围,主节点和工作节点的静态IP。我们将使用192.x.x.x系列作为Flannel网络插件将使用的pod网络范围。
让我们现在开始设置。
注意:除非另有规定,否则以根用户身份执行所有命令。
在启动Kubernetes之前,我们应该禁用所有节点上的防火墙和交换。
禁用防火墙。
使用以下命令禁用防火墙。
ufw disable
禁用所有节点上的交换。
swapoff -a; sed -i \'/swap/d\' /etc/fstab
Kubernetes集群的基本要求是一个容器运行时。你可以拥有以下容器运行时中的任何一个。
- CRI-O
- 容器d
- Docker引擎(使用cri-dockerd)。
我们将使用CRI-O而不是Docker进行设置,因为Kubernetes已经废弃了Docker引擎。
作为第一步,我们需要在所有节点上安装cri-o。在所有节点上执行以下命令。
创建.conf文件,在启动时加载模块。
cat <<EOF | sudo tee /etc/modules-load.d/crio.confoverlaybr_netfilterEOF
# Set up required sysctl params, these persist across reboots.cat <<EOF | sudo tee /etc/sysctl.d/99-kubernetes-cri.confnet.bridge.bridge-nf-call-iptables = 1net.ipv4.ip_forward = 1net.bridge.bridge-nf-call-ip6tables = 1EOF
执行下面的命令来启用overlayFS和VxLan pod的通信。
sudo modprobe overlaysudo modprobe br_netfilter
设置所需的sysctl参数,这些参数在重启后会持续存在。
cat <<EOF | sudo tee /etc/sysctl.d/99-kubernetes-cri.confnet.bridge.bridge-nf-call-iptables = 1net.ipv4.ip_forward = 1net.bridge.bridge-nf-call-ip6tables = 1EOF
重新加载参数。
sudo sysctl --system
启用1.23版的cri-o资源库
OS=\"xUbuntu_20.04\"
VERSION=\"1.23\"cat <<EOF | sudo tee /etc/apt/sources.list.d/devel:kubic:libcontainers:stable.listdeb https://download.opensuse.org/repositories/devel:/kubic:/libcontainers:/stable/$OS/ /EOFcat <<EOF | sudo tee /etc/apt/sources.list.d/devel:kubic:libcontainers:stable:cri-o:$VERSION.listdeb http://download.opensuse.org/repositories/devel:/kubic:/libcontainers:/stable:/cri-o:/$VERSION/$OS/ /EOF
添加gpg密钥。
curl -L https://download.opensuse.org/repositories/devel:kubic:libcontainers:stable:cri-o:$VERSION/$OS/Release.key | sudo apt-key --keyring /etc/apt/trusted.gpg.d/libcontainers.gpg add -curl -L https://download.opensuse.org/repositories/devel:/kubic:/libcontainers:/stable/$OS/Release.key | sudo apt-key --keyring /etc/apt/trusted.gpg.d/libcontainers.gpg add -
更新并安装crio和crio-tools。
sudo apt-get updatesudo apt-get install cri-o cri-o-runc cri-tools -y
重新加载systemd配置并启用cri-o。
sudo systemctl daemon-reloadsudo systemctl enable crio --now
Kubernetes设置。
添加公寓库
{ curl -s https://packages.cloud.google.com/apt/doc/apt-key.gpg | apt-key add - sudo apt-get install -y apt-transport-https ca-certificates curl sudo curl -fsSLo /usr/share/keyrings/kubernetes-archive-keyring.gpg https://packages.cloud.google.com/apt/doc/apt-key.gpg echo \"deb https://apt.kubernetes.io/ kubernetes-xenial main\" > /etc/apt/sources.list.d/kubernetes.list or echo \"deb [signed-by=/usr/share/keyrings/kubernetes-archive-keyring.gpg] https://apt.kubernetes.io/ kubernetes-xenial main\" | sudo tee /etc/apt/sources.list.d/kubernetes.list sudo apt-get update }
安装Kubernetes组件。
sudo apt-get install -y kubelet kubeadm kubectl
如果你是使用LXC容器的Kubernetes节点。
在LXC容器中配置K8s v1.15+需要破解。
{ mknod /dev/kmsg c 1 11 echo \'#!/bin/sh -e\' >> /etc/rc.local echo \'mknod /dev/kmsg c 1 11\' >> /etc/rc.local chmod +x /etc/rc.local}
关于kmaster
初始化Kubernetes群集
用kmaster的ip地址更新下面的命令
kubeadm init --apiserver-advertise-address= 192.168.159.131 --pod-network-cidr=192.168.159.0/24 --ignore-preflight-errors=allkubeadm init --apiserver-advertise-address=192.168.0.111 --pod-network-cidr=192.168.0.0/24 --ignore-preflight-errors=all
下面是网络部分,你可以使用Calico网络或Flannel网络。
注意:不要同时配置网络
部署Calico网络
kubectl --kubeconfig=/etc/kubernetes/admin.conf create -f https://docs.projectcalico.org/v3.14/manifests/calico.yaml
或
部署Flannel网络
kubeadm init --pod-network-cidr=10.244.0.0/16 --ignore-preflight-errors=allkubectl apply -f https://raw.githubusercontent.com/coreos/flannel/master/Documentation/kube-flannel.yml
集群加入命令
kubeadm token create --print-join-command
为了能够以非root用户身份运行kubectl命令
如果你希望能够以非root用户身份运行kubectl命令,那么作为非root用户执行以下操作
mkdir -p $HOME/.kubesudo cp -i /etc/kubernetes/admin.conf $HOME/.kube/configsudo chown $(id -u):$(id -g) $HOME/.kube/config
加入集群
使用上一步中来自主服务器的Kubeadm token create命令的输出,并在此运行。
验证集群
$ kubectl get nodesNAME STATUS ROLES AGE VERSIONkmaster Ready master 8m53s v1.19.2kworker1 Ready 5m35s v1.19.2kworker2 Ready 3m39s v1.19.2
本文来自于头条号作者:吉祥庄钢铁侠,本站旨在传播优质文章,无商业用途。