zoukankan      html  css  js  c++  java
  • k8s-学习笔记1-kubeadm部署k8s

    https://blog.csdn.net/wenjianfeng/article/details/93347306

     https://www.cnblogs.com/python-cat/p/10831419.html

    master部署

    前提条件:docker已部署

    添加yum源

    vi /etc/yum.repos.d/kubernetes.repo

    [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
    

      

    安装

    kubelet 运行在 Cluster 所有节点上,负责启动 Pod 和容器。

    kubeadm 用于初始化 Cluster。

    kubectl 是 Kubernetes 命令行工具。通过 kubectl 可以部署和管理应用,查看各种资源,创建、删除和更新各种组件。

    yum install kubelet kubeadm kubectl -y
    

      

    检查swap和桥接

    cat /proc/sys/net/bridge/bridge-nf-call-iptables
    1
    
    free -m
                  total        used        free      shared  buff/cache   available
    Mem:            991         151         365           7         475         674
    Swap:             0           0           0
    

      

    初始化

    --image-repository string:这个用于指定从什么位置来拉取镜像

    --kubernetes-version string:指定kubenets版本号(看一下之前安装的版本)

    --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。

    kubeadm init --image-repository registry.aliyuncs.com/google_containers --kubernetes-version v1.18.2 --apiserver-advertise-address 10.0.0.80 --pod-network-cidr=10.244.0.0/16
    

      

    成功的话是以下信息,按照提示,先配置集群信息

    Your Kubernetes control-plane has initialized successfully!
    
    To start using your cluster, you need to run the following as a regular user:
    
      mkdir -p $HOME/.kube
      sudo cp -i /etc/kubernetes/admin.conf $HOME/.kube/config
      sudo chown $(id -u):$(id -g) $HOME/.kube/config
    
    You should now deploy a pod network to the cluster.
    Run "kubectl apply -f [podnetwork].yaml" with one of the options listed at:
      https://kubernetes.io/docs/concepts/cluster-administration/addons/
    
    Then you can join any number of worker nodes by running the following on each as root:
    
    kubeadm join 10.0.0.80:6443 --token 7yasz7.oouxo59ravh4eitz 
        --discovery-token-ca-cert-hash sha256:545678e30451193c605e170ba3f8b8e500b9a5c7d0bb54bd00eb7c7113a4308d
    

      

    配置完,kubectl就能用了

    获取组件状态

    kubectl get cs
    NAME                 STATUS    MESSAGE             ERROR
    scheduler            Healthy   ok                  
    etcd-0               Healthy   {"health":"true"}   
    controller-manager   Healthy   ok  
    

      

    为了使用更便捷,启用 kubectl 命令的自动补全功能。

    echo "source <(kubectl completion bash)" >> ~/.bashrc
    

      

    配置flannel网络

    要让 Kubernetes Cluster 能够工作,必须安装 Pod 网络,否则 Pod 之间无法通信。

    Kubernetes 支持多种网络方案,这里我们先使用 flannel,后面还会讨论 Canal。

    # kubectl apply -f https://raw.githubusercontent.com/coreos/flannel/master/Documentation/kube-flannel.yml
    

      

    部署完后,可以在系统名称空间里看到pod

    # kubectl get pods -n kube-system
    NAME                                              READY   STATUS    RESTARTS   AGE
    coredns-7ff77c879f-6wkt6                          1/1     Running   0          28d
    coredns-7ff77c879f-m2crn                          1/1     Running   0          28d
    etcd-masterpub-10.0.0.80-hd1                      1/1     Running   0          28d
    kube-apiserver-masterpub-10.0.0.80-hd1            1/1     Running   0          28d
    kube-controller-manager-masterpub-10.0.0.80-hd1   1/1     Running   5          28d
    kube-flannel-ds-amd64-qxb9w                       1/1     Running   0          28d
    kube-flannel-ds-amd64-vff5m                       0/1     Evicted   0          6m5s
    kube-proxy-b957k                                  1/1     Running   0          28d
    kube-proxy-wlb86                                  1/1     Running   0          28d
    kube-scheduler-masterpub-10.0.0.80-hd1            1/1     Running   3          28d
    

      

    部署node

    添加yum,安装kubelet kubeadm kubectl,检查桥接是否为1。

    然后按照master部署好之后给出的提示,运行kubeadm join。

    这时在master上跑kubectl get nodes,node已经有,但是还未ready

    node上启动kubelet,就会ready

    systemctl restart kubelet
    systemctl enable kubelet 
    

      

    token

    node加入集群使用的token,默认是有有效期的,过期之后node就需要使用新的token

    # kubeadm token create
    W0602 14:40:46.337640   28438 configset.go:202] WARNING: kubeadm cannot validate component configs for API groups [kubelet.config.k8s.io kubeproxy.config.k8s.io]
    x56kjm.7e6t3iz2x9y3d93t
    # kubeadm token list
    TOKEN                     TTL         EXPIRES                     USAGES                   DESCRIPTION                                                EXTRA GROUPS
    yjd9de.axl9y80ztcjqevce   23h         2020-06-03T14:22:48+08:00   authentication,signing   <none>                                                     system:bootstrappers:kubeadm:default-node-token
    

      

    CNI网卡

    上面初始化的时候,pod网络是10.244.0.0/16。

    查看master,是0.1网段

    7: cni0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1450 qdisc noqueue state UP group default qlen 1000
        link/ether 82:03:38:b5:ca:49 brd ff:ff:ff:ff:ff:ff
        inet 10.244.0.1/24 scope global cni0
           valid_lft forever preferred_lft forever
    

      

    node1,是1.1网段

    43: cni0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1450 qdisc noqueue state UP group default qlen 1000
        link/ether fa:fe:aa:1a:cf:40 brd ff:ff:ff:ff:ff:ff
        inet 10.244.1.1/24 scope global cni0
           valid_lft forever preferred_lft forever
    

      

    K8s集群内部的pod是可以相互通信的,查看部署的容器,会发现,如果分配到某个网段的node,就会有这个网段的ip地址。

    这样,就可以保证pod地址的唯一性

  • 相关阅读:
    转:裸接口防护,避免恶意盗刷和爬取
    oracle = : := 和变量绑定 oracle通配符和运算符
    169.254地址无网关信息 ----- 解决方案 启动DHCP服务
    NAS DAS SAN 磁带机 tco
    linux 权限详解
    转载:哈希加密算法 MD5,SHA-1,SHA-2,SHA-256,SHA-512,SHA-3,RIPEMD-160
    MD5,SHA1 都是哈希 摘要算法 MD5+SALT BCRYPT
    iOS开发JSON字符串和字典互转
    iOS开发线程之NSThread
    iOS开发NSMutableArray数组越界处理
  • 原文地址:https://www.cnblogs.com/jabbok/p/12822114.html
Copyright © 2011-2022 走看看