• 无坑部署vmware搭建最新k8s集群(1.17.3)


    我的环境

    环境说明
    宿主机 windows10(内存24G)
    vmware 版本v12
    centos v7.6

    centos 7.6 原版镜像:

    链接:https://pan.baidu.com/s/1LBBqxM43yUctfiWv8ysEPw 提取码:l8rx

    虚拟机说明
    192.168.159.133 master,4C 8G
    192.168.159.135 node,4C 4G

    2台centos都要执行的步骤

    关闭防火墙

    顺序执行命令:

    • iptables -F
    • setenforce 0
    • systemctl stop firewalld
    • systemctl disable firewalld

    修改hostname

    执行命令: vi /etc/hostname

    我把 192.168.159.133 改成 workone,192.168.159.135改成worktwo (名字根据自己随意)

    修改host文件

    vi /etc/hosts

    127.0.0.1   localhost localhost.localdomain localhost4 localhost4.localdomain4

    ::1         localhost localhost.localdomain localhost6 localhost6.localdomain6

    192.168.159.133     workone

    192.168.159.135    worktwo

    禁用swap

    执行命令:

    • swapoff -a
    • vi /etc/fstab

    找到下面行在前面加一个 # 注释 swap功能

    #/dev/mapper/centos-swap swap swap    defaults        0 0    #禁用swap自动挂载
    
    

    注意:刚安装好centos虚拟机时 我在 fstab 文件没有找到这行,我重启了找到,所以如果你没找到的话,可以先继续下面步骤,因为后面启动出错会有提示让你禁用swap

    安装Docker

    顺序执行命令:

    
    sudo yum install -y yum-utils device-mapper-persistent-data lvm2
    sudo yum-config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo
    sudo yum install docker-ce-18.09.1 docker-ce-cli-18.09.1 containerd.io
    systemctl start docker.service
    systemctl enable docker.service
    
    

    配置阿里云镜像加速器

    cat>>/etc/docker/daemon.json<<EOF
    {
    
            "registry-mirrors":[ "https://nyakyfun.mirror.aliyuncs.com" ]
    
    }
    
    EOF
    
    

    上面执行完后 重启docker生效

    执行命令:

    • systemctl daemon-reload
    • systemctl restart docker

    添加K8s 国内镜像源

    cat>>/etc/yum.repos.d/kubrenetes.repo<<EOF
    [kubernetes]
    name=Kubernetes Repo
    baseurl=https://mirrors.aliyun.com/kubernetes/yum/repos/kubernetes-el7-x86_64/
    gpgcheck=0
    gpgkey=https://mirrors.aliyun.com/kubernetes/yum/doc/yum-key.gpg
    EOF
    
    

    安装K8s所需要的3个组件

    执行命令:

    • yum install -y kubeadm kubelet kubectl

    说明:

    • kubeadm:安装工具,使所有的组件都会以容器的方式运行

    • kubectl:客户端连接K8S API工具

    • kubelet:运行在node节点,用来启动容器的工具

    设置k8s开机自启动

    执行命令:

    systemctl enable kubelet.service
    
    

    加载内核模块

    cat>>/etc/sysctl.d/k8s.conf << EOF
    
    net.bridge.bridge-nf-call-ip6tables = 1
    
    net.bridge.bridge-nf-call-iptables = 1
    
    net.ipv4.ip_nonlocal_bind = 1
    
    net.ipv4.ip_forward = 1
    
    vm.swappiness=0
    
    EOF
    

    然后执行

    • vi /etc/sysctl.conf 填写: net.ipv4.ip_forward = 1
    • 执行命令: sysctl -p

    执行命令:

    
    cat > /etc/sysconfig/modules/ipvs.modules <<EOF
    
    #!/bin/bash
    
    modprobe -- br_netfilter
    
    modprobe -- ip_vs
    
    modprobe -- ip_vs_rr
    
    modprobe -- ip_vs_wrr
    
    modprobe -- ip_vs_sh
    
    modprobe -- nf_conntrack_ipv4
    
    EOF
    
    

    执行命令:

    • chmod 755 /etc/sysconfig/modules/ipvs.modules
    • bash /etc/sysconfig/modules/ipvs.modules
    • lsmod | grep -E "ip_vs|nf_conntrack_ipv4"

    上面的步骤需要在2台centos虚拟机都得执行的!

    下面的步骤只在master机器上操作

    我是用 192.168.159.133 作为 master机器

    通过如下指令创建默认的kubeadm-config.yaml文件:

    执行命令:

    • kubeadm config print init-defaults > kubeadm-config.yaml

    然后修改 kubeadm-config.yaml配置

    • 下面有注释的地方就是要修改的地方!!!
    [root@docker-server1 ~]# vi kubeadm-config.yaml
    
    apiVersion: kubeadm.k8s.io/v1beta2
    
    bootstrapTokens:
    
    - groups:
    
      - system:bootstrappers:kubeadm:default-node-token
    
      token: abcdef.0123456789abcdef
    
      ttl: 24h0m0s
    
      usages:
    
      - signing
    
      - authentication
    
    kind: InitConfiguration
    
    localAPIEndpoint:
    
      advertiseAddress: 192.168.159.133  #master节点的IP
    
      bindPort: 6443
    
    nodeRegistration:
    
      criSocket: /var/run/dockershim.sock
    
      name: 192.168.159.133                       #修改为IP地址,如果使用域名,必须保证解析正常
    
      taints:
    
      - effect: NoSchedule
    
        key: node-role.kubernetes.io/master
    
    ---
    
    apiServer:
    
      timeoutForControlPlane: 4m0s
    
    apiVersion: kubeadm.k8s.io/v1beta2
    
    certificatesDir: /etc/kubernetes/pki
    
    clusterName: kubernetes
    
    controllerManager: {}
    
    dns:
    
      type: CoreDNS
    
    etcd:
    
      local:
    
        dataDir: /var/lib/etcd                       #etcd容器的目录挂载到本地的/var/lib/etcd目录下,防止数据丢失
    
    imageRepository: registry.cn-hangzhou.aliyuncs.com/google_containers          #镜像仓库地址,可以修改为gcr.azk8s.cn/google_containers
    
    kind: ClusterConfiguration
    
    kubernetesVersion: v1.17.3                     #Kubernetes软件版本
    
    networking:
    
      dnsDomain: cluster.local
    
      serviceSubnet: 10.96.0.0/12
    
      podSubnet: 10.244.0.0/16        #添加这个内容
    
    scheduler: {}
    
    

    预先下载镜像

    执行命令:

    • kubeadm config images pull --config kubeadm-config.yaml

    执行命令:

    • echo '1' > /proc/sys/net/bridge/bridge-nf-call-iptables

    安装matser节点

    执行命令:

    • kubeadm init --config kubeadm-config.yaml

    如果输出以下信息表示,swap没有被禁用

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

    输出以下信息表示,请执行echo '1' > /proc/sys/net/bridge/bridge-nf-call-iptables

    [ERROR FileContent--proc-sys-net-bridge-bridge-nf-call-iptables]: /proc/sys/net/bridge/bridge-nf-call-iptables contents are not set to 1
    

    安装成功后注意看console上运行的信息

    1. 会显示如下的信息 按步执行即可
    
    mkdir -p $HOME/.kube
    sudo cp -i /etc/kubernetes/admin.conf $HOME/.kube/config
    sudo chown $(id -u):$(id -g) $HOME/.kube/config
    
    
    1. 会显示加入到master的命令,保存下来

    把下面的命令拿到 192.168.159.135 工作节点虚拟机上运行

    kubeadm join 192.168.159.133:6443 --token abcdef.0123456789abcdef 
        --discovery-token-ca-cert-hash sha256:c2d6067d5c3b12118275958dee222226d09a89fc5fb559687dc989d2508d5a50
        
    

    如果没有以上信息说明安装失败了!

    以上运行成功 检测下

    • sudo kubectl get nodes

    你会发现 Status 是 NotReady,因为没有安装网络插件!

    安装网络插件flannel

    因为上面我们安装的的k8s的版本是 v 1.17.3

    这个版本对应的 flannel 版本是:v0.11.0

    因为由于某种不可抗力 一定得先下载好docker镜像!

    下载 flannel 的 yml文件:

    wget https://raw.githubusercontent.com/coreos/flannel/master/Documentation/kube-flannel.yml
    

    执行命令:

    • kubectl apply -f kube-flannel.yml

    等待k8s 把 pod:flannel生效 可以用命令查看状态进度:

    • kubectl get pods -n kube-system

    等 flannel 状态显示 Running后

    执行查看k8s集群运行状态命令:

    • sudo kubectl get nodes
    
    NAME              STATUS     ROLES    AGE   VERSION
    192.168.159.133   Ready      master   61m   v1.17.3
    worktwo           NotReady   <none>   58m   v1.17.3
    
    

    发现master已经Ready了 但是工作node没有起来,状态是NotReady

    下面去配置工作node虚拟机上的flannel配置

    192.168.159.135 是我的工作node

    运行命令把master节点的配置copy到工作节点

    • scp -r 192.168.159.133:/etc/cni /etc/cni

    重启启动 kubelet

    • systemctl restart kubelet

    回到master节点查看

    执行查看k8s集群运行状态命令:

    • sudo kubectl get nodes
    [root@workone ~]# sudo kubectl get nodes
    NAME              STATUS   ROLES    AGE   VERSION
    192.168.159.133   Ready    master   66m   v1.17.3
    worktwo           Ready    <none>   64m   v1.17.3
    
    

    安装Dashboard UI

    先下载官方配置文件:

    wget https://raw.githubusercontent.com/kubernetes/dashboard/master/aio/deploy/recommended.yaml

    默认不对外开放端口,下载好了后需要自己手动改下配置文件

    image

    修改权限为超级管理员

    image

    安装命令:

    • kubectl apply -f recommended.yaml

    运行命令获取Token,登录需要:

    [root@workone ~]# kubectl describe secret -n kubernetes-dashboard $(kubectl get secret -n kubernetes-dashboard |grep kubernetes-dashboard-token | awk '{print $1}') |grep token | awk '{print $2}'
    kubernetes-dashboard-token-jzptb
    kubernetes.io/service-account-token
    eyJhbGciOiJSUzI1NiIsImtpZCI6IkhsLUpGV0lkalc0VHlIb2p5LVhWQ21LdFBPVGFkbUlJcVJqQ2pfNHE0VWcifQ.eyJpc3MiOiJrdWJlcm5ldGVzL3NlcnZpY2VhY2NvdW50Iiwia3ViZXJuZXRlcy5pby9zZXJ2aWNlYWNjb3VudC9uYW1lc3BhY2UiOiJrdWJlcm5ldGVzLWRhc2hib2FyZCIsImt1YmVybmV0ZXMuaW8vc2VydmljZWFjY291bnQvc2VjcmV0Lm5hbWUiOiJrdWJlcm5ldGVzLWRhc2hib2FyZC10b2tlbi1qenB0YiIsImt1YmVybmV0ZXMuaW8vc2VydmljZWFjY291bnQvc2VydmljZS1hY2NvdW50Lm5hbWUiOiJrdWJlcm5ldGVzLWRhc2hib2FyZCIsImt1YmVybmV0ZXMuaW8vc2VydmljZWFjY291bnQvc2VydmljZS1hY2NvdW50LnVpZCI6IjVjYjQ1ZTg5LTZkNjMtNDgzMS1iYWIyLTUwNWZkMTkzMDVkYSIsInN1YiI6InN5c3RlbTpzZXJ2aWNlYWNjb3VudDprdWJlcm5ldGVzLWRhc2hib2FyZDprdWJlcm5ldGVzLWRhc2hib2FyZCJ9.ShQwJ6xhntHDSpD828n4vkOVVKVRZ7KmeRPEH0tbPkcnC3bwAgwFJWfa_JIdi6KpTAMOOj4IY2fFAB83iorcqYQMG88BurNSzKSANC7cK8d3fHy5iTdh7e5IKQ_FV1mpd3d9DPLuoLjIVZKMROVleC11q6NOlNbIY4_R79Kvx3TGNqm8AWWhxBOsJ8KTTa5P6o36cH2nsJ64Qi-_x4BuA14CMSm9UJqXawi4AqYIRshlnrspDTSFRm6e3tHix-kSZQ4xIuPeKB6E59EKnCmbaPU73GfhJWWazIVCykmZg50b4uykTtXJcaWf743xjEJnfbVztcY2-kLIcgXznt37ug
    

    登录UI imageimage

    以上本地环境的vmware搭建k8s集群(1个master 1个worknode)就搞定了

  • 相关阅读:
    次奥,这不是激活界面嘛/?还原装?!@坑 了
    关于mysql_fetch_****
    如何把Excel数据转化成SQL语句转
    Failed to execute query: Duplicate entry '0' for key 'PRIMARY'
    addEventListener事件监听传递参数
    有关AS3编程的一些总结读取汉字
    用flash制作SWC文件,生成flex自定义组件【站优教程】
    前端架构师的思考
    一个禁止flash右键的方法
    为何要面向接口编程?
  • 原文地址:https://www.cnblogs.com/yudongdong/p/12384732.html
Copyright © 2020-2023  润新知