kubeadm ubuntu?kubeadm怎么读

大家好,kubeadm ubuntu相信很多的网友都不是很明白,包括kubeadm怎么读也是一样,不过没有关系,接下来就来为大家分享关于kubeadm ubuntu和kubeadm怎么读的一些知识点,大家可以关注收藏,免得下次来找不到哦,下面我们开始吧!

如何在Ubuntu-22上安装Kubernetes(k8s)环境

在Ubuntu 22环境中安装Kubernetes集群并配置Pod网络以实现Pod间通信的步骤如下:

在开始之前,请确保每个节点的MAC地址和product_uuid均为唯一,避免安装失败。使用`ip link`或`ifconfig-a`获取MAC地址,使用`sudo cat/sys/class/dmi/id/product_uuid`验证product_uuid。

启用必要的端口以使Kubernetes组件相互通信。API服务器端口可配置为443或使用默认端口。使用工具如netcat检查端口状态。确保Pod网络插件所需端口也已开启。

禁用交换分区以优化资源利用。在终端中执行`sudo swapoff-a`命令来暂时禁用,或在`/etc/fstab`文件中注释或删除与交换分区相关的行以实现永久禁用。

安装容器运行时。默认情况下,Kubernetes使用CRI与容器运行时交互。安装Docker Engine和cri-dockerd,后者是用于支持传统内置Docker引擎的项目。

选择容器运行时。Linux支持容器运行时如Docker、rkt等。安装containerd并根据文档安装CNI插件。生成默认配置文件,配置containerd的systemd cgroup驱动以确保kubelet和容器运行时使用相同的cgroup管理器。

在每个节点上安装kubeadm、kubelet和kubectl。确保它们与控制平面版本兼容。使用官方文档提供的步骤下载公开签名秘钥,添加Kubernetes仓库,更新包索引并安装所需组件。配置kubelet的cgroup驱动为systemd以解决资源管理问题。

使用kubeadm初始化控制平面。执行命令并确保使用阿里云容器镜像源以避免国内访问问题。配置Pod网络插件,如Calico,需要指定`--pod-network-cidr`参数。安装网络插件并确认集群DNS和所有Pod运行正常。

将控制平面节点加入Pod调度节点。在集群中添加节点以完成设置。移除控制平面节点上的调度污点以允许在控制平面节点上调度Pod。

清理操作完成后,检查Pod网络和集群状态确保一切正常。验证每个步骤的执行结果,包括节点状态、Pod通信、网络插件运行状态等。

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

目标:使用kubeadm搭建kubernetes v1.9.0集群

操作系统:Ubuntu 16.04.3

Ubuntu-001:192.168.1.110

ubuntu-002: 192.168.1.106

步骤总结:

1、安装Docker CE

2、安装kubeadm、kubectl、kubelet

3、利用kubeadm init初始化kubernetes集群

4、利用kubeadm join加入node节点到集群

具体操作步骤:

在Ubuntu 16.04安装Docker CE(使用apt-get进行安装)

# step 1: 安装必要的一些系统工具  

sudo apt-get update  

sudo apt-get -y install apt-transport-httpsca-certificates curl software-properties-common  

# step 2: 安装GPG证书  

curl -fsSL;

# Step 3: 写入软件源信息  

sudo add-apt-repository "deb [arch=amd64] ;$(lsb_release -cs)stable"  

# Step 4: 更新并安装 Docker-CE  

sudo apt-get -y update  

sudo apt-get -y install docker-ce  

# 安装指定版本的Docker-CE:  

# Step 1: 查找Docker-CE的版本:  

# apt-cache madison docker-ce  

#   docker-ce | 17.03.1~ce-0~ubuntu-xenial | ;

#   docker-ce | 17.03.0~ce-0~ubuntu-xenial | ;

# Step 2: 安装指定版本的Docker-CE: (VERSION 例如上面的 17.03.1~ce-0~ubuntu-xenial)  

# sudo apt-get -y install docker-ce=[VERSION]  

安装kubelet kubeadm和kubectl

由于国内google被墙,因此无法按照官方文档操作,现添加aliyun源,可成功安装kubelet kubeadm和kubectl。

# step 1:安装必要的一些系统工具  

apt-get update && apt-get install -y apt-transport-https  

# step 2:安装GPG证书  

curl ;

# step 3:更新软件源信息  

cat << EOF >/etc/apt/sources.list.d/kubernetes.list  

deb ;

EOF  

# step 4:更新并安装kubelet kubeadm kubectl  

apt-get update  

apt-get install -y kubelet kubeadm kubectl  

# 或者安装指定版本kubelet kubeadm kubectl  

apt-get install -y kubelet=1.9.6-00 kubeadm=1.9.6-00 kubectl=1.9.6-00  

# step 5:设置kubelet自启动,并启动kubelet  

systemctl enable kubelet && systemctl start kubelet  

利用kubeadm初始化kubernetes集群

如果在国内的话,需要提前准备kubernetes的各镜像,具体参考:在国内如何巧妙获取kubernetes各镜像?

root@Ubuntu-001:~# kubeadm init --kubernetes-version=v1.9.0 --pod-network-cidr=10.244.0.0/16  

[init] Using Kubernetesversion: v1.9.0  

[init] Using Authorizationmodes: [Node RBAC]  

[preflight] Runningpre-flight checks.  

         [WARNING SystemVerification]: docker version is greater thanthe most recently validated version. Docker version: 17.12.0-ce. Max validatedversion: 17.03  

         [WARNING FileExisting-crictl]: crictl not found in system path  

[preflight] Starting thekubelet service  

[certificates] Generated cacertificate and key.  

[certificates] Generatedapiserver certificate and key.  

[certificates] apiserverserving cert is signed for DNS names [ubuntu-001 kubernetes kubernetes.defaultkubernetes.default.svc kubernetes.default.svc.cluster.local] and IPs [10.96.0.1192.168.1.110]  

[certificates] Generatedapiserver-kubelet-client certificate and key.  

[certificates] Generated sakey and public key.  

[certificates] Generatedfront-proxy-ca certificate and key.  

[certificates] Generatedfront-proxy-client certificate and key.  

[certificates] Valid certificatesand keys now exist in "/etc/kubernetes/pki"  

[kubeconfig] Wrote KubeConfigfile to disk: "admin.conf"  

[kubeconfig] Wrote KubeConfigfile to disk: "kubelet.conf"  

[kubeconfig] Wrote KubeConfigfile to disk: "controller-manager.conf"  

[kubeconfig] Wrote KubeConfigfile to disk: "scheduler.conf"  

[controlplane] Wrote StaticPod manifest for component kube-apiserver to"/etc/kubernetes/manifests/kube-apiserver.yaml"  

[controlplane] Wrote StaticPod manifest for component kube-controller-manager to "/etc/kubernetes/manifests/kube-controller-manager.yaml"  

[controlplane] Wrote StaticPod manifest for component kube-scheduler to"/etc/kubernetes/manifests/kube-scheduler.yaml"  

[etcd] Wrote Static Podmanifest for a local etcd instance to "/etc/kubernetes/manifests/etcd.yaml"  

[init] Waiting for thekubelet to boot up the control plane as Static Pods from directory"/etc/kubernetes/manifests".  

[init] This might take aminute or longer if the control plane images have to be pulled.  

[apiclient] All control planecomponents are healthy after 38.006067 seconds  

[uploadconfig] Storingthe configuration used in ConfigMap "kubeadm-config" in the"kube-system" Namespace  

[markmaster] Will mark nodeubuntu-001 as master by adding a label and a taint  

[markmaster] Masterubuntu-001 tainted and labelled with key/value:node-role.kubernetes.io/master=""  

[bootstraptoken] Using token:3ef896.6fe4c166c546aa89  

[bootstraptoken] ConfiguredRBAC rules to allow Node Bootstrap tokens to post CSRs in order for nodes toget long term certificate credentials  

[bootstraptoken] ConfiguredRBAC rules to allow the csrapprover controller automatically approve CSRs froma Node Bootstrap Token  

[bootstraptoken] ConfiguredRBAC rules to allow certificate rotation for all node client certificates inthe cluster  

[bootstraptoken] Creating the"cluster-info" ConfigMap in the "kube-public" namespace  

[addons] Applied essentialaddon: kube-dns  

[addons] Applied essentialaddon: kube-proxy  

Your Kubernetes master hasinitialized 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 podnetwork to the cluster.  

Run "kubectl apply -f[podnetwork].yaml" with one of the options listed at:  

 ;

You can now join any numberof machines by running the following on each node  

as root:  

kubeadm join --token 3ef896.6fe4c166c546aa89192.168.1.110:6443 --discovery-token-ca-cert-hashsha256:af25f24109d0c2fba55c7a126b83e3fce39d196a3d0a34c5ac0e14b06593e868  

至此,master节点创建完毕

常见错误:

1、Port 2379被占用

[preflight] Some fatal errors occurred:

         [ERROR Port-2379]: Port2379 is in use

解决方法:netstat-anp|grep 2379查看是哪个进程在占用,2379是etcd的端口,很可能是多次执行导致。Kill掉该进程。

2、提示swap为打开状态

[ERROR Swap]: running with swap on is not supported. Please disableswap

[preflight] If you know what you are doing, you can make a checknon-fatal with `--ignore-preflight-errors=...`

解决方法:执行swapoff-a即可

3、其他错误

接下来,按照kubeadm init的输出打印配置

对于非root用户:

mkdir -p $HOME/.kube  

sudo cp -i /etc/kubernetes/admin.conf$HOME/.kube/config  

sudo chown $(id -u):$(id -g) $HOME/.kube/config  

root用户:

export KUBECONFIG=/etc/kubernetes/admin.conf  

为了能够使得pod间可以相互通信,你需要安装pod network插件

kubectl apply -f ;

一旦pod network安装成功,可以执行:

kubectl get pods --all-namespaces -o wide  

利用kubeadm join加入Ubuntu-002节点到集群

Ubuntu-002节点安装Docker、kubeadm、kubectl、kubelet,并且本地已pull了kubernetes镜像。

根据kubeadm init最后输出的加入集群的命令kubeadm join,将Ubuntu-002节点加入集群成为node节点

root@Ubuntu-002:~# kubeadm join --token 6aefa6.a55aba3998eda615 192.168.1.110:6443--discovery-token-ca-cert-hashsha256:87c51fa417666a61195d7540c965a164f1e504fe0339fc7c107e36b0b26e31a7  

[preflight] Runningpre-flight checks.  

         [WARNING SystemVerification]: docker version is greater thanthe most recently validated version. Docker version: 17.12.0-ce. Max validatedversion: 17.03  

         [WARNING FileExisting-crictl]: crictl not found in systempath  

[discovery] Trying to connectto API Server "192.168.1.110:6443"  

[discovery] Createdcluster-info discovery client, requesting info from""  

[discovery] Requesting infofrom "" again to validate TLS against thepinned public key  

[discovery] Cluster infosignature and contents are valid and TLS certificate validates against pinnedroots, will use API Server "192.168.1.110:6443"  

[discovery] Successfullyestablished connection with API Server "192.168.1.110:6443"  

This node has joined thecluster:  

* Certificate signing requestwas sent to master and a response  

  was received.  

* The Kubelet was informed ofthe new secure connection details.  

Run 'kubectl get nodes'on the master to see this node join the cluster. 

node节点ubuntu-002加入集群,可以依次加入其他node节点。在master节点运行kubectl get nodes。

当然,如果想要在非master节点(node节点或者非集群远程主机)执行kubectl命令,需要

scp root@:/etc/kubernetes/admin.conf .  

kubectl --kubeconfig ./admin.conf get nodes  

例如:

不然会出现

 将node节点ubuntu-002从集群中删除

1、kubectl drain ubuntu-002 --delete-local-data --force--ignore-daemonsets --kubeconfig ./admin.conf  

2、kubectl delete node ubuntu-002 --kubeconfig admin.conf  

3、kubeadm reset  

Ubuntu22.04中使用Kubeadm搭建Kubernetes集群

在本文中,我们将详细介绍如何在 Ubuntu 22.04中使用 Kubeadm来搭建 Kubernetes集群。首先,我们将创建两台虚拟机作为集群环境,并通过 KVM进行虚拟化管理。在搭建过程中,涉及多个步骤,包括创建虚拟机、配置网络、安装相关软件以及最终配置 Kubernetes集群。

**虚拟机创建**

为了验证 Kubernetes的网络和调度能力,我们将搭建一个双节点的集群。这里,我们使用一台拥有 32核 64GB内存的 Ubuntu 22.04主机,并在主机上开通两台虚拟机,作为集群环境。

**虚拟机开通与配置**

在开通虚拟机前,我们先安装 virt-manager,这是用于管理 KVM虚拟机的 GUI工具。接下来,我们使用 KVM开通虚拟机,并在宿主机上创建网桥,为虚拟机配置桥接网络。完成虚拟机开通后,我们可通过 VNC进入虚拟机内部,检查分配的 IP地址是否符合预期。

**虚拟机环境配置**

为了搭建 Kubernetes集群,我们需对虚拟机进行一些初始配置,包括关闭 swap分区和转发 IPv4,确保虚拟机能够看到桥接流量。

**安装 kubeadm**

接下来,我们安装 kubeadm以及相关的依赖。在两台虚拟机上执行安装操作,包括添加仓库、更新包索引、安装相关组件,并锁定特定版本。

**安装 containerd**

在最新版本的 Kubernetes中,containerd被用作默认的容器运行时。我们安装 containerd及其依赖,确保容器化环境的构建。

**搭建 Kubernetes集群**

在完成上述步骤后,我们使用 kubeadm在 master节点上初始化集群,并在 worker节点上加入集群。在 master节点上,我们提供--image-repository参数,指定镜像仓库以解决可能的拉取问题。之后,根据提示执行命令以确保 kubectl能够访问集群。

**安装 kube-ovn插件**

为了确保节点 Ready和 coredns运行,我们安装 kube-ovn插件。通过下载并执行安装脚本,我们解决集群中可能遇到的问题,并验证集群所有组件已成功运行。

至此,Kubernetes集群已成功搭建完成。后续,我们将在该集群上进行实验,验证其网络和调度能力。

阅读剩余
THE END