首页 > 其他分享 >使用kubeadm安装k8s

使用kubeadm安装k8s

时间:2023-04-14 10:32:12浏览次数:45  
标签:deploy -- demo kubeadm k8s 安装 节点


相关链接

kubeadm安装官网

kubeadm安装k8s完整教程

安装配置

以下操作是每个节点都要执行的步骤

  1. 配置hosts

将主节点与子节点分别配置hostname如下:

hostnamectl set-hostname master  # 主节点
hostnamectl set-hostname node1   # 子节点
hostnamectl set-hostname node2   # 子节点

/etc/hosts中添加本机hostname与ip的映射关系

1.1.1.1 master
1.1.1.2 node1
1.1.1.3 node2
  1. 关闭防火墙

需要将主节点与子节点都关闭防火墙

systemctl stop firewalld
  1. 配置yum源

在安装kubeadm之前,都需要配置yum源,创建文件/etc/yum.repos.d/kubernetes.repo

[kubernetes]
name=Kubernetes
baseurl=https://mirrors.aliyun.com/kubernetes/yum/repos/kubernetes-el7-x86_64/
enabled=1
gpgcheck=0
  1. 将 SELinux 设置为 permissive 模式(相当于将其禁用)
sudo setenforce 0
sudo sed -i 's/^SELINUX=enforcing$/SELINUX=permissive/' /etc/selinux/config
  1. 安装kubeadm、kubelet、kubectl
sudo yum install -y kubelet kubeadm kubectl --disableexcludes=kubernetes
  1. 安装docker并开启
curl -fsSL https://get.docker.com | bash -s docker --mirror Aliyun
systemctl enable --now docker
  1. 开启kubelet
sudo systemctl enable --now kubelet
  1. 手动配置containerd的配置

自动生成的文件会使用k8s.gcr.io/pause:3.6镜像,国内无法下载,导致kubeadm初始化失败。

生成 containerd 的配置文件

mkdir -p /etc/containerd
containerd config default > /etc/containerd/config.toml

修改 SystemdCgroup 为 true

# 编辑文件
vi /etc/containerd/config.toml

#更改SystemdCgroup值为true
SystemdCgroup = true

修改 sandbox_image 值

# 更改k8s.gcr.io/pause:3.6为registry.aliyuncs.com/google_containers/pause:3.7
sandbox_image = "registry.aliyuncs.com/google_containers/pause:3.7"

重启containerd

systemctl restart containerd

主节点执行

  1. 使用kubedam init初始化
kubeadm init --image-repository registry.aliyuncs.com/google_containers --v=5 --pod-network-cidr 10.244.0.0/16
  1. kubectl读取k8s授权认证文件

将安全配置文件放在指定目录中,该文件时kubectl需要读取的授权文件,放在指定目录下,kubectl才能读取到并访问到k8s

mkdir -p $HOME/.kube
  sudo cp -i /etc/kubernetes/admin.conf $HOME/.kube/config
  sudo chown $(id -u):$(id -g) $HOME/.kube/config

或者放在环境变量中,kubectl会读取该环境变量中的文件

vim /etc/profile
export KUBECONFIG=/etc/kubernetes/admin.conf
source /etc/profile
  1. 创建网络flannel
kubectl apply -f https://raw.githubusercontent.com/coreos/flannel/master/Documentation/kube-flannel.yml

子节点加入集群

  1. 使用kubeadm join加入集群

先在主节点使用kubeadm token create --print-join-command来获取到子节点加入主节点的命令

[root@master ~]# kubeadm token create --print-join-command
kubeadm join 172.16.16.16:6443 --token vnu6yz.4zk8f7hdorb8fpl0 --discovery-token-ca-cert-hash sha256:ca4e1e3e2afe16f592c3623f17a6b0dc9cfebd4ec459755e02f4b8db779e21d4

再在子节点上执行该命令,即可加入集群

  1. 将主节点的config移动到子节点

子节点也需要主节点的config文件,才能通过kubectl访问集群

scp ~/.kube/config node1:~/.kube/config

测试

在主节点创建deployment.yaml文件如下

apiVersion: apps/v1
kind: Deployment
metadata:
  labels:
    app: demoapp
  name: demo-deploy

spec:
  replicas: 10
  selector:
    matchLabels:
      app: demoapp

  template:
    metadata:
      labels:
        app: demoapp
    spec:
      containers:
      - image: ikubernetes/demoapp:v1.0
        name: demoapp

创建控制器

[root@master ~]# kubectl apply -f deployment.yaml 
deployment.apps/demo-deploy created

可以看到创建成功,并且所有的pod已经READY

[root@master ~]# kubectl get deploy -n zwf
NAME          READY   UP-TO-DATE   AVAILABLE   AGE
demo-deploy   10/10   10           10          3m15s

可以看到pod都已经创建成功。

[root@master ~]# kubectl get pods -n zwf 
NAME                           READY   STATUS    RESTARTS   AGE
demo-deploy-55c5f88dcb-2nzbf   1/1     Running   0          4m38s
demo-deploy-55c5f88dcb-5kwc9   1/1     Running   0          4m38s
demo-deploy-55c5f88dcb-8jd9k   1/1     Running   0          4m38s
demo-deploy-55c5f88dcb-b7zjp   1/1     Running   0          4m38s
demo-deploy-55c5f88dcb-bs7tm   1/1     Running   0          4m38s
demo-deploy-55c5f88dcb-jrbzw   1/1     Running   0          4m38s
demo-deploy-55c5f88dcb-lsfff   1/1     Running   0          4m38s
demo-deploy-55c5f88dcb-mgqpq   1/1     Running   0          4m38s
demo-deploy-55c5f88dcb-wfzzb   1/1     Running   0          4m38s
demo-deploy-55c5f88dcb-wkbv2   1/1     Running   0          4m38s

常见错误

  • kubeadm init 报错 ”unknown service runtime.v1alpha2.RuntimeService”

解决:

rm /etc/containerd/config.toml -f
systemctl restart containerd
  • 如果在kubeadm init中出现了失败,在解决问题后,需要执行kubeadm reset,否则会报错
  • Failed to create pod sandbox: rpc error: code = Unknown desc = failed to get sandbox image “k8s.gcr.io/pause:3.6”: failed to pull image “k8s.gcr.io/pause:3.6”: failed to pull and unpack image “k8s.gcr.io/pause:3.6”: failed to resolve reference “k8s.gcr.io/pause:3.6”: failed to do request: Head “https://k8s.gcr.io/v2/pause/manifests/3.6”: dial tcp 74.125.23.82:443: connect: connection refused

是因为拉不到k8s官方的k8s.gcr.io/pause:3.6镜像,使用主节点container配置可以解决。

  • kube-flannel报错:
    running-error-CrashLoopBackOff。node“k8s-master-1“podcidr not assigned

  • plugin type=“flannel” failed (add): failed to delegate add: failed to set bridge addr: “cni0” already has an IP address different from

解决办法:

sudo ifconfig cni0 down  
sudo ip link delete cni0

欢迎关注,互相学习,共同进步~

我的博客

我的微信公众号:编程黑洞


标签:deploy,--,demo,kubeadm,k8s,安装,节点
From: https://blog.51cto.com/zhengwenfeng/6189585

相关文章

  • npm安装html2pdf后出现缺少文件的情况
      当时发现这个问题的时候,我就去node_modules里面找,确实没有这个文件,故判定是没有完全安装导致的错误信息最终解决方案:在终端中进入项目文件夹,执行以下命令:npmuninstallhtml2pdfnpminstallhtml2pdf这将卸载旧的html2pdf模块并重新安装它。如果你仍然遇到问题,请......
  • Nginx的安装和卸载
    一.安装(centos)1,安装一些依赖包,因为nginx是通过C语言来写成的:yum-yinstallgccpcre-develzlib-developensslopenssl-devel2,下载Nginx安装包yuminstallwget&&wgethttps://nginx.org/download/nginx-1.16.1.tar.gz3,解压缩包tar-zxvfnginx-1.16.1.tar.gzn......
  • Ubuntu 16 安装 onos
    此文章介绍ubuntu16如何安装onos注:本文所有指令均在root用户下执行安装openjdkaptinstallopenjdk-8-jdk-y安装成功后切换到/usr/lib/jvm目录cd/usr/lib/jvm记住文件下的文件名称编辑/etc/environment文件vim/etc/environment将上面记下的文件路......
  • 多python环境下安装uwsgi
    注意事项:1、uwsgi不要安装全局的,需要在各个虚拟环境下安装,确保只在某个activate 的虚拟环境下安装,不能同时激活多个环境2、如果有ld的问题,有可能是使用了anaconda的ld, 可以通过重命名的方式,避开anaconda的ld,安装完毕uwsgi后再改回来uwsgi2.0.21是支持python3.9的 ......
  • 如何在Debian 9上安装Python 3.7
    转自https://help.aliyun.com/document_detail/146390.html 执行以下命令安装构建Python源所需的包。 sudoaptupdatesudoaptinstallbuild-essentialzlib1g-devlibncurses5-devlibgdbm-devlibnss3-devlibssl-devlibreadline-devlibffi-devwget执行以下命......
  • Linux环境tomcat安装步骤详细教程
    下载tomcat包:https://tomcat.apache.org/tomcat-10.1-doc/index.html将下载的安装包放至linux环境的/usr/local/tomcat目录下:执行解压命令tar-xvfapache-tomcat-9.0.73.tar.gz将解压出来的目录改名为tomcat9,然后进入tomcat9/bin目录,执行./startup.sh命令启动tomcat:执行启动命令......
  • ubuntu安装jenkins
    ubuntu20.04安装Jenkins及简单配置环境:虚拟机:VMwareWorkstationLinux版本:ubuntuDesktop20.04清华大学镜像源:https://mirrors.tuna.tsinghua.edu.cn/下方镜像源链接中可以下载各种Linux发行版准备Java版本:1.8Jenkins版本:2.350注意:jenkins2.357及以上版本不支持java8,......
  • linux环境下安装Docker
    1、概念:docker是一个开源的应用容器引擎,docker可以让开发者打包他们的应用以及依赖环境包到一个轻量级、可移值的容器中。然后发布到任何流行的linux机器上。安装过程:1、yum包更新到最新yumupdate2、安装需要的软件包yuminstall-yyum-utilsdevice-mapper-persistent-da......
  • zookeeper安装
    下载安装包这里需要注意的是,自zk3.5.5版本以后,已编译的jar包尾部带有bin后缀,所以我们选择下载带有bin的安装包。"zk官网下载地址"进行安装`执行tar-zxvf你下载的安装包将解压好的软件目录移动位置,我这里是移动到/usr/local/zookeepermv你解压的安装目录/usr/local/z......
  • 两阶段鲁棒优化程序 本程序采用微网为模型,主要将安装成本、运营成本以及综合效益三个
    两阶段鲁棒优化程序本程序采用微网为模型,主要将安装成本、运营成本以及综合效益三个方面纳入考虑范围,建立两阶段鲁棒优化模型,采用的是CCG方法,本程序为matlab编制ID:67480641450782375......