一.快速安装入门
1.docker
2.kubernetes
3.为kubectl配置别名和命令行补全
4.卸载k8s
5.K3s – a lightweight Kubernetes
6.清理工作
一.快速安装入门
1.docker
yum update-
yum list dockeryum install docker -
systemctl enable docker.servicesytemctl start docker.servicesystemctl status docker.service rpm -ql docker | less
Notes:
首先在一个终端中运行:journalctl -f -u docker
打开另一个终端运行docker的相关命令:docker search | pull | run <registy>/<repository>/<image>:<tag>
注意区别registry和repository:例如对于docker hub registry来说repository应为你的DockerHubID
registry:早期中所有系统中的registry都为Docker Hub Registry(docker.io),但由于大企业连接公共registry的风险问题,RHEL以将默认的Docker Hub Registry改为了registry.access.redhat.com,我在ubuntu中并为找到相关可以自己修改的registry项,在fedora中应可以找到,下面就来找一下。
首先找出Docker的相关配置文件:sudo find /etc -name docker
ls -alF /etc/sysconfig/dockerls -alF /etc/docker可以看出相关的配置应该在/etc/sysconfig/docker文件中
less /etc/sysconfig/docker由标注处可以看出原本可以在该文件中设置的registry改为了在
/etc/containers/registries.conf中进行设置man 5 registries.conf:可查看联机帮助页less /etc/containers/registries.conf
[registries.search]
registries = ['docker.io', 'registry.fedoraproject.org', 'quay.io', 'registry.access.redhat.com', 'registry.centos.org']
可以看出fedora中的第一个查找的registry为docker.io即Docker Hub Registry,但其后又有多个按顺序查找的registry,其中就有RHEL的,还有fedora项目自身的以及centos的registry。
2.kubernetes
yum update-
yum list kubernetesyum install -y --enablerepo=updates-testing kubernetes etcd
若你安装的k8s集群不稳定,去掉–enablerepo项 -
systemctl stop firewalldsystemctl disable firewalld
修改/etc/kubernetes/apiserver文件:去掉ACL中的ServiceAccount项 -
MSERVICES="etcd kube-apiserver kube-controller-manager kube-scheduler"systemctl restart $MSERVICESsystemctl enable $MSERVICESsystemctl is-active $MSERVICESsystemctl is-enabled $MSERVICES -
NSERVICES="kube-proxy kubelet docker"systemctl restart $NSERVICESsystemctl enable $NSERVICESsystemctl is-active $NSERVICESsystemctl is-enabled $NSERVICES -
kubectl cluster-infokubectl get nodekubectl describe node 127.0.0.1
3.为kubectl配置别名和命令行补全
docker内置了命令行补全功能,而k8s需要我们自己配置才可以使用命令行补全功能。
创建别名
你可以一直使用kubectl可执行文件的全名(可以使用type命令查看kubectl的可执行文件:type kubectl)
但是你可以利用linux中的别名特性,为kubectl添加一个较短的别名,如k,这样就不用每次都输入kubectl了。
编辑~/.bashrc文件,添加如下内容:alias k=kubectl
编辑完成后保存退出,在terminal中运行alias k命令,查看你添加的别名是否生效。注意:若你在编辑bashrc文件前已经打开了一个terminal,请在打开一个新的terminal运行上述命令才能看到生效的改动。
为kubectl配置tab补全
kubectl可以配置bash和zsh shell的代码补全。
tab不仅可以补全命令名,还能补全对象名。
首先运行:kubectl<Tab><Tab><Tab>
可以查看到kubectl的所有可用命令看到其中的
completion命令,该命令即为kebectl的命令行自动补全的脚本文件,也可以利用:kubectl completion bash | less查看该脚本文家的内容。
原本:docker内置了命令行补全功能,而k8s需要我们自己配置才可以使用命令行补全功能。 ,但是现在看来最新版的Fedora中已经内置了k8s的kubectl命令行tab补全功能,而当初在centos中是需要我们自己下载这个名为bashcompletion的包来启用bash中的tab命令行补全功能。
那么既然如此如果你使用的是centos且用的是配置国内k8s的yum源的方式,你可以使用如下方法来启用k8s的kubectl命令行tab补全功能:
-
首先安装bashcompletion包
yum updatesyum list bashcompletion
如果显示了相关的包,安装该包即可,如果没有显示,证明你的/etc/yum.repos.d中搜索不到该包,那么你就可以放弃下面的操作了,你需要运行:kubectl bashcompletion -h自己查看相关安装说明。
如果你的系统中不可以运行上述命令,那么你需要自己查看一下你到底能否安装,下面是官网的相关说明:
Detailed instructions on how to do this are available here: https://kubernetes.io/docs/tasks/tools/install-kubectl/#enabling-shell-autocompletion
搜索到该包的,进行包的安装:yum install -y bashcompletion -
然后运行:
source < (kubectl completion bash)
注意:若想让上述命令永久有效,需将上述命令添加到/etc/profile或是$HOME/.bash_profile或是$HOME/.bashrc文件中。
我将上述命令添加到了~/.bashrc文件中而不是/etc/profile文件中,因为这样当我重新开启一个终端时上述命令即可生效,而若是添加到了只有登录式shell才会扫描的/etc/profile文件中,你需要重启电脑才能使上述命令生效。
这里存在的一个问题是:tab命令自动补全只有在使用完整的kubectl命令时才有效,当时用别名时不会有效:这需要改变kubectl completion的输出来修复:
即最终在你的~/.bashrc文件中添加如下内容:source <(kubectl completion bash | sed s/kubectl/k/g) -
现在你可以打开一个新的终端运行下述命令以检查你的tab命令补全是否生效:
kubc<Tab> g<Tab> no<Tab>k g<Tab> no<Tab>
4.卸载k8s
yum list installed kubernetesyum erase kubernetes
Notesyum remove <packageName>:只删除软件包,而保留配置文件和数据。yum erase <packageName>:删除软件包和他所有的文件。
5.K3s – a lightweight Kubernetes
由于使用了fedora,我发现了他的一个更轻量级的k8s替代方案:k3s
k3s官方主页:https://fedoramagazine.org/kubernetes-on-fedora-iot-with-k3s/
安装
安装k3s仅需运行一个简单的脚本文件,该脚本文件会自动帮你完成k8s的相关安装部署。curl -sfL https://get.k3s.io | sh -kubectl get node
使用
当上述命令运行结束后,我们就拥有了一个k8s集群。
下面运行一些命令来检查该集群。
kubectl create deployment my-server --image nginx
kubectl get pods
发现pod的状态一直为正在创建状态,利用kubectl describe pod <podNAME>
查看pod创建的详细记录查看其Eevnts部分,该部分给出了pod未创建成功的原因:我们无法访问grc.io
进而还可运行
journalctl -f -u docker无法从google下载相关的镜像,看来我们需要配置国内相关的镜像服务。。。
6.清理工作
首先说一下我们的 创建步骤:
- service.yaml
- deployment.yaml
- 核实node以准配好:在master上创建service及deployment之前,需要先检查以下该node是否为ready状态。在大规模的生产集群中,k8s会帮你完成所有的这些检查。
kubectl get node -
kubectl create xxx-service.yamlkubectl create xxx-deployment.yaml - 检查service,deployment,pod是否准备好
kubectl get servicekubectl get deploykubectl get endpointskubectl get pod
删除步骤
- 首先删除depolymet
kubectl get deploykubectl delete <deploy-name>
Notes:注意不要删除pod,由于deployment创建了ReplicaSet,而ReplicaSet如同早期的ReplicationController一样,它们会控制pod的数量,使其一直保持在期望个数内,因此只有删除deployment或是RC才可以删除掉pod。 - 删除service
kubectl get svckubectl delete <svcc-name> - 检查是否删除
kubectl get podkubectl get deploykubectl get svc
至此我们已经完成了k3s的初步尝试,接下来我们可以删除k3s,重新装回原来的k8s进行后续在该平台上istio的安装使用