美文网首页JAVAK8s学习空间
k8s学习笔记(一)跑通k8s再说

k8s学习笔记(一)跑通k8s再说

作者: YongtaoHuang | 来源:发表于2021-08-15 10:56 被阅读0次

    网络上教程很多是旧版本的镜像,拉取不到。需要按照自己的情况去搭建。本文使用的kubernete版本是1.12.1

    一、环境安装

    $ apt-get install -y kubelet=1.21.1-00 kubeadm=1.21.1-00 kubectl=1.21.1-00
    # 卸载方法
    $ kubeadm reset 
    $ apt-get remove kubelet kubeadm kubectl 
    

    禁用swap:参考 https://zhuanlan.zhihu.com/p/138554103

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

    注册aliyun账号并且,docker login: 参考: https://help.aliyun.com/document_detail/60743.html
    拉取相关的image,其中有一个bug,需要重新打tag:

    # 查询需要下载的镜像
    $ kubeadm config images list --config kubeadm.yaml
    # 查询已经有的镜像
    $ docker images
    # 注意coredns会出现问题
    $ docker pull registry.aliyuncs.com/google_containers/coredns:1.8.0
    # 重命名
    $ docker tag registry.aliyuncs.com/google_containers/coredns:1.8.0 registry.aliyuncs.com/google_containers/coredns/coredns:v1.8.0
    # 删除原有镜像
    $ docker rmi registry.aliyuncs.com/google_containers/coredns:1.8.0
    

    二、k8s集群组建

    目的:一个master node,一个worker node.
    执行命令:

    $ kubeadm init --image-repository registry.aliyuncs.com/google_containers --pod-network-cidr=10.244.0.0/16 --apiserver-advertise-address=10.112.122.9 
    

    其中10.112.122.9是master node host ip,执行结果:

    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
    
    Alternatively, if you are the root user, you can run:
    
      export KUBECONFIG=/etc/kubernetes/admin.conf
    
    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.112.122.9:6443 --token u4nw4p.3fxtty1sbpkyi6n0 \
            --discovery-token-ca-cert-hash sha256:c1ea97710f4e5ed7722b0e293ca9f7f2db66fac1cde17d65c22a724d08c5a1af
    

    完成初始化操作:

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

    一个误操作和复原方法,记录

    $ kubectl apply -f https://docs.projectcalico.org/manifests/calico.yaml
    $ kubectl delete -f https://docs.projectcalico.org/manifests/calico.yaml
    

    此时网络还没跑起来:

    $ kubectl get pods -n kube-system
    NAME                                                       READY   STATUS    RESTARTS   AGE
    coredns-545d6fc579-lxzt9                                   0/1     Pending   0          2m6s
    coredns-545d6fc579-tx6sj                                   0/1     Pending   0          2m6s
    etcd-hyongtaonew-precision-tower-5810                      1/1     Running   0          2m21s
    kube-apiserver-hyongtaonew-precision-tower-5810            1/1     Running   0          2m16s
    kube-controller-manager-hyongtaonew-precision-tower-5810   1/1     Running   0          2m16s
    kube-proxy-d5b69                                           1/1     Running   0          2m6s
    kube-scheduler-hyongtaonew-precision-tower-5810            1/1     Running   0          2m16s
    

    CNI网络部署

    # 这个yaml文件有700多行 不复制了
    $ wget https://docs.projectcalico.org/v3.10/manifests/calico.yaml
    $ kubectl apply -f calico.yaml
    

    稍等片刻后,coredns等服务都处于running状态了:

    $ kubectl get pods -n kube-system
    NAME                                                       READY   STATUS    RESTARTS   AGE
    calico-kube-controllers-7c5dd46f7d-bm5m5                   1/1     Running   0          77s
    calico-node-pl2cr                                          0/1     Running   0          77s
    coredns-545d6fc579-lxzt9                                   1/1     Running   0          7m23s
    coredns-545d6fc579-tx6sj                                   1/1     Running   0          7m23s
    etcd-hyongtaonew-precision-tower-5810                      1/1     Running   0          7m38s
    kube-apiserver-hyongtaonew-precision-tower-5810            1/1     Running   0          7m33s
    kube-controller-manager-hyongtaonew-precision-tower-5810   1/1     Running   0          7m33s
    kube-proxy-d5b69                                           1/1     Running   0          7m23s
    kube-scheduler-hyongtaonew-precision-tower-5810            1/1     Running   0          7m33s
    

    构建Worker Node

    # 在worker node执行下面的命令
    $ kubeadm join 10.112.122.9:6443 --token u4nw4p.3fxtty1sbpkyi6n0         --discovery-token-ca-cert-hash sha256:c1ea97710f4e5ed7722b0e293ca9f7f2db66fac1cde17d65c22a724d08c5a1af
    # 在master node执行
    $ kubectl get nodes
    NAME                               STATUS   ROLES                  AGE   VERSION
    amdlattice-precision-tower-5810    Ready    <none>                 2m    v1.21.1
    hyongtaonew-precision-tower-5810   Ready    control-plane,master   14m   v1.21.1
    
    

    启动一个Nginx服务

    $ kubectl create deployment nginx --image=nginx
    deployment.apps/nginx created
    $  kubectl expose deployment nginx --port=80 --type=NodePort # 暴露80端口
    service/nginx exposed
    $ kubectl get pod,svc # 查看对外端口
    NAME                         READY   STATUS    RESTARTS   AGE
    pod/nginx-6799fc88d8-fzhnv   1/1     Running   0          29s
    
    NAME                 TYPE        CLUSTER-IP     EXTERNAL-IP   PORT(S)          AGE
    service/flaskapp-1   NodePort    10.99.22.77    <none>        5000:30005/TCP   3m15s
    service/kubernetes   ClusterIP   10.96.0.1      <none>        443/TCP          19m
    service/nginx        NodePort    10.109.12.14   <none>        80:32101/TCP     16s
    

    最后访问http://10.117.169.29:32101/的结果图:
    10.117.169.29为worker node的真实ip。

    nginx.png

    三、几个相关的yaml文件

    kubeadm.yaml的内容,没有用到,留作参考:

    apiVersion: kubeadm.k8s.io/v1beta2
    kind: ClusterConfiguration
    controllerManager:
      extraArgs:
        horizontal-pod-autoscaler-use-rest-clients: "true"
        horizontal-pod-autoscaler-sync-period: "10s"
        node-monitor-grace-period: "10s"
    apiServer:
      extraArgs:
        runtime-config: "api/all=true"
    kubernetesVersion: v1.21.1
    imageRepository: registry.aliyuncs.com/google_containers
    
    

    相关文章

      网友评论

        本文标题:k8s学习笔记(一)跑通k8s再说

        本文链接:https://www.haomeiwen.com/subject/eamebltx.html