34 【kubernetes】安装手册
全文参考了两篇中文文档:
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节点上安装软件
- sudo apt-get update && sudo apt-get install -y apt-transport-https
- curl -s http://packages.faasx.com/google/apt/doc/apt-key.gpg | sudo apt-key add -
- sudo cat <<EOF >/etc/apt/sources.list.d/kubernetes.list
- deb http://mirrors.ustc.edu.cn/kubernetes/apt/ kubernetes-xenial main
- EOF
- sudo apt-get update
- sudo apt-get install -y kubelet kubeadm kubectl
2,在master节点上启动kubernetes软件,并初始化master节点;
2.1,在master节点初始化一个cluster
由于网络原因,我们需要提前拉取k8s初始化需要用到的Images,并添加对应的k8s.gcr.io
标签:
- ## 拉取镜像
- docker pull reg.qiniu.com/k8s/kube-apiserver-amd64:v1.10.2
- docker pull reg.qiniu.com/k8s/kube-controller-manager-amd64:v1.10.2
- docker pull reg.qiniu.com/k8s/kube-scheduler-amd64:v1.10.2
- docker pull reg.qiniu.com/k8s/kube-proxy-amd64:v1.10.2
- docker pull reg.qiniu.com/k8s/etcd-amd64:3.1.
- docker pull reg.qiniu.com/k8s/pause-amd64:3.1
- ## 添加Tag
- docker tag reg.qiniu.com/k8s/kube-apiserver-amd64:v1.10.2 k8s.gcr.io/kube-apiserver-amd64:v1.10.2
- docker tag reg.qiniu.com/k8s/kube-scheduler-amd64:v1.10.2 k8s.gcr.io/kube-scheduler-amd64:v1.10.2
- docker tag reg.qiniu.com/k8s/kube-controller-manager-amd64:v1.10.2 k8s.gcr.io/kube-controller-manager-amd64:v1.10.2
- docker tag reg.qiniu.com/k8s/kube-proxy-amd64:v1.10.2 k8s.gcr.io/kube-proxy-amd64:v1.10.2
- docker tag reg.qiniu.com/k8s/etcd-amd64:3.1. k8s.gcr.io/etcd-amd64:3.1.
- docker tag reg.qiniu.com/k8s/pause-amd64:3.1 k8s.gcr.io/pause-amd64:3.1
- ## 在Kubernetes 1.10 中,增加了CoreDNS,如果使用CoreDNS(默认关闭),则不需要下面三个镜像。
- docker pull reg.qiniu.com/k8s/k8s-dns-sidecar-amd64:1.14.
- docker pull reg.qiniu.com/k8s/k8s-dns-kube-dns-amd64:1.14.
- docker pull reg.qiniu.com/k8s/k8s-dns-dnsmasq-nanny-amd64:1.14.
- docker tag reg.qiniu.com/k8s/k8s-dns-sidecar-amd64:1.14. k8s.gcr.io/k8s-dns-sidecar-amd64:1.14.
- docker tag reg.qiniu.com/k8s/k8s-dns-kube-dns-amd64:1.14. k8s.gcr.io/k8s-dns-kube-dns-amd64:1.14.
- 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
- <master-node>: sudo kubeadm init --pod-network-cidr=192.168.0.0/16
注意这里的输出最好能记录在text中,因为后面会用到
2.3,将kubernetes的配置项放到普通用户目录下
- mkdir -p $HOME/.kube
- sudo cp -i /etc/kubernetes/admin.conf $HOME/.kube/config
- sudo chown $(id -u):$(id -g) $HOME/.kube/config
这样kubectl会自动寻址到config文件,不用依赖一个严格的root可读的config
2.4,安装各种软件(https://docs.projectcalico.org/v3.3/getting-started/kubernetes/)
- 2.4. 安装etcd
- kubectl apply -f \
- https://docs.projectcalico.org/v3.3/getting-started/kubernetes/installation/hosted/etcd.yaml
- 2.4. 安装rbac
- kubectl apply -f \
- https://docs.projectcalico.org/v3.3/getting-started/kubernetes/installation/rbac.yaml
- 2.4. 安装calico
- kubectl apply -f \
- https://docs.projectcalico.org/v3.3/getting-started/kubernetes/installation/hosted/calico.yaml
- 2.4. 确认安装成功
- watch kubectl get pods --all-namespaces
- 结束后Ctrl + C
- 2.4. 再次确认
- kubectl get nodes -o wide
2.5 在从节点启动kubernetes软件
- 在从节点上执行:
sudo kubeadm join 192.168.0.8: --token vtyk9m.g4afak37myq3rsdi --discovery-token-ca-cert-hash sha256:19246ce11ba3fc633fe0b21f2f8aaaebd7df9103ae47138dc0dd615f61a32d99
- 这里的命令要和2.2的输出保持一致(几个参数可能不一致,按照自己的输出自行修改即可)
- 如果2.2的输出已经没法找到,可以用以下命令再次得到join语句。
- 在主节点上执行:
- kubeadm token create --print-join-command
- 然后再在从节点上执行以上得到的join语句
- 2.6,确认主从节点已经完成启动,需要等几分钟:
- 主节点上执行
- kubectl get nodes
- 3,创建可用的pod
3.1,创建一个nginx的镜像当做pod内的应用程序
- 主节点上执行:
kubectl run my-nginx --image=nginx --replicas= --port=
- 3.2,确认pod已经生成
- 主节点上执行:
- kubectl get pods
- 3.3,将该pods发布到kubernetes上,作为一个服务
- luwenwei@localhost:~/download/k8s$ kubectl expose deployment my-nginx --port=8080 --target-port=80
- service/my-nginx exposed
- 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,查看服务是否已经生成
- luwenwei@localhost:~$ kubectl get services
- NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE
- kubernetes ClusterIP 10.96.0.1 <none> /TCP 108m
- my-nginx ClusterIP 10.98.38.80 <none> /TCP 91m
- 3.5,访问该服务
- luwenwei@localhost:~$ kubectl describe service/my-nginx
- Name: my-nginx
- Namespace: default
- Labels: run=my-nginx
- Annotations: <none>
- Selector: run=my-nginx
- Type: ClusterIP
- IP: 10.98.38.80
- Port: <unset> /TCP
- TargetPort: /TCP
- Endpoints: 192.168.244.65:
- Session Affinity: None
- Events: <none>
- 获取到IP和port
- 从节点上执行:
luwenwei@ubuntu:~$ curl 10.98.38.80:- <!DOCTYPE html>
- <html>
- <head>
- <title>Welcome to nginx!</title>
- <style>
- body {
- width: 35em;
- margin: auto;
- font-family: Tahoma, Verdana, Arial, sans-serif;
- }
- </style>
- </head>
- <body>
- <h1>Welcome to nginx!</h1>
- <p>If you see this page, the nginx web server is successfully installed and
- working. Further configuration is required.</p>
- <p>For online documentation and support please refer to
- <a href="http://nginx.org/">nginx.org</a>.<br/>
- Commercial support is available at
- <a href="http://nginx.com/">nginx.com</a>.</p>
- <p><em>Thank you for using nginx.</em></p>
- </body>
- </html>
- 4,扩容该service的pods数
4.1,查看扩容前的pods数
- luwenwei@localhost:~$ kubectl get pods
- NAME READY STATUS RESTARTS AGE
- my-nginx-756f645cd7-mg45n / Running 98m
4.2,执行扩容
- luwenwei@localhost:~$ kubectl scale deployment my-nginx --replicas=
- deployment.extensions/my-nginx scaled
4.3,查看扩容后的pods信息
- luwenwei@localhost:~$ kubectl get pods
- NAME READY STATUS RESTARTS AGE
- my-nginx-756f645cd7-dww7g / ContainerCreating 6s
- my-nginx-756f645cd7-mg45n / Running 98m
4.4,查看service的信息
- luwenwei@localhost:~$ kubectl describe service/my-nginx
- Name: my-nginx
- Namespace: default
- Labels: run=my-nginx
- Annotations: <none>
- Selector: run=my-nginx
- Type: ClusterIP
- IP: 10.98.38.80
- Port: <unset> /TCP
- TargetPort: /TCP
- Endpoints: 192.168.244.65:,192.168.244.66:
- Session Affinity: None
- Events: <none>
4.4,反向验证pods和service的对应
- luwenwei@localhost:~$ kubectl describe pods | grep IP
- IP: 192.168.244.66
- IP: 192.168.244.65
4.5,访问新的service
- luwenwei@ubuntu:~$ curl 10.98.38.80:
- <!DOCTYPE html>
- <html>
- <head>
- <title>Welcome to nginx!</title>
- <style>
- body {
- width: 35em;
- margin: auto;
- font-family: Tahoma, Verdana, Arial, sans-serif;
- }
- </style>
- </head>
- <body>
- <h1>Welcome to nginx!</h1>
- <p>If you see this page, the nginx web server is successfully installed and
- working. Further configuration is required.</p>
- <p>For online documentation and support please refer to
- <a href="http://nginx.org/">nginx.org</a>.<br/>
- Commercial support is available at
- <a href="http://nginx.com/">nginx.com</a>.</p>
- <p><em>Thank you for using nginx.</em></p>
- </body>
- </html>
5,使用完毕后清理cluster信息
5.1,清除node数据
- 主节点上执行
kubectl drain <node name> --delete-local-data --force --ignore-daemonsets
5.2,删除node节点
- 主节点上执行
kubectl delete node <node name>
5.3,收回cluster信息
- 在要移除的节点上,执行:
- sudo kubeadm reset
- 输出结果:
- luwenwei@ubuntu:~$ sudo kubeadm reset
- [sudo] password for luwenwei:
- [reset] WARNING: changes made to this host by 'kubeadm init' or 'kubeadm join' will be reverted.
- [reset] are you sure you want to proceed? [y/N]: y
- [preflight] running pre-flight checks
- [reset] stopping the kubelet service
- [reset] unmounting mounted directories in "/var/lib/kubelet"
- [reset] no etcd manifest found in "/etc/kubernetes/manifests/etcd.yaml". Assuming external etcd
- [reset] please manually reset etcd to prevent further issues
- [reset] deleting contents of stateful directories: [/var/lib/kubelet /etc/cni/net.d /var/lib/dockershim /var/run/kubernetes]
- [reset] deleting contents of config directories: [/etc/kubernetes/manifests /etc/kubernetes/pki]
- [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
34 【kubernetes】安装手册的更多相关文章
- kubernetes 安装手册(成功版)
管理组件采用staticPod或者daemonSet形式跑的,宿主机os能跑docker应该本篇教程能大多适用安装完成仅供学习和实验 本次安裝的版本: Kubernetes v1.10.0 (1.10 ...
- linux下subversion server安装手册
linux下subversion server安装手册 安装基于的Linux版本为:Red Hat Enterprise Linux Server release 6.3. 一 准备需要的安装包. ( ...
- Oracle 11g R2安装手册(…
1.Oracle 11g R2安装手册(图文教程)For Windows 1.下载Oracle 11g R2 for Windows版本,下载地址如下官方网站:http://download.orac ...
- Redis安装手册
转载请注明出处:http://www.cnblogs.com/robinjava77/p/5465146.html (Robin) 1)下载redis:wget http://download.red ...
- Docker系列(九)Kubernetes安装
环境: A.B两天机器A机器IP:192.169.0.104,B机器IP:192.168.0.102,其中A为Master节点,B为Slave节点 操作系统:Centos7 Master与Slave节 ...
- Oracle 11g R2安装手册(图文教程)For Windows
1.Oracle 11g R2安装手册(图文教程)For Windows 1.下载Oracle 11g R2 for Windows版本,下载地址如下 官方网站: http://download.or ...
- oracle 11gR2 RAC安装手册
--oracle 11gR2 RAC安装手册 -----------------------------2013/10/29 参考三思笔记 http://files.cnblogs.com/jackh ...
- entos 7虚拟机安装手册
entos 7虚拟机安装手册. 环境:VMware虚拟机软件 centos7 最小化安装包 步骤: 第一步:新建虚拟机 第二步:选择要安装的虚拟机的操作系统镜像.如我这里使用的就是CentOS7最小化 ...
- Nginx安装手册
前提是搭建yum安装环境,见前面的教程资料 Nginx安装手册1 nginx安装环境 nginx是C语言开发,建议在linux上运行,本教程使用Centos6.5作为安装环境. gcc 安装ngin ...
- 泛微云桥e-Bridge安装手册
有时候不看官方文档进行配置,可能会出现奇奇怪怪的问题,SO转载一下官方文档,顺带学习. 想超长体验此软件,请搜索本博客内容,有破解方法,仅用来学习使用,顺带进行二次开发,请勿使用在商业用途,谢谢. 泛 ...
随机推荐
- struts2多文件上传-2
<!-- 多文件上传 --> <action name="UploadAction2_*" class="uploadfile.UploadAction ...
- python第三方模块的导入
模块搜索路径 当我们尝试加载一个模块时,Python会在指定的路径下搜索对应的.py文件,如果找不到,就会报错: >>> import module1 Traceback (most ...
- PythonStudy——进制 System of numeration
十进制 人类天然选择了十进制. 二进制 二进制有两个特点:它由两个数码0,1组成,二进制数运算规律是逢二进一. 四进制 四进制是以4为基数的进位制,以 0.1.2 和 3 四个数字表示任何实数. 七进 ...
- java应用:向用户注册的邮箱发送邮件
实现功能 忘记密码,注册成功等向用户发送验证码信息或注册信息. 业务流程 忘记密码: 1.验证邮箱是否注册过: 2.向邮箱发送验证码: 3.验证验证码是否正确: 4.重新设置密码: 我这里着重介绍发送 ...
- [转]Python如何引入自定义模块?
转自 http://www.cnblogs.com/JoshuaMK/p/5205398.html Python运行环境在查找库文件时是对 sys.path 列表进行遍历,如果我们想在运行环境中注册新 ...
- 涨姿势:深入 foreach循环
我们知道集合中的遍历都是通过迭代(iterator)完成的. 也许有人说,不一定非要使用迭代,如: List<String> list = new LinkedList<String ...
- 转载--无弹窗APT渗透实验
转载--无弹窗APT渗透实验 文章作者:亚信安全,转载自 FreeBuf.COM APT攻击方式花样繁多,我研究最近的流行的APT攻击方式,在本地搭建环境模拟一次简单的APT攻击,在模拟攻击过程中发现 ...
- html/css/js-横向滚动条的实现
在前端UI设计时,网页的制作很麻烦,深有感悟!碰到太多的不懂,或是第一次见,就要去网上找资料!横向滚动条就是我遇到麻烦中其中的一个,其实也 很简单,只是在几次项目中都用到了这个横向滚动条所以就拿出来说 ...
- HDFS知识点总结
学习完Hadoop权威指南有一段时间了,现在再回顾和总结一下HDFS的知识点. 1.HDFS的设计 HDFS是什么:HDFS即Hadoop分布式文件系统(Hadoop Distributed File ...
- 好看的java集合类图
http://blog.csdn.net/iamzp2008/article/details/38151971?utm_source=tuicool&utm_medium=referral 现 ...