基于kubeadm部署k8s1.80.0
2021/7/11 6:05:59
本文主要是介绍基于kubeadm部署k8s1.80.0,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!
k8s搭建
硬件要求
测试环境
# master 2核 4G 20G # node 4核 8G 40G
生产环境
# master 8核 16G 100G # node 16核 64G 500G
方式一:基于kubeadm方式搭建
具体指令部署
1.创建一个Master节点kubeadm init 2.将Node节点加入到当前集群中$kebeadm join <Master 节点的IP和端口>
安装要求
# 节点 主机ip 操作系统 内存硬盘 master 192.168.250.136 centos7 2核/4G/20G node1 192.168.250.137 centos7 2核/4G/40G node2 192.168.250.138 centos7 2核/4G/40G
修改master和node服务器相关配置信息
# master和node节点 # 1.关闭防火墙 >>> systemctl stop firewalld.service >>> systemctl disable firewalld.service # 2.关闭selinux防火墙 >>> setenforce 0 >>> sed -i 's/SELINUX=enforcing/SELINUX=disabled/g' /etc/selinux/config >>> setenforce 0 >>> getenforce # 3.关闭swap分区 swapoff -a # 临时 sed -ri 's/.*swap.*/#&/' /etc/fstab # 永久 # 4.master和node节点之间设置无密访问 >>> cat >> /etc/hosts << EOF 192.168.250.136 master 192.168.250.137 node1 192.168.250.138 node2 EOF >>> scp -rp /etc/hosts root@192.168.250.137:/etc/hosts >>> scp -rp /etc/hosts root@192.168.250.138:/etc/hosts >>> ssh-keygen -t rsa >>> ssh-copy-id -i root@192.168.1.137 >>> ssh-copy-id -i root@192.168.1.138 # 5.将桥接的IPV4流量传递到iptables的链 >>> cat >/etc/sysctl.d/k8s.conf << EOF net.bridge.bridge-nf-call-ip6tables = 1 net.bridge.bridge-nf-call-iptables = 1 EOF >>> sysctl --system # 生效
所有节点安装Docker/kubeadm/kubelet
# 1.安装docker >>> wget https://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo -O /etc/yum.repos.d/docker-ce.repo >>> yum install -y docker-ce-18.06.1.ce >>> systemctl enable docker && systemctl start docker # 2.修改一下docker仓库源 >>> cat > /etc/docker/daemon.json << EOF { "registry-mirrors": ["https://b9pmyelo.mirror.aliyuncs.com"] } EOF # 3.重启docker >>> systemctl restart docker
添加阿里云YUM软件源
>>> cat > /etc/yum.repos.d/kubernetes.repo << EOF [kubernetes] name=Kubernetes baseurl=https://mirrors.aliyun.com/kubernetes/yum/repos/kubernetes-el7-x86_64/ enabled=1 gpgcheck=1 repo_gpgcheck=1 gpgkey=https://mirrors.aliyun.com/kubernetes/yum/doc/yum-key.gpg https://mirrors.aliyun.com/kubernetes/yum/doc/rpm-package-key.gpg EOF
安装kubeadm,kubelet和kubectl
>>> yum install -y kubelet-1.18.0 kubeadm-1.18.0 kubectl-1.18.0 >>> systemctl enable kubelet
部署Kubernetes Master
# 在192.168.250.136(Master)执行` # apiserver-advertise-address修改为自己的master节点ip >>> kubeadm init \ --apiserver-advertise-address=192.168.250.136 \ --image-repository registry.aliyuncs.com/google_containers \ --kubernetes-version v1.18.0 \ --service-cidr=10.96.0.0/12 \ --pod-network-cidr=10.244.0.0/16 # --apiserver-advertise-address 指明用 Master 的哪个 interface 与 Cluster 的其他节点通信。如果 Master 有多个 interface,建议明确指定,如果不指定,kubeadm 会自动选择有默认网关的 interface。 # --pod-network-cidr 指定 Pod 网络的范围。Kubernetes 支持多种网络方案,而且不同网络方案对 --pod-network-cidr 有自己的要求,这里设置为 10.244.0.0/16 是因为我们将使用 flannel 网络方案,必须设置成这个 CIDR。 # --image-repository Kubenetes默认Registries地址是 k8s.gcr.io,在国内并不能访问 gcr.io,在1.13版本中我们可以增加–image-repository参数,默认值是 k8s.gcr.io,将其指定为阿里云镜像地址:registry.aliyuncs.com/google_containers。 >>> docker images # 查看拉取的镜像 # 由于默认拉取镜像地址k8s.gcr.io国内无法访问,这里指定阿里云镜像仓库地址 # 使用kebectl工具:下面的代码在kubeadm init安装结束的最后面可以找到,执行一下就行 mkdir -p $HOME/.kube sudo cp -i /etc/kubernetes/admin.conf $HOME/.kube/config sudo chown $(id -u):$(id -g) $HOME/.kube/config >>> kubectl get nodes # 在node加入节点后,可以查看节点的状态 NAME STATUS ROLES AGE VERSION master NotReady master 10m v1.18.0 node1 NotReady <none> 18s v1.18.0 node2 NotReady <none> 9s v1.18.0
加入kubernetes Node节点执行
# 在node1和node2节点上执行# 向集群添加新节点,执行kubeadm init输出的kubeadm join命令:下面的代码在kubeadm init执行结束的时候可以找到>>> kubeadm join 192.168.250.136:6443 --token ygoeiv.nk8iy57zwvyycj30 \ --discovery-token-ca-cert-hash sha256:4f861bf078d636a3177a0e7b2697ed996b1ed72dd5688ed4d3a91cff8aa57704 # token有效期24小时,过期后,重新创建>>> kubeadm token create --print-join-command
部署CNI网络插件
# 修改hosts进行映射关系访问https://www.ipaddress.com/,搜索raw.githubusercontent.com,找出对应的ip>>> vi /etc/hosts185.199.108.133 raw.githubusercontent.com# 获取,多执行几次,网络不好的话# 方式一 推荐方式一wget https://raw.githubusercontent.com/coreos/flannel/master/Documentation/kube-flannel.ymlkubectl apply -f kube-flannel.yml>>> sed -i 's/quay.io/quay-mirror.qiniu.com/g' kube-flannel.yml # 修改源# 方式二kubectl apply -f https://raw.githubusercontent.com/coreos/flannel/master/Documentation/kube-flannel.yml# 查看集群组件是否搭建成功>>> kubectl get pods -n kube-systemkube-flannel-ds-p4df7 0/1 Init:ImagePullBackOff 0 122mkube-flannel-ds-plpkn 1/1 Running 3 122mkube-flannel-ds-sz8b9 1/1 Running 0 82m# 方式二出现的问题上面的flannel一直处于Init:ImagePullBackOff,这是由于拉取镜像网络的原因解决办法:去https://github.com/flannel-io/flannel/releases/tag/v0.14.0上下载flanneld-v0.14.0-amd64.docker然后上传到master服务器上>>> docker load -i flanneld-v0.14.0-amd64.docker>>> docker rmi quay.io/coreos/flannel:v0.14.0 # 删除之前的镜像>>> docker tag 8522d622299c quay.io/coreos/flannel:v0.14.0 # 将我们上传的镜像重新打标签>>> docker rmi quay.io/coreos/flannel:v0.14.0-amd64.docker # 删除上传的镜像# 重新查看>>> kubectl get pods -n kube-system
测试集群
# master节点下载nginx>>> kubectl create deployment nginx --image=nginx>>> kubectl get pod # 查看pod>>> kubectl expose deployment nginx --port=80 --type=NodePort # 对外暴露一个端口用来访问nginx>>> kubectl get pod,svc # 查看对外暴露的端口NAME READY STATUS RESTARTS AGEpod/nginx-f89759699-kpq4r 1/1 Running 0 3m24sNAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGEservice/kubernetes ClusterIP 10.96.0.1 <none> 443/TCP 156mservice/nginx NodePort 10.110.78.94 <none> 80:30015/TCP 108s# 页面访问192.168.250.136:30015
这篇关于基于kubeadm部署k8s1.80.0的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!
- 2024-10-30K8s 容器的定向调度与亲和性
- 2024-10-28云原生周刊:K8s未来三大发展方向 丨2024.10.28
- 2024-10-25亚马逊弹性Kubernetes服务(EKS)实战:轻松搭建Kubernetes平台
- 2024-10-22KubeSphere 最佳实战:Kubernetes 部署集群模式 Nacos 实战指南
- 2024-10-10K8sGPT+Ollama:一个免费的Kubernetes自动诊断工具
- 2024-10-10Kubernetes:容器技术和所谓的“丢失”的SIGTERM信号(终止信号)
- 2024-10-08在 Azure Kubernetes 上运行 Ollama
- 2024-09-2610 个你不知道自己需要的 Kubernetes 工具
- 2024-09-25MicroK8s 概览 — 使用一条命令部署自己的 Kubernetes 集群
- 2024-08-19云原生周刊:Kubernetes v1.31 发布