这里小编给你们介绍关于kubernetes的安装和命令的基本使用,固然本人感受只是一个过渡篇,毕竟真正的核心是它的维护和平常的生产使用。可是尽管如此,没有集群永远搞不了事情,因此开始进入正题:
1. Kubernetes的安装配置
2. 配置参数介绍
3. Kubectl命令介绍node
Kubernetes的安装配置linux
#关闭防火墙: [root@node01 ~]#systemctl disable firewalld [root@node01 ~]#systemctl stop firewalld #主机关闭selinux [root@node01 ~]#setenforce 0 或者[root@node01 ~]#vim /etc/sysconfig/selinux (SELINUX=disabled) #重启服务器 [root@node01 ~]#reboot now
从kubernetes1.4开始引入了命令kubeadm,致力于简化集群的安装和解决kubernetes集群的高可用问题,可是其中存在很多bug,所以不能用于生产,可是咱们能够用于学习测试。
① 安装kubeadm和相关工具(注意,分布式的集群,须要在每个节点上配置)git
#配置yum源,因为默认的yum源可能国内的网络没法访问,这里咱们配置一个国内的yum源 /etc/yum.repos.d/mritd.repo: [mritd] name=Mritd Repository baseurl=https://yumrepo.b0.upaiyun.com/centos/7/x86_64 enable=1 gpgcheck=0 编写好以后: [root@node01 ~]#yum clean all [root@node01 ~]#yum makecache #安装相应的工具 [root@node01 ~]#yum install -y docker kubelet kubeadm kubectl Kubernetes-cni #启动如下服务 [root@node01 ~]#systemctl enable docker &&systemctl start docker [root@node01 ~]#systemctl enable kubelet&&systemctl start kubelet
② 下载kubernetes的相关镜像
这里最好配置一个国内docker的镜像加速器:(步骤略:)http://www.javashuo.com/article/p-rjlglpqu-ey.html
#在master节点上pull相关镜像docker
docker pull k8s.gcr.io/kube-apiserver:v1.13.0 docker pull k8s.gcr.io/kube-controller-manager:v1.13.0 docker pull k8s.gcr.io/kube-scheduler:v1.13.0 docker pull k8s.gcr.io/kube-proxy:v1.13.0 docker pull k8s.gcr.io/pause:3.1 docker pull k8s.gcr.io/etcd:3.2.24 docker pull k8s.gcr.io/coredns:1.2.6 docker pull k8s.gcr.io/kubernetes-dashboard-amd64:v1.10.0 docker tag k8s.gcr.io/kube-apiserver:v1.13.0 gladmo/kube-apiserver:v1.13.0 docker tag k8s.gcr.io/kube-controller-manager:v1.13.0 gladmo/kube-controller-manager:v1.13.0 docker tag k8s.gcr.io/kube-scheduler:v1.13.0 gladmo/kube-scheduler:v1.13.0 docker tag k8s.gcr.io/kube-proxy:v1.13.0 gladmo/kube-proxy:v1.13.0 docker tag k8s.gcr.io/pause:3.1 gladmo/pause:3.1 docker tag k8s.gcr.io/etcd:3.2.24 gladmo/etcd:3.2.24 docker tag k8s.gcr.io/coredns:1.2.6 gladmo/coredns:1.2.6 docker tag k8s.gcr.io/kubernetes-dashboard-amd64:v1.10.0 gladmo/kubernetes-dashboard-amd64:v1.10.0
③ 运行kubeadm init安装master
至此准备工做就绪,执行 kubeadm init 命令便可一键完成kubernetes master的节点安装vim
[root@node01 ~]#kubeadm init --kubernetes-version=1.6.0 #安装一段时间后,会有相应的提示,当安装成功后,根据相应的提示执行一下命令: [root@node01 ~]#cp /etc/Kubernetes/admin.conf $HOME [root@node01 ~]#chown $(id -u ):$(id -g ) $HOME/admin.conf [root@node01 ~]#export KUBECONFIG=$HOME/admin.conf
④ 安装node,加入集群(如下命令是安装在node节点的)centos
#安装相应服务 [root@node01 ~]#yum intall -y docker kubelet kubeadm kubectl kubernetes-cni #启动相应服务 [root@node01 ~]#systemctl enable docker && systemctl start docker [root@node01 ~]#systemctl enable kubelet && systemctl start kubelet #执行kubeadm join 命令,加入集群: [root@node01 ~]#kubeadm join –token c19151.ba4d5s1c15s1dw4f 192.168.130.131:6443 注意:这的token来自于,使用kubeadm安装master过程当中的最后一行字: 然后面的URL则是master的URL地址
⑤ 安装网络插件api
[root@node01 ~]#kubectl get nodes 会发现,提示master节点是notready,这是由于尚未安装CNI网络插件 [root@node01 ~]#kubectl apply -f https://git.io/weave-kube-1.6 #一键安装
⑥ 验证kubernetes集群是否安装成功:安全
[root@node01 ~]#kubectl get pods –all-namespaces
注意:若是etcd、apiservice、controller-manager、dns、proxy、scheduler、weave-net这些pod都正常启动,表示集群安装成功。
网上的搭建内容不少,这里小编只是简单的总结一下,能够参考:
https://www.jianshu.com/p/897e0f14be60bash
固然若是想定制本身的kubernetes集群,不妨使用二进制的文件的方式安装kubernetes集群,固然这个是一个挑战,这里方便学习,小编只介绍了快速安装kubernetes集群的方法。固然通常企业级的kubernetes集群都是运维大佬们本身的搞的,这里小编介绍一下企业级的kubernetes集群的安装步骤:
根据本身企业的需求使用二进制或者其余方式去安装集群(这里必定是绝对稳定的安装方式)
各个服务的启动参数(在各自的配置文件中配置)
Kubernetes集群的安全设置,这里过程比较难懂(我的以为,安全比bug还难解决)
集群的网络配置(网络插件):flannel、openvSwitch、weave…
私有仓库,能够经过docker的registry,或者企业级的harbor
根据生产的需求,可能须要在集群的运行的时候,对服务进行不一样的修改,这里就须要了解相应的核心服务的配置:
公共参数
Kube-apiserver启动参数
Kube-controller-manager启动参数
Kube-scheduler启动参数
Kubelet启动参数
Kube-proxy启动参数
小编这里就不一一给你们举例具体有哪些详细的参数,由于这个通常都是用的时候去找,就像Linux命令同样,不可能所有都记住的,为了弥补你们,小编找了一个《kubernetes权威指南》第二版的pdf,小编也是跟着这本书结合工做中的问题去学习kubernetes的,可是小编看了看介绍的kubernetes版本比较低,可能会有些知识不同。小编也会按期更新看这本书的心得以及相关知识点。服务器
《kubernetes权威指南》第二版的pdf:http://down.51cto.com/data/2461262
kubectl命令语法以下:
$kubectl [command] [TYPE] [NAME] [flags]
其中command、TYPE、NAME、flags的含义以下:
①command:子命令、用于操做kubernetes集群资源对象的命令,例如:create、delete、describe、get、apply等。
②TYPE:资源对象类型,区分大小写,能以单数形式、复数形式或者简写形式表示,例如:
pod、service、deployment等等。
③NAME:资源对象的名称,区分大小写,若是不指定名称,系统将返回属于TYPE的所有对象列表。
④ flags:kbectl子命令的可选参数,例如“-s”指定apiservice的URL地址而不用默认值。
kubectl命令能够用于多种格式对结果进行显示,输出的格式经过-o参数指定:
$kubectl [command] [TYPE] [NAME] -o=<output_format>
经常使用输出格式演示:
$kubectl get pod <pod-name> -o =wide #显示pod的更多信息 $kubectl get pod <pod-name> -o =yaml #以yaml格式显示pod信息 $kubectl get pod <pod-name> -o =custom-columns=NAME:.metadata.name,RSRC:.metadata.resourceVersion #自定义信息显示 $kubectl get pod <pod-name> -o =custom-columns-file=temp.txt #基于文件 temp.txt文件内容: NAME RSRC metadata.name metadata.resourceVersion #排序操做 $kubectl get pods –sort-by=.metadata.name #将显示结果根据name进行排序
#建立资源对象 $kubectl create -f my-service.yaml -f my-rc.yaml #根据具体文件建立资源对象 $kubectl create -f <directory> #建立目录下全部的文件的资源对象 #查看资源对象 $kubectl get pods -n namespace_name $ kubectl get rc,service -n namespace_name #描述资源对象 $kubectl describe nodes <node-name> -n namespace_name $kubectl describe pod pod_name -n namespace_name $kubectl describe pods <rc-name> #显示有RC管理的pod #删除资源对象 $kubectl delete -f pod.yaml #基于pod.yaml定义的名称删除pod $kubectl delete pods ,service,-l name=<label-name> #删除全部包含label的pod和service $kubectl delete pods --all 删除全部的pod #执行容器命令 $kubectl exec <pod-name> date $kubectl exec <pod-name> -c <container-name> date $kubectl exec -it <pod-name> -c <container-name> /bin/bash #查看容器的日志 $kubectl logs <pod-name> $kubectl logs -f <pod-name> -c <container-name> #监控某一个pod中的某一个容器的日志