• k8s入门-1 在Ubuntu安装步骤


    为了测试华为的KubeEdge,需要搭建K8s环境。

    环境:

    Ubuntu20.04

    Docker版本

    (一)安装步骤
    参考:https://zhuanlan.zhihu.com/p/138554103

    1,确保禁止掉swap分区

    sudo swapoff -a
    
    #修改/etc/fstab,注释掉swap那行,持久化生效
    sudo vi /etc/fstab
    

    2,确保时区和时间正确

    sudo timedatectl set-timezone Asia/Shanghai
    
    #修改后,如果想使得系统日志的时间戳也立即生效,则:
    sudo systemctl restart rsyslog 
    

    3、确保不休眠

    sudo systemctl mask sleep.target suspend.target hibernate.target hybrid-sleep.target
    

    4、设置iptables可以看到bridged traffic  

    先确认Linux内核加载了br_netfilter模块:

    lsmod | grep br_netfilter
    

    确保sysctl配置中net.bridge.bridge-nf-call-iptables的值设置为了1。

    cat <<EOF | sudo tee /etc/sysctl.d/k8s.conf
    net.bridge.bridge-nf-call-ip6tables = 1
    net.bridge.bridge-nf-call-iptables = 1
    EOF
    sudo sysctl --system
    

    5、设置rp_filter的值

    #修改/etc/sysctl.d/10-network-security.conf
    sudo vi /etc/sysctl.d/10-network-security.conf
    
    #将下面两个参数的值从2修改为1
    #net.ipv4.conf.default.rp_filter=1
    #net.ipv4.conf.all.rp_filter=1
    
    #然后使之生效
    sudo sysctl --system
    

      

    6、开始安装K8s master

    1,安装kubeadm kubeadm kubectl

    sudo apt-get update && sudo apt-get install -y ca-certificates curl software-properties-common apt-transport-https curl
     curl -s https://mirrors.aliyun.com/kubernetes/apt/doc/apt-key.gpg | sudo apt-key add -
    
    sudo tee /etc/apt/sources.list.d/kubernetes.list <<EOF 
    deb https://mirrors.aliyun.com/kubernetes/apt/ kubernetes-xenial main
    EOF
    
    sudo apt-get update
    sudo apt-get install -y kubelet kubeadm kubectl
    sudo apt-mark hold kubelet kubeadm kubectl
    

      

    2、初始化,这里问题很多,请参考(二)

    sudo kubeadm init --pod-network-cidr 172.16.0.0/16 
        --image-repository registry.cn-hangzhou.aliyuncs.com/google_containers
    

      

     3、安装calico插件

    下载calico的k8s yaml文件,修改里面的CALICO_IPV4POOL_CIDR的值来避免和宿主机所在的局域网段冲突(gemfield就是把原始的192.168.0.0/16 修改成了172.16.0.0/16):

    #下载 https://docs.projectcalico.org/v3.19/manifests/calico.yaml
    #修改CALICO_IPV4POOL_CIDR,然后
    kubectl apply -f calico.yaml

    如果提示安装失败,去https://docs.projectcalico.org/releases 下载最新版,安装,不然不会Ready.

    查看状态

    kubectl get pods -n kube-system -o widekubectl get pods -n kube-system -o wide

    这是从新apply的初始化过程状态

    (二)问题处理

    1、isn't running or healthy

    [wait-control-plane] Waiting for the kubelet to boot up the control plane as static Pods from directory "/etc/kubernetes/manifests". This can take up to 4m0s
    [kubelet-check] Initial timeout of 40s passed.
    [kubelet-check] It seems like the kubelet isn't running or healthy.
    [kubelet-check] The HTTP call equal to 'curl -sSL http://localhost:10248/healthz' failed with error: Get "http://localhost:10248/healthz": dial tcp 127.0.0.1:10248: connect: connection refused.
    

    解决办法:

    1.1、关闭Swap

    1.2、做如下处理

    I faced similar issue recently. The problem was cgroup driver. Kubernetes cgroup driver was set to systems but docker was set to systemd. So I created '/etc/docker/daemon.json' and added below:
    
    {
    "exec-opts": ["native.cgroupdriver=systemd"]
    }
    Then
    
     systemctl daemon-reload
     systemctl restart docker
     systemctl restart kubelet
    Run kubeadm init or kubeadm join again.
    

      

    2、无法下载coredns处理

    docker pull coredns/coredns
    kubeadm config images list --config new.yaml
    docker images
    docker tag coredns/coredns:latest registry.cn-hangzhou.aliyuncs.com/google_containers/coredns/coredns:v1.8.4
    docker rmi coredns/coredns:latest
    

    3、The connection to the server localhost:8080 was refused - did you specify the right host or port?

    echo "export KUBECONFIG=/etc/kubernetes/admin.conf" >> /etc/profile
    source /etc/profile
    

    4、Node节点:Config not found: /etc/kubernetes/admin.conf

    mv /etc/kubernetes/kubelet.conf /etc/kubernetes/admin.conf
    

    5、节点虚拟机提示nodename exist

    error execution phase kubelet-start: a Node with name "zgj" and status "Ready" already exists in the cluster. You must delete the existing Node or change the name of this new joining Node

    hostnamectl set-hostname zgj1 

    因为直接复制的虚拟机,所以名字重复,这样从新加入即可。

    6、reset从新安装后

     Get "https://xx.xx.xx.xx:6443/version?timeout=32s": x509: certificate signed by unknown authority

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

    (三)复制一个虚拟机,然后重命名hostname,先kubeadm reset,然后执行kubeadm最后生成的join语句。

    kubeadm join 192.168.3.67:6443 --token xxxx.xxxxxxxxx
    	--discovery-token-ca-cert-hash sha256:xxxxxxxxxxxxxxxxxxxxxxxxxxxx 
    

     

     

     加入Node后的样子

     应该基本上成功了。

     

      

    本博客是个人工作中记录,遇到问题可以互相探讨,没有遇到的问题可能没有时间去特意研究,勿扰。
    另外建了几个QQ技术群:
    2、全栈技术群:616945527,加群口令abc123
    2、硬件嵌入式开发: 75764412
    3、Go语言交流群:9924600

    闲置域名www.nsxz.com出售(等宽等高字符四字域名)。
  • 相关阅读:
    BZOJ 2299 向量
    BZOJ 1237 配对
    BZOJ 2226 LCMSum
    BZOJ 1876 SuperGCD
    查漏补缺:C++STL简述(容器部分)
    查漏补缺:Linux进程与线程的区别
    码海拾遗:常用的其中排序算法
    码海拾遗:简述C++(一)
    码海拾遗:简单的链表类
    码海拾遗:位运算实现加减乘除
  • 原文地址:https://www.cnblogs.com/zhaogaojian/p/15142422.html
Copyright © 2020-2023  润新知