这里小编给大家介绍关于kubernetes的安装和命令的基本使用,当然本人感觉只是一个过渡篇,毕竟真正的核心是它的维护和日常的生产使用。但是尽管如此,没有集群永远搞不了事情,所以开始进入正题:
1. Kubernetes的安装配置
2. 配置参数介绍
3. Kubectl命令介绍
一、Kubernetes的安装配置
Kubernetes的安装配置
(1)环境要求:
1)软硬件:
2)服务:
#关闭防火墙:
[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
(2)使用kubeadm工具快速安装kubernetes集群:
从kubernetes1.4开始引入了命令kubeadm,致力于简化集群的安装和解决kubernetes集群的高可用问题,但是其中存在不少bug,因此不能用于生产,但是我们可以用于学习测试。
① 安装kubeadm和相关工具(注意,分布式的集群,需要在每一个节点上配置)
#配置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的镜像加速器:(步骤略:)https://blog.51cto.com/14048416/2382924
#在master节点上pull相关镜像
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的节点安装
[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节点的)
#安装相应服务
[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地址
⑤ 安装网络插件
[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/897e0f14be60
二、配置参数介绍
当然如果想定制自己的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命令介绍
(1) kubectl语法介绍
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地址而不用默认值。
(2) kubectl可操作的资源对象
(3) kubectl子命令介绍
(4) kubectl输出格式
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进行排序
(5) kubectl操作示例
#创建资源对象
$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中的某一个容器的日志
转载于:https://blog.51cto.com/14048416/2392413