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集群已成功搭建完成。后续,我们将在该集群上进行实验,验证其网络和调度能力。