GVKun编程网logo

Ubuntu 国内安装 kubernetes(ubuntu安装kubuntu)

3

最近很多小伙伴都在问Ubuntu国内安装kubernetes和ubuntu安装kubuntu这两个问题,那么本篇文章就来给大家详细解答一下,同时本文还将给你拓展apt-getupdate失败ubunt

最近很多小伙伴都在问Ubuntu 国内安装 kubernetesubuntu安装kubuntu这两个问题,那么本篇文章就来给大家详细解答一下,同时本文还将给你拓展apt-get update 失败 ubuntu:Tempory failure resolving 'cn.archive.ubuntu.com ubuntu、docker for mac 安装 kubernetes、kubernetes dashboard、install nginx on ubuntu install ubuntu usb install ubuntu 14.04 ubuntu install jd、kubernetes (九) kubernetes 控制器等相关知识,下面开始了哦!

本文目录一览:

Ubuntu 国内安装 kubernetes(ubuntu安装kubuntu)

Ubuntu 国内安装 kubernetes(ubuntu安装kubuntu)

由于墙的原因,国内要安装 kubernetes 非常的麻烦,因此只要解决这个问题,就可以顺利安装 kubernetes 的 三个官法工具 kubelet、kubeadm、kubectl。

安装环境:
OS:Ubuntu 18.04.1

  1. 添加相应的源

    我在这里使用阿里源, 命令如下:

    sudo vim /etc/apt/sources.list.d/kubernetes.list
    
    # 将下面的阿里源加入文件中
    deb https://mirrors.aliyun.com/kubernetes/apt/ kubernetes-xenial main
    
    # 也可以选择中科大的源
    deb http://mirrors.ustc.edu.cn/kubernetes/apt kubernetes-xenial main
  2. 下载kubelet、kubeadm、kubectl

    这里先运行一下 apt udpate,会报错,原因是缺少相应的key,可以通过下面的命令添加(E084DAB9 为上面报错的key后8位)

    gpg --keyserver keyserver.ubuntu.com --recv-keys E084DAB9
    gpg --export --armor E084DAB9 | sudo apt-key add -

    然后就可以正常下载了。

    apt-get update && apt-get install -y kubelet kubeadm kubectl
  3. 关闭swap

    如果不关闭kubernetes运行会出现错误, 即使安装成功了,node重启后也会出现kubernetes server运行错误。

    #暂时关闭,
    sudo swapoff -a 
    
    # 永久关闭
    sudo vim /etc/fstab
    注释掉swap那一行就行
    虚拟机最好把内存分配调整到2G以上,否则关掉swap会导致图形界面难以进入。
  4. 获取镜像

    由于官方镜像地址被墙,所以我们需要首先获取所需镜像以及它们的版本。然后从国内阿里的镜像站获取。

    kubeadm config images list

    获取镜像列表后可以通过下面的脚本从阿里云获取:

    images=(
    kube-apiserver:v1.13.4
    kube-controller-manager:v1.13.4
    kube-scheduler:v1.13.4
    kube-proxy:v1.13.4
    pause:3.1
    etcd:3.2.24
    coredns:1.2.6
    )
    for imageName in ${images[@]} ; do
            docker pull registry.aliyuncs.com/google_containers/$imageName
            docker tag registry.aliyuncs.com/google_containers/$imageName k8s.gcr.io/$imageName
            docker rmi registry.aliyuncs.com/google_containers/$imageName
    done
  5. 初始化环境

    如果上面的镜像都下载好了,这步就比较简单了,直接运行下面的命令就行了

    kubeadm init --apiserver-advertise-address 172.16.30.140 --pod-network-cidr=10.244.0.0/16
  6. 配置授权信息

    根据init成功后的提示命令进行。

    主要是为了保存相关的配置信息在用户目录下,这样不用每次都输入相关的认证信息。

    类似下面的命令,具体以你个人的提示为准

    mkdir -p $HOME/.kube
    sudo cp -i /etc/kubernetes/admin.conf $HOME/.kube/config
    sudo chown $(id -u):$(id -g) $HOME/.kube/config
  7. 保存添加Node的命令

    类似于

    kubeadm join 172.16.30.140:6443 --token aat409.plzb63oim93gjucq --discovery-token-ca-cert-hash sha256:5b906d68640eeddcd1381bf76dc0da5c522d71ceb89c547ac5a61fded064e54e

    这条命令一定保存好,因为后期没法重现的!!

  8. 删除node的命令:

    在master节点上执行:

    kubectl drain node1-k8s --delete-local-data --force --ignore-daemonsets
    kubectl delete node node1-k8s

    在节点上执行

    kubeadm reset
  9. 添加网络插件

    上面安装成功后如果通过查询kube-system下Pod的运行情况,会放下和网络相关的Pod都处于Pending的状态,这是因为缺少相关的网络插件,而网络插件有很多个(以下任选一个),可以选择自己需要的。

    • flannel

      需要在kubeadm init 时设置 --pod-network-cidr=10.244.0.0/16

      kubectl apply -f https://raw.githubusercontent.com/coreos/flannel/v0.10.0/Documentation/kube-flannel.yml
    • weave

      sysctl net.bridge.bridge-nf-call-iptables=1
      kubectl apply -f "https://cloud.weave.works/k8s/net?k8s-version=$(kubectl version | base64 | tr -d '\n')"
    • calico

      需要 kubeadm init 时设置 --pod-network-cidr=192.168.0.0/16

      kubectl apply -f https://docs.projectcalico.org/v3.1/getting-started/kubernetes/installation/hosted/rbac-kdd.yaml
      kubectl apply -f https://docs.projectcalico.org/v3.1/getting-started/kubernetes/installation/hosted/kubernetes-datastore/calico-networking/1.7/calico.yaml
    • CNI bridge

      mkdir -p /etc/cni/net.d
      cat >/etc/cni/net.d/10-mynet.conf <<-EOF
      {
          "cniVersion": "0.3.0","name": "mynet","type": "bridge","bridge": "cni0","isGateway": true,"ipMasq": true,"ipam": {
              "type": "host-local","subnet": "10.244.0.0/16","routes": [
                  {"dst": "0.0.0.0/0"}
              ]
          }
      }
      EOF
      cat >/etc/cni/net.d/99-loopback.conf <<-EOF
      {
          "cniVersion": "0.3.0","type": "loopback"
      }
      EOF

apt-get update 失败 ubuntu:Tempory failure resolving 'cn.archive.ubuntu.com ubuntu

apt-get update 失败 ubuntu:Tempory failure resolving 'cn.archive.ubuntu.com ubuntu

当运行apt-get update后出现如下错误时:
E: Some index files Failed to download,they have been ignored,or old ones used instead.

可以将目录下/var/lib/apt/lists/partial/所有的文件清掉,再次运行apt-get update即可!自带源在大陆不好。


出现以下错误:

ubuntu:Tempory failure resolving ''cn.archive.ubuntu.com ubuntu


修改dns:

1,重启生效:

sudovi/etc/resolvconf/resolv.conf.d/base(这个文件默认是空的)

在里面插入:
nameserver8.8.8.8
nameserver8.8.4.4

如果有多个DNS就一行一个

修改好保存,然后执行

sudoresolvconf-u

再看/etc/resolv.conf,最下面就多了2行:

cat/etc/resolv.conf
#Dynamicresolv.conf(5)fileforglibcresolver(3)generatedbyresolvconf(8)
#DONOTEDITTHISFILEBYHAND--YOURCHANGESWILLBEOVERWRITTEN
可以看到我们的设置已经加上了,然后再ping一个域名,当时就可以解析了,无需重启。


2,重启失效:

配置文件地址 /etc/resolv.conf

使用编辑器打开

改为如下内容:
search localdomain
nameserver 202.96.128.86 希望修改成的DNS
nameserver 202.96.128.166 备用DNS

重启网络:sudo /etc/init.d/networking restart。即可

docker for mac 安装 kubernetes、kubernetes dashboard

docker for mac 安装 kubernetes、kubernetes dashboard

  • 安装参考地址(按照此文档,安装成功):https://yq.aliyun.com/articles/508460

  • 官方说明:https://kubernetes.io/docs/tasks/access-application-cluster/web-ui-dashboard/

  • 常用命令 kubectl 命令:

kubectl get namespaces
kubectl get pods --namespace kube-system
kubectl get deployments --namespace kube-system
kubectl get services --namespace kube-system
kubectl -n kube-system edit service kubernetes-dashboard
kubectl get pods
kubectl get deployments
kubectl get services
kubectl config view

获取令牌,然后登陆 kubernetes dashboard

➜  ~ kubectl get secrets
NAME                  TYPE                                  DATA      AGE
default-token-6ljm8   kubernetes.io/service-account-token   3         6h
➜  ~ kubectl describe secrets default-token-6ljm8
Name:         default-token-6ljm8
Namespace:    default
Labels:       <none>
Annotations:  kubernetes.io/service-account.name=default
              kubernetes.io/service-account.uid=77d014c2-0804-11e9-acd8-025000000001

Type:  kubernetes.io/service-account-token

Data
====
ca.crt:     1025 bytes
namespace:  7 bytes
token:      eyJhbGciOiJSUzI1NiIsImtpZCI6IiJ9.eyJpc3MiOiJrdWJlcm5ldGVzL3NlcnZpY2VhY2NvdW50Iiwia3ViZXJuZXRlcy5pby9zZXJ2aWNlYWNjb3VudC9uYW1lc3BhY2UiOiJkZWZhdWx0Iiwia3ViZXJuZXRlcy5pby9zZXJ2aWNlYWNjb3VudC9zZWNyZXQubmFtZSI6ImRlZmF1bHQtdG9rZW4tNmxqbTgiLCJrdWJlcm5ldGVzLmlvL3NlcnZpY2VhY2NvdW50L3NlcnZpY2UtYWNjb3VudC5uYW1lIjoiZGVmYXVsdCIsImt1YmVybmV0ZXMuaW8vc2VydmljZWFjY291bnQvc2VydmljZS1hY2NvdW50LnVpZCI6Ijc3ZDAxNGMyLTA4MDQtMTFlOS1hY2Q4LTAyNTAwMDAwMDAwMSIsInN1YiI6InN5c3RlbTpzZXJ2aWNlYWNjb3VudDpkZWZhdWx0OmRlZmF1bHQifQ.G9TGa4KGj5B-cMv-0-vuangR2_tFiQ1nJMgtsEPs1BEwPAyjmaC-BL5y0Ux9HyC1mlt0DklO-8_o41i4OD_w0wLymxi8zZQxgY7Tlu3_oE5OKnK58xWN-mMTKKnvfDpZrIBbkWQ5EB49LC7QiTBKGAoixGyOBvU1fmD2AzpdO3sWvNsaOWbMLFcwzHA-M2V-CKU3I07Hxs6uIi9juk4IqkTryfvCDUafTrubpkVktwQr7UwzvmKfbPoWLyn1tbCDhR3Il64daoTE9nlmqWwYZZFmfaZjWWWYfi3QPXuNUNpXRVVd_6gcjUzebR1o-22KoOUbobQ94K-1bYJOQSZNnA

将 token 部分复制到登录页的 token 输入框,登陆即可。 出处:http://www.cnblogs.com/along21/p/9811860.html#auto_id_11

install nginx on ubuntu install ubuntu usb install ubuntu 14.04 ubuntu install jd

install nginx on ubuntu install ubuntu usb install ubuntu 14.04 ubuntu install jd

kubernetes (九) kubernetes 控制器

kubernetes (九) kubernetes 控制器

kubernetes 控制器

kubernetes 部署应用的流程

pod 和 controller 控制器的关系

  • controllers: 在集群上管理和运行容器的对象
  • pod 和 controller 通过 label-selector 关联
  • Pod 通过控制器实现应用的运维,例如伸缩,升级等

deployment 控制器

  • 功能:
    • 用于部署无状态应用
    • 管理 POD 和 Replicaset
    • 具有上线部署,副本设定,滚动升级,回滚等功能
    • 提供声明式更新
  • 应用场景: Web 服务,微服务,API

deployment 控制器的定义

kubectl explain deployment.spec

$ vim deployment.yml
apiVersion: apps/v1
kind: Deployment
metadata:
  name: nginx-deploy
  namespace: prod
spec:
  replicas: 3
  selector:
    matchLabels:
      app: nginx
  template:
    metadata:
      labels:
         app: nginx
    spec:
      containers:
      - name: nginx
        image: nginx:1.18-alpine
        ports:
        - containerPort: 80

 $ kubectl apply -f deployment.yml
 $ kubectl get deploy -n prod -o wide

被控制对象是放在 template 下的 containers

通过命令行操作 deployment

  • 部署应用
$ kubectl create deployment web --image=nginx:1.14
$ kubectl get deploy,pods
  • 暴露应用
$ kubectl expose deployment web --port=80 --type=NodePort --target-port=80 --name=web
$ kubectl get svc,deploy,pod
  • 应用升级
$ kubectl set image deploy/web nginx=nginx:1.15
$  kubectl rollout status deploy/web  #查看升级状态
  • 应用回滚
$ kubectl rollout history deploy/web #查看版本
$ kubectl rollout undo deploy/web   #回滚到上一个版本
$ kubectl rollout undo deploy/web --to-revision=1 #回到指定版本
  • 扩缩容
$ kubectl scale deployment web --replicas=10   #扩容
$ kubectl scale deployment web --replicas=1  #缩容

daemonSet

  • 功能
    • 在每一个 node 上运行一个 POD
    • 新加入的 node 也会自动运行一个 POD
  • 引用场景: Agent

Job

  • 分类
    • 普通 Job
    • 定时任务
  • 特点: 一次性执行
  • 应用场景: 离线数据处理,视频解码业务
$ cat job.yml 
apiVersion: batch/v1
kind: Job
metadata:
  name: pi
  namespace: prod
spec:
  template:
    spec:
      containers:
      - name: pi
        image: perl
        command: ["perl","-Mbignum=bpi","-wle","print bpi(20000)"]
      restartPolicy: Never
  backoffLimit: 4 

$ kubectl get pod -n prod 
$ kubectl get job -n prod
$ kubectl logs -f pi-rjdhm -n prod

CronJob

  • 定时任务,类似于 linux 的 crontab
  • 用用场景: 通知任务,备份任务
$ vim cronjob.yml
apiVersion: batch/v1beta1
kind: CronJob
metadata:
  name: cron
  namespace: prod
spec:
  schedule: "*/1 * * * *"
  jobTemplate:
    spec:
      template:
        spec:
          containers:
          - name: hello
            image: busybox
            args:
            - /bin/sh
            - -c
            - date;echo hello from the kubernetes cluster
          restartPolicy: OnFailure
$ kubectl get cronjob -n prod
$ kubectl logs -f cron-1595347620-nptsf  -n prod

关于Ubuntu 国内安装 kubernetesubuntu安装kubuntu的介绍已经告一段落,感谢您的耐心阅读,如果想了解更多关于apt-get update 失败 ubuntu:Tempory failure resolving 'cn.archive.ubuntu.com ubuntu、docker for mac 安装 kubernetes、kubernetes dashboard、install nginx on ubuntu install ubuntu usb install ubuntu 14.04 ubuntu install jd、kubernetes (九) kubernetes 控制器的相关信息,请在本站寻找。

本文标签: