原创 | k8s系列教程二:快速入门
作者:潘吉祥环境准备1.centOS-7(虚拟机或物理机均可)2. 关闭防火墙,更新源systemctldisablefirewalld#禁用防火墙systemctls...
作者:潘吉祥
环境准备
1. centOS-7(虚拟机或物理机均可)
2. 关闭防火墙,更新源
systemctl disable firewalld #禁用防火墙
systemctl stop firewalld #关闭防火墙
yum update #更新yum源
3.安装etcd和kubernetes
etcd作为kubernetes的信息保存中心,相当于我们熟知的zookeeper。
这里的快速演示相当于将一台机器同时作为master和worker。
关于etcd和master以及worker等会再后面的kubernetes架构中详细说明,这里先做演示。
yum install -y etcd kubernetes
*注意:kubernetes会连带安装docker,如果你的机器之前安装过docker,建议卸载,即使在安装时添加参数跳过依赖,还是会出现kubernetes相关服务无法启动(笔者已入坑)。
快速体验
1.依次次启动相关的服务
systemctl start etcd
systemctl start docker
systemctl start kube-apiserver
systemctl start kube-controller-manager
systemctl start kube-scheduler
systemctl start kubelet
systemctl start kube-proxy
为方便后续使用,这里给出简单的启动和关闭脚本:
vim k8sStart.sh
#!/bin/bash
systemctl start etcd
systemctl start docker
systemctl start kube-apiserver
systemctl start kube-controller-manager
systemctl start kube-scheduler
systemctl start kubelet
systemctl start kube-proxy
---
vim k8sStop.sh
#!/bin/bash
systemctl stop etcd
systemctl stop docker
systemctl stop kube-apiserver
systemctl stop kube-controller-manager
systemctl stop kube-scheduler
systemctl stop kubelet
systemctl stop kube-proxy
同样,关于这些服务的详细作用我们后面在kubernetes架构中会讲到。
2.查看状态
systemctl status xxx #查看某个服务的状态,比如:
3.编写pod和service配置文件,并创建pod和service。
官方不建议直接创建pod,我们通过RC(ReplicationController)来管理创建。
我们在 /usr/local/k8s下创建文件:
vim tomcat_rc.yaml
apiVersion: v1 #版本
kind: ReplicationController #类型RC
metadata: #元数据
name: tomcat #RC名字
spec: #rc配置规则
replicas: 2 #容器副本数
selector: #配合labels使用
app: tomcat #选择标签为tomcat的pod
template: #pod模板
metadata: #元数据
labels:
app: tomcat #标签
spec: #pod详细定义
containers: #容器
- name: tomcat #容器名称
image: tomcat: 8.0.18-jre8 #镜像名
ports:
- containerPort: 8080 #容器端口
kubectl create -f tomcat_rc.yaml #通过RC创建pod
vimtomcat_svc.yaml
apiVersion: v1 #版本号
kind: Service #类型:service
metadata: #元数据
name: tomcat #service名称
spec:
type: NodePort #访问模式
ports:
- port: 8080 #映射的容器端口
nodePort: 30000 #对外访问的端口
selector: #通过标签选择pod容器
app: tomcat
kubectl create -ftomcat_svc.yaml #创建service,用于访问。
[root@localhost k8s]# kubectl create -f tomcat-rc.yaml
replicationcontroller "tomcat" created
[root@localhost k8s]# kubectl create -f tomcat-svc.yaml
service "tomcat" created
4.查看pod和service
kubectl get pods
[root@localhost k8s]# kubectl get pods
NAME READY STATUS RESTARTS AGE
tomcat-cxd5b 1/1 Running 0 1m
tomcat-tc6hx 1/1 Running 0 1m
kubectl get svc
[root@localhost k8s]# kubectl get svc
NAME CLUSTER-IP EXTERNAL-IP PORT(S) AGE
kubernetes 10.254.0.1 <none> 443/TCP 1d
tomcat 10.254.5.255 <nodes> 8080:30000/TCP 17m
注意
1. 在get pod的时候这里第一次是会出现No resources found,我们需要对kubectl的配置文件做一些修改:vim /etc/kubernetes/apiserver
找到KUBE_ADMISSION_CONTROL键值对,删除值中的“ServiceAccount”,保存退出即可。
2. 绝大多数情况会出现一直创建的现象:
[root@localhost k8s]# kubectl get pods
NAME READY STATUS RESTARTS AGE
tomcat-cxd5b 0/1 ContainerCreating 0 39s
tomcat-tc6hx 0/1 ContainerCreating 0 39s
这是在pull 镜像时候的安全验证出现了问题,你需要做以下的步骤:
a.yum install *rhsm* -y
b.
docker pull registry.access.redhat.com/rhel7/pod-infrastructure:latest
如果以上两步能够成功,则无需以下的步骤(笔者经验来看一般是不行的/捂脸)
c.搭建自己的私有仓库,并启动(我的私有仓库:192.168.1.20:5000)
d.
docker pull docker.io/tianyebj/pod-infrastructure
e.
docker tag tianyebj/pod-infrastructure 192.168.1.20:5000/pod-infrastructure
f.
docker push 192.168.1.20:5000/pod-infrastructure
g.vi /etc/kubernetes/kubelet
# pod infrastructure container 将原来infrastructure container的拉取地址换为从自己的私有仓库拉取
KUBELET_POD_INFRA_CONTAINER="--pod-infra-container-image=192.168.1.20:5000/pod-infrastructure:latest"
之后重启所有的服务即可,稍等容器镜像(Tomcat)下载完毕,就可以看到是running状态,原理就是使用docker将镜像下载到本地,然后kubernetes访问本地仓库即可。
3 到此为止,我们可以试着访问我们的Tomcat容器:http://192.168.1.20:30000/,其实还是访问不成功,在搭建好的k8s集群内创建的容器,只能在其所在的节点上curl可访问,但是在其他任何主机上无法访问容器占用的端口。我们需要设置iptables,iptables -P FORWARD ACCEPT
至此,我们就可以通过kubernetes访问我们的Tomcat容器啦!你也赶紧试试吧!
有了直观的体验,在接下来将会较为详细地介绍kubernetes相关知识点,关注不迷路!
肉哥微信好友坑位限时开放啦!
福利来啦!扫码直接加肉哥微信,送你份学习资料和面试手册,一起来围观最新技术动态和职场经验,遇到困惑也可与我交流(情感除外)。一定要备注:开发方向+地点,如:Java+北京。
▲长按加肉哥微信,赶紧上车
【推荐阅读】
更多推荐
所有评论(0)