全文参考了两篇中文文档:

1,https://www.cnblogs.com/RainingNight/p/using-kubeadm-to-create-a-cluster.html

2,http://running.iteye.com/blog/2322634

注意:

运行命令是一定要区分是在master节点还是在pods节点上运行的,有些命令只能在master节点执行,有些命令只能在pods节点执行。这个要区分。

运行命令一定要区分清用户是谁,是root还是普通用户。

大步骤:

1,在master节点和pods节点上安装软件;

2,在master节点上启动kubernetes软件,并初始化master节点;

3,在从节点上启动kubernetes软件,并连接到master节点进行注册;

4,通过master启动一个pods,执行一个应用程序(nginx为例);

5,通过master启动一个服务,将刚才的应用程序关联到这个服务项上;

6,测试master的scale能力,根据服务名瞬间启动一个相同的pods;

1,在master节点和pods节点上安装软件

  1. sudo apt-get update && sudo apt-get install -y apt-transport-https
  2. curl -s http://packages.faasx.com/google/apt/doc/apt-key.gpg | sudo apt-key add -
  3. sudo cat <<EOF >/etc/apt/sources.list.d/kubernetes.list
  4. deb http://mirrors.ustc.edu.cn/kubernetes/apt/ kubernetes-xenial main
  5. EOF
  6. sudo apt-get update
  7. sudo apt-get install -y kubelet kubeadm kubectl

2,在master节点上启动kubernetes软件,并初始化master节点;

2.1,在master节点初始化一个cluster

由于网络原因,我们需要提前拉取k8s初始化需要用到的Images,并添加对应的k8s.gcr.io标签:

  1. ## 拉取镜像
  2. docker pull reg.qiniu.com/k8s/kube-apiserver-amd64:v1.10.2
  3. docker pull reg.qiniu.com/k8s/kube-controller-manager-amd64:v1.10.2
  4. docker pull reg.qiniu.com/k8s/kube-scheduler-amd64:v1.10.2
  5. docker pull reg.qiniu.com/k8s/kube-proxy-amd64:v1.10.2
  6. docker pull reg.qiniu.com/k8s/etcd-amd64:3.1.
  7. docker pull reg.qiniu.com/k8s/pause-amd64:3.1
  8.  
  9. ## 添加Tag
  10. docker tag reg.qiniu.com/k8s/kube-apiserver-amd64:v1.10.2 k8s.gcr.io/kube-apiserver-amd64:v1.10.2
  11. docker tag reg.qiniu.com/k8s/kube-scheduler-amd64:v1.10.2 k8s.gcr.io/kube-scheduler-amd64:v1.10.2
  12. docker tag reg.qiniu.com/k8s/kube-controller-manager-amd64:v1.10.2 k8s.gcr.io/kube-controller-manager-amd64:v1.10.2
  13. docker tag reg.qiniu.com/k8s/kube-proxy-amd64:v1.10.2 k8s.gcr.io/kube-proxy-amd64:v1.10.2
  14. docker tag reg.qiniu.com/k8s/etcd-amd64:3.1. k8s.gcr.io/etcd-amd64:3.1.
  15. docker tag reg.qiniu.com/k8s/pause-amd64:3.1 k8s.gcr.io/pause-amd64:3.1
  16.  
  17. ## 在Kubernetes 1.10 中,增加了CoreDNS,如果使用CoreDNS(默认关闭),则不需要下面三个镜像。
  18. docker pull reg.qiniu.com/k8s/k8s-dns-sidecar-amd64:1.14.
  19. docker pull reg.qiniu.com/k8s/k8s-dns-kube-dns-amd64:1.14.
  20. docker pull reg.qiniu.com/k8s/k8s-dns-dnsmasq-nanny-amd64:1.14.
  21.  
  22. docker tag reg.qiniu.com/k8s/k8s-dns-sidecar-amd64:1.14. k8s.gcr.io/k8s-dns-sidecar-amd64:1.14.
  23. docker tag reg.qiniu.com/k8s/k8s-dns-kube-dns-amd64:1.14. k8s.gcr.io/k8s-dns-kube-dns-amd64:1.14.
  24. docker tag reg.qiniu.com/k8s/k8s-dns-dnsmasq-nanny-amd64:1.14. k8s.gcr.io/k8s-dns-dnsmasq-nanny-amd64:1.14.

2.2,初始化cluster

  1. <master-node>: sudo kubeadm init --pod-network-cidr=192.168.0.0/16
    注意这里的输出最好能记录在text中,因为后面会用到

2.3,将kubernetes的配置项放到普通用户目录下

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

这样kubectl会自动寻址到config文件,不用依赖一个严格的root可读的config

2.4,安装各种软件(https://docs.projectcalico.org/v3.3/getting-started/kubernetes/)

  1. 2.4. 安装etcd
  2. kubectl apply -f \
  3. https://docs.projectcalico.org/v3.3/getting-started/kubernetes/installation/hosted/etcd.yaml
  4.  
  5. 2.4. 安装rbac
  6. kubectl apply -f \
  7. https://docs.projectcalico.org/v3.3/getting-started/kubernetes/installation/rbac.yaml
  8.  
  9. 2.4. 安装calico
  10. kubectl apply -f \
  11. https://docs.projectcalico.org/v3.3/getting-started/kubernetes/installation/hosted/calico.yaml
  12.  
  13. 2.4. 确认安装成功
  14. watch kubectl get pods --all-namespaces
  15. 结束后Ctrl + C
  16.  
  17. 2.4. 再次确认
  18. kubectl get nodes -o wide

2.5 在从节点启动kubernetes软件

  1. 在从节点上执行:
    sudo kubeadm join 192.168.0.8: --token vtyk9m.g4afak37myq3rsdi --discovery-token-ca-cert-hash sha256:19246ce11ba3fc633fe0b21f2f8aaaebd7df9103ae47138dc0dd615f61a32d99 
  1. 这里的命令要和2.2的输出保持一致(几个参数可能不一致,按照自己的输出自行修改即可)
  2.  
  3. 如果2.2的输出已经没法找到,可以用以下命令再次得到join语句。
  1. 在主节点上执行:
  2. kubeadm token create --print-join-command
  3.  
  4. 然后再在从节点上执行以上得到的join语句
  1. 2.6,确认主从节点已经完成启动,需要等几分钟:
  1. 主节点上执行
  2. kubectl get nodes
  1. 3,创建可用的pod
    3.1,创建一个nginx的镜像当做pod内的应用程序
  1. 主节点上执行:
    kubectl run my-nginx --image=nginx --replicas= --port=
  1. 3.2,确认pod已经生成
  1. 主节点上执行:
  2.  
  3. kubectl get pods
  1. 3.3,将该pods发布到kubernetes上,作为一个服务
  1. luwenwei@localhost:~/download/k8s$ kubectl expose deployment my-nginx --port=8080 --target-port=80
  2. service/my-nginx exposed
  3.  
  4. kubectl expose deployment <run-deploy-name> --port=<port> --target-port=<target-port> --name=<service-name>
    把已经发布的应用<run-deploy-name>暴露成一种服务,原始端口为<port>,对外服务的端口为<target-port>,暴露出来的service名称为<service-name>

 3.4,查看服务是否已经生成

  1. luwenwei@localhost:~$ kubectl get services
  2. NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE
  3. kubernetes ClusterIP 10.96.0.1 <none> /TCP 108m
  4. my-nginx ClusterIP 10.98.38.80 <none> /TCP 91m
  1. 3.5,访问该服务
  1. luwenwei@localhost:~$ kubectl describe service/my-nginx
  2. Name: my-nginx
  3. Namespace: default
  4. Labels: run=my-nginx
  5. Annotations: <none>
  6. Selector: run=my-nginx
  7. Type: ClusterIP
  8. IP: 10.98.38.80
  9. Port: <unset> /TCP
  10. TargetPort: /TCP
  11. Endpoints: 192.168.244.65:
  12. Session Affinity: None
  13. Events: <none>
  1. 获取到IPport
  1. 从节点上执行:
    luwenwei@ubuntu:~$ curl 10.98.38.80:
  2.  
  3. <!DOCTYPE html>
  4. <html>
  5. <head>
  6. <title>Welcome to nginx!</title>
  7. <style>
  8. body {
  9. width: 35em;
  10. margin: auto;
  11. font-family: Tahoma, Verdana, Arial, sans-serif;
  12. }
  13. </style>
  14. </head>
  15. <body>
  16. <h1>Welcome to nginx!</h1>
  17. <p>If you see this page, the nginx web server is successfully installed and
  18. working. Further configuration is required.</p>
  19.  
  20. <p>For online documentation and support please refer to
  21. <a href="http://nginx.org/">nginx.org</a>.<br/>
  22. Commercial support is available at
  23. <a href="http://nginx.com/">nginx.com</a>.</p>
  24.  
  25. <p><em>Thank you for using nginx.</em></p>
  26. </body>
  27. </html>
  1.  
  2. 4,扩容该servicepods
    4.1,查看扩容前的pods
  1. luwenwei@localhost:~$ kubectl get pods
  2. NAME READY STATUS RESTARTS AGE
  3. my-nginx-756f645cd7-mg45n / Running 98m

4.2,执行扩容

  1. luwenwei@localhost:~$ kubectl scale deployment my-nginx --replicas=
  2. deployment.extensions/my-nginx scaled

4.3,查看扩容后的pods信息

  1. luwenwei@localhost:~$ kubectl get pods
  2. NAME READY STATUS RESTARTS AGE
  3. my-nginx-756f645cd7-dww7g / ContainerCreating 6s
  4. my-nginx-756f645cd7-mg45n / Running 98m

4.4,查看service的信息

  1. luwenwei@localhost:~$ kubectl describe service/my-nginx
  2. Name: my-nginx
  3. Namespace: default
  4. Labels: run=my-nginx
  5. Annotations: <none>
  6. Selector: run=my-nginx
  7. Type: ClusterIP
  8. IP: 10.98.38.80
  9. Port: <unset> /TCP
  10. TargetPort: /TCP
  11. Endpoints: 192.168.244.65:,192.168.244.66:
  12. Session Affinity: None
  13. Events: <none>

4.4,反向验证pods和service的对应

  1. luwenwei@localhost:~$ kubectl describe pods | grep IP
  2. IP: 192.168.244.66
  3. IP: 192.168.244.65

4.5,访问新的service

  1. luwenwei@ubuntu:~$ curl 10.98.38.80:
  2. <!DOCTYPE html>
  3. <html>
  4. <head>
  5. <title>Welcome to nginx!</title>
  6. <style>
  7. body {
  8. width: 35em;
  9. margin: auto;
  10. font-family: Tahoma, Verdana, Arial, sans-serif;
  11. }
  12. </style>
  13. </head>
  14. <body>
  15. <h1>Welcome to nginx!</h1>
  16. <p>If you see this page, the nginx web server is successfully installed and
  17. working. Further configuration is required.</p>
  18.  
  19. <p>For online documentation and support please refer to
  20. <a href="http://nginx.org/">nginx.org</a>.<br/>
  21. Commercial support is available at
  22. <a href="http://nginx.com/">nginx.com</a>.</p>
  23.  
  24. <p><em>Thank you for using nginx.</em></p>
  25. </body>
  26. </html>

5,使用完毕后清理cluster信息

5.1,清除node数据

  1. 主节点上执行
    kubectl drain <node name> --delete-local-data --force --ignore-daemonsets

5.2,删除node节点

  1. 主节点上执行
    kubectl delete node <node name>

5.3,收回cluster信息

  1. 在要移除的节点上,执行:
  2. sudo kubeadm reset
  1. 输出结果:
  1. luwenwei@ubuntu:~$ sudo kubeadm reset
  2. [sudo] password for luwenwei:
  3. [reset] WARNING: changes made to this host by 'kubeadm init' or 'kubeadm join' will be reverted.
  4. [reset] are you sure you want to proceed? [y/N]: y
  5. [preflight] running pre-flight checks
  6. [reset] stopping the kubelet service
  7. [reset] unmounting mounted directories in "/var/lib/kubelet"
  8. [reset] no etcd manifest found in "/etc/kubernetes/manifests/etcd.yaml". Assuming external etcd
  9. [reset] please manually reset etcd to prevent further issues
  10. [reset] deleting contents of stateful directories: [/var/lib/kubelet /etc/cni/net.d /var/lib/dockershim /var/run/kubernetes]
  11. [reset] deleting contents of config directories: [/etc/kubernetes/manifests /etc/kubernetes/pki]
  12. [reset] deleting files: [/etc/kubernetes/admin.conf /etc/kubernetes/kubelet.conf /etc/kubernetes/bootstrap-kubelet.conf /etc/kubernetes/controller-manager.conf /etc/kubernetes/scheduler.conf
  1.  
  1.  

34 【kubernetes】安装手册的更多相关文章

  1. kubernetes 安装手册(成功版)

    管理组件采用staticPod或者daemonSet形式跑的,宿主机os能跑docker应该本篇教程能大多适用安装完成仅供学习和实验 本次安裝的版本: Kubernetes v1.10.0 (1.10 ...

  2. linux下subversion server安装手册

    linux下subversion server安装手册 安装基于的Linux版本为:Red Hat Enterprise Linux Server release 6.3. 一 准备需要的安装包. ( ...

  3. Oracle&nbsp;11g&nbsp;R2安装手册(…

    1.Oracle 11g R2安装手册(图文教程)For Windows 1.下载Oracle 11g R2 for Windows版本,下载地址如下官方网站:http://download.orac ...

  4. Redis安装手册

    转载请注明出处:http://www.cnblogs.com/robinjava77/p/5465146.html (Robin) 1)下载redis:wget http://download.red ...

  5. Docker系列(九)Kubernetes安装

    环境: A.B两天机器A机器IP:192.169.0.104,B机器IP:192.168.0.102,其中A为Master节点,B为Slave节点 操作系统:Centos7 Master与Slave节 ...

  6. Oracle 11g R2安装手册(图文教程)For Windows

    1.Oracle 11g R2安装手册(图文教程)For Windows 1.下载Oracle 11g R2 for Windows版本,下载地址如下 官方网站: http://download.or ...

  7. oracle 11gR2 RAC安装手册

    --oracle 11gR2 RAC安装手册 -----------------------------2013/10/29 参考三思笔记 http://files.cnblogs.com/jackh ...

  8. entos 7虚拟机安装手册

    entos 7虚拟机安装手册. 环境:VMware虚拟机软件 centos7 最小化安装包 步骤: 第一步:新建虚拟机 第二步:选择要安装的虚拟机的操作系统镜像.如我这里使用的就是CentOS7最小化 ...

  9. Nginx安装手册

    前提是搭建yum安装环境,见前面的教程资料 Nginx安装手册1 nginx安装环境 nginx是C语言开发,建议在linux上运行,本教程使用Centos6.5作为安装环境. gcc 安装ngin ...

  10. 泛微云桥e-Bridge安装手册

    有时候不看官方文档进行配置,可能会出现奇奇怪怪的问题,SO转载一下官方文档,顺带学习. 想超长体验此软件,请搜索本博客内容,有破解方法,仅用来学习使用,顺带进行二次开发,请勿使用在商业用途,谢谢. 泛 ...

随机推荐

  1. struts2多文件上传-2

    <!-- 多文件上传 --> <action name="UploadAction2_*" class="uploadfile.UploadAction ...

  2. python第三方模块的导入

    模块搜索路径 当我们尝试加载一个模块时,Python会在指定的路径下搜索对应的.py文件,如果找不到,就会报错: >>> import module1 Traceback (most ...

  3. PythonStudy——进制 System of numeration

    十进制 人类天然选择了十进制. 二进制 二进制有两个特点:它由两个数码0,1组成,二进制数运算规律是逢二进一. 四进制 四进制是以4为基数的进位制,以 0.1.2 和 3 四个数字表示任何实数. 七进 ...

  4. java应用:向用户注册的邮箱发送邮件

    实现功能 忘记密码,注册成功等向用户发送验证码信息或注册信息. 业务流程 忘记密码: 1.验证邮箱是否注册过: 2.向邮箱发送验证码: 3.验证验证码是否正确: 4.重新设置密码: 我这里着重介绍发送 ...

  5. [转]Python如何引入自定义模块?

    转自 http://www.cnblogs.com/JoshuaMK/p/5205398.html Python运行环境在查找库文件时是对 sys.path 列表进行遍历,如果我们想在运行环境中注册新 ...

  6. 涨姿势:深入 foreach循环

    我们知道集合中的遍历都是通过迭代(iterator)完成的. 也许有人说,不一定非要使用迭代,如: List<String> list = new LinkedList<String ...

  7. 转载--无弹窗APT渗透实验

    转载--无弹窗APT渗透实验 文章作者:亚信安全,转载自 FreeBuf.COM APT攻击方式花样繁多,我研究最近的流行的APT攻击方式,在本地搭建环境模拟一次简单的APT攻击,在模拟攻击过程中发现 ...

  8. html/css/js-横向滚动条的实现

    在前端UI设计时,网页的制作很麻烦,深有感悟!碰到太多的不懂,或是第一次见,就要去网上找资料!横向滚动条就是我遇到麻烦中其中的一个,其实也 很简单,只是在几次项目中都用到了这个横向滚动条所以就拿出来说 ...

  9. HDFS知识点总结

    学习完Hadoop权威指南有一段时间了,现在再回顾和总结一下HDFS的知识点. 1.HDFS的设计 HDFS是什么:HDFS即Hadoop分布式文件系统(Hadoop Distributed File ...

  10. 好看的java集合类图

    http://blog.csdn.net/iamzp2008/article/details/38151971?utm_source=tuicool&utm_medium=referral 现 ...