linux安装k8s

发布于:2023-01-22 ⋅ 阅读:(9) ⋅ 点赞:(0) ⋅ 评论:(0)

一:环境准备(master,node均需配置)

  1. 关闭防火墙(开启防火墙,需开放端口 80,443,还有pod服务的端口)
    1. systemctl stop firewalld  临时关闭防火墙
      systemctl disable firewalld   禁止开机启动防火墙
    2. 防火墙问题:linu解决防火墙问题_小贞-10086的博客-CSDN博客
  2. 关闭 selinux
    1. sed -i 's/enforcing/disabled/' /etc/selinux/config
  3. 禁掉所有交换分区
    1. [root@k8s-master ~]# swapoff -a  禁掉所有交换分区
      [root@k8s-master ~]# vim /etc/fstab  注释掉,不然重启swap分区又会被激活

  4. 在 master 添加 hosts,根据你们自己的ip进行修改
    1. cat >> /etc/hosts << EOF
      192.168.87.128 k8s-master
      192.168.87.127 k8s-node1
      192.168.87.126 k8s-node2
      EOF
  5. 将桥接的 IPv4 流量传递到 iptables 的链
    1. cat > /etc/sysctl.d/k8s.conf << EOF
      net.bridge.bridge-nf-call-ip6tables = 1net.bridge.bridge-nf-call-iptables = 1
      EOF
       
       
      sysctl --system # 生效
  6. 时间同步
    1. yum install ntpdate -y
       
      ntpdate time.windows.com

二:安装docker、kubeadm,kubelet(master,node均需配置)(如果安装其它版本,可根据Getting Started with Kubernetes | Rancher Quick Start,中对应的版本来选择,并且可以安装Rancher的k8s视图管理)

  1. 安装docker
    1. wget https://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo -O /etc/yum.repos.d/docker-ce.repo
       
      yum -y install docker-ce-18.06.1.ce-3.el7
       
      systemctl enable docker && systemctl start docker
       
      docker --version
      cat > /etc/docker/daemon.json << EOF
      {
      "registry-mirrors": ["https://30nyszb4.mirror.aliyuncs.com"],
      "exec-opts": ["native.cgroupdriver=systemd"], 将cgroups改成systemd机制
      "log-driver": "json-file",
      "log-opts": {
          "max-size": "100m"
       },
      "storage-driver": "overlay2"
      }
      EOF
      
      systemctl restart docker  重启docker服务
      docker info  查看配置

  2. 添加 k8s的yum 源
    1. 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=0
      repo_gpgcheck=0
      gpgkey=https://mirrors.aliyun.com/kubernetes/yum/doc/yum-key.gpg
      https://mirrors.aliyun.com/kubernetes/yum/doc/rpm-package-key.gpg
      EOF

  3. 安装 kubeadm, kubelet 和 kubectl
    1. yum install -y kubelet-1.17.3 kubectl-1.17.3 kubeadm-1.17.3 (指定兼容的版本---依据你的docker版本来配置,若安装Rancher,则依据Rancher版本来配置)
       
      systemctl enable kubelet

 三:部署k8s master

  1. 初始化master节点(记得将返回的 kubeadm join 192.168.87.128:6443 --token ... 复制)
    1. kubeadm init \
      --apiserver-advertise-address=自己master节点的ip \
      --image-repository registry.aliyuncs.com/google_containers \
      --kubernetes-version v1.17.3(自己想要安装的版本,必须和上面安装的kubectl版本是一致的) \
      --service-cidr=10.96.0.0/12 \
      --pod-network-cidr=10.244.0.0/16
      
      
      
      
      如果初始化话失败,则
      kubectl reset  重置kubectl
      
      找到失败原因后,再初始化
  2. 使用 kubectl 工具
    1. mkdir -p $HOME/.kube
      sudo cp -i /etc/kubernetes/admin.conf $HOME/.kube/config
      sudo chown $(id -u):$(id -g) $HOME/.kube/config
  3. 查看下master节点是否启动
    1. kubectl get nodes   查看是否启动
      
      如果报The connection to the server localhost:8080 was refused - did you specify the right host or port?
      
      则配置环境变量
      
      export KUBECONFIG=/etc/kubernetes/kubelet.conf

  4. 安装pod网络插件

    1. 
      kubectl apply -f https://warehouse-lxf.gitee.io/develop/config/kube-flannel.yml
      或者
      kubectl apply -f https://raw.githubusercontent.com/coreos/flannel/master/Documentation/kube-flannel.yml
      
      如果不行,就
      
      wget kube-flannel.yml
      
      再
      
      kubectl apply -f kube-flannel.yml

四:子节点(node)加入集群

  1. 执行以下指令,加入集群
    
    kubeadm join 192.168.87.128:6443 --token pbcvxr.jmkts88d2v2jmdj2     --discovery-token-ca-cert-hash sha256:9fc32c0acd3c7fd220b200380da2aef356cd0095750cecc6f2ab38507f2cd4f2
    
    初始化主(master)节点时返回的kubeadm join 192.168.87.128:6443 --token ...
    
    如果忘记复制保存,则在master主节点中执行:
    
    kubeadm token create --print-join-command
    
    查看加入集群的指令
    
    

五:测试k8s集群

  1. 在master主节点中添加pod服务,验证是否运行正常
    1.  kubectl create deployment nginx --image=nginx
       kubectl expose deployment nginx --port=80 --type=NodePort
       kubectl get pod,svc

六:安裝Rancher  k8s通过视图方式部署的工具

  1. 找到k8s和docker版本匹配的Rancher版本
  2. 执行 docker run --privileged -d --restart=unless-stopped -p 80:80 -p 443:443 rancher/rancher:v版本号

七:查看node服务使用情况

  1. kubectl top node
    
    如果报错:
    Error from server (NotFound): the server could not find the requested resource (get services http:heapster:)
    
    问题分析:
    Heapster是容器集群监控和性能分析工具,HPA、Dashborad、Kubectl top都依赖于heapster收集的数据。
    但是Heapster从kubernetes 1.8以后已经被遗弃了… 被metrics-server所替代…那么就部署一下Heapster吧
    
    解决问题,执行:
    kubectl apply -f https://warehouse-lxf.gitee.io/develop/config/heapster-clusterrole.yaml
    kubectl apply -f https://warehouse-lxf.gitee.io/develop/config/heapster.yaml
    
    

八:指令学习,可以去k8s入门教程 - 吕林光 - 博客园