安装K8S与问题解决

安装K8s

在CentOS7的环境中安装k8s还是比较容易的。目前,CentOS仓库中的Kubernetes是1.5.2,能够支持的Docker的版本为1.12。所以,在安装的时候,需要确认CentOS中是否已经安装了Docker。如果已经安装了Docker并且Docker的版本大于1.12,那么安装Kubernetes可能会失败。

1
rpm -qa | grep docker

如果已经安装了比较新的Docker,例如17.09,就需要先删除。

安装K8s

1
yum install etcd kubernetes

按照以下顺序启动服务,就可以得到一个节点的K8s环境了。

1
2
3
4
5
6
7
ssystemctl restart etcd
systemctl restart docker
systemctl restart kube-apiserver
systemctl restart kube-controller-manager
systemctl restart kube-scheduler
systemctl restart kubelet
systemctl restart kube-proxy

遇到的issues

issue 1 : 无法创建pod

创建一个MySQL服务的RC配置文件mysql-rc.yaml,来测试K8S是否正常

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
apiVersion: v1
kind: ReplicationController
metadata:
name: mysql
spec:
replicas: 1
selector:
app: mysql
template:
metadata:
labels:
app: mysql
spec:
containers:
- name: mysql
image: mysql
ports:
- containerPort: 3306
env:
- name: MYSQL_ROOT_PASSWORD
value: "123456"

发布到K8S集群,执行:

1
kubectl create -f mysql-rc.yaml

查看刚刚创建的RC:

1
kubectl get rc

1
2
NAME DESIRED CURRENT AGE
mysql 1 1 1m

查看pod

1
kubectl get pods

pod-no-exist
发现并没有创建mysql对应的pod, 这里的主要问题就是没有认证,解决方法在这里 解决认证问题

issue 2 : 创建pod status pending

K8S 创建容器后,查看pod状态,一直是 ContainerCreating,主要原因运行POD所需要的镜像由于网路原因无法获取. 发现是无法获取registry.access.redhat.com/rhel7/pod-infrastructure:latest 这个镜像。
去到测试服务器上,将该镜像tag为私有仓库的镜像,推送到私有仓库。从私有仓库拉下来,重新tag回 registry.access.redhat.com/rhel7/pod-infrastructure:latest
can-not-get-images
网路上还有另外一种说法是无法获取 gcr.io/pause:2.0 镜像,但是解决的思路是一样的。