1.关闭防火墙
2.安装etcd和kubernetes
其中etcd是作为数据库的角色,以键值的方式存储数据
yum -y install etcd kubernetes
3.安装好后,修改配置文件
a. vi /etc/sysconfig/docker
其中OPTIONS设置为如下:
OPTIONS='--selinux-enabled=false --insecure-registry gcr.io'
b. vi /etc/kubernetes/apiserver
KUBE_ADMISSION_CONTROL参数删除ServiceAccount
4.启动
脚本形式 vi restart.sh
#!/bin/bash
ser=("etcd" "docker" "kube-apiserver" "kube-controller-manager" "kube-scheduler" "kubelet" "kube-proxy")
for i in ${ser[@]};do
systemctl restart $i
systemctl enable $i
systemctl status $i
done
5.启动mysql服务
a.创建mysql-rc.yaml文件,编写要注意空格等格式
如果报错如下,就是语法有问题
[root@my210 ~]# kubectl create -f mysql-rc.yaml
error: error validating "mysql-rc.yaml": error validating data: found invalid field spec for v1.ReplicationControllerSpec; if you choose to ignore these errors, turn validation off with --validate=false
[root@my210 ~]# vi mysql-rc.yaml
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"
b.
创建好后,执行如下命令:
[root@my210 ~]# kubectl create -f mysql-rc.yaml
replicationcontroller "mysql" created
成功!
c.查看
[root@my210 ~]# kubectl get rc
NAME DESIRED CURRENT READY AGE
mysql 1 1 0 2m
[root@my210 ~]# kubectl get pods
NAME READY STATUS RESTARTS AGE
mysql-4s06p 0/1 ContainerCreating 0 3m
我们发现出现ContainerCreating 正常应该是running
[root@mytest yum.repos.d]# kubectl describe pod redis-master-wzqsn
发现如下报错:
Events:
FirstSeen LastSeen Count From SubObjectPath Type Reason Message
--------- -------- ----- ---- ------------- -------- ------ -------
5m 5m 1 {default-scheduler } Normal Scheduled Successfully assigned redis-master-wzqsn to centos-minion
5m 2m 5 {kubelet centos-minion} Warning FailedSync Error syncing pod, skipping: failed to "StartContainer" for "POD" with ErrImagePull: "image pull failed for registry.access.redhat.com/rhel7/pod-infrastructure:latest, this may be because there are no credentials on this request. details: (open /etc/docker/certs.d/registry.access.redhat.com/redhat-ca.crt: no such file or directory)"
4m 10s 19 {kubelet centos-minion} Warning FailedSync Error syncing pod, skipping: failed to "StartContainer" for "POD" with ImagePullBackOff: "Back-off pulling image \"registry.access.redhat.com/rhel7/pod-infrastructure:latest\""
查看/etc/docker/certs.d/registry.access.redhat.com/
redhat-ca.crt是个软连接,并且一直闪烁,表示并没有这个文件redhat-uep.pem
[root@mytest ~]# cd /etc/docker/certs.d/registry.access.redhat.com/
[root@mytest registry.access.redhat.com]# ll总用量 0
lrwxrwxrwx 1 root root 27 5月 19 14:20 redhat-ca.crt -> /etc/rhsm/ca/redhat-uep.pem
第一步:
第一个报错解决方法 yum install *rhsm* -y
第二个报错执行docker pull registry.access.redhat.com/rhel7/pod-infrastructure:latest
还是不行,
因为发现
软件包 python-rhsm-certificates-1.19.10-1.el7_4.x86_64 被已安装的 subscription-manager-rhsm-certificates-1.20.11-1.el7.centos.x86_64 取代
第二步:
卸载subscription-manager-rhsm-certificates
yum remove subscription-manager-rhsm-certificates -y
第三步:
手动下载rpm并且安装
[root@mytest ~]# wget http://mirror.centos.org/centos/7/os/x86_64/Packages/python-rhsm-certificates-1.19.10-1.el7_4.x86_64.rpm
[root@mytest ~]# rpm -ivh python-rhsm-certificates-1.19.10-1.el7_4.x86_64.rpm
准备中... ################################# [100%]
正在升级/安装...
1:python-rhsm-certificates-1.19.10-################################# [100%]
再次查看就有了/etc/rhsm/ca/redhat-uep.pem
第三步:
[root@mytest ~]# docker pull registry.access.redhat.com/rhel7/pod-infrastructure:latest
Trying to pull repository registry.access.redhat.com/rhel7/pod-infrastructure ...
latest: Pulling from registry.access.redhat.com/rhel7/pod-infrastructure
26e5ed6899db: Pull complete
66dbe984a319: Pull complete
9138e7863e08: Pull complete
Digest: sha256:92d43c37297da3ab187fc2b9e9ebfb243c1110d446c783ae1b989088495db931
Status: Downloaded newer image for registry.access.redhat.com/rhel7/pod-infrastructure:latest
[root@mytest ~]#
6.再次执行kubectl create -f redis-master-controller.yaml
发现
[root@mytest yamlScript]# kubectl get pods
NAME READY STATUS RESTARTS AGE
redis-master-6xj9k 0/1 ContainerCreating 0 6s
[root@mytest yamlScript]# kubectl describe pod redis-master-6xj9k
Name: redis-master-6xj9k
Namespace: default
Node: 127.0.0.1/127.0.0.1
Start Time: Thu, 14 Jun 2018 10:30:58 +0800
Labels: name=redis-master
Status: Pending
IP:
Controllers: ReplicationController/redis-master
Containers:
master:
Container ID:
Image: kubeguide/redis-master
Image ID:
Port: 6379/TCP
State: Waiting
Reason: ContainerCreating
Ready: False
Restart Count: 0
Volume Mounts: <none>
Environment Variables: <none>
Conditions:
Type Status
Initialized True
Ready False
PodScheduled True
No volumes.
QoS Class: BestEffort
Tolerations: <none>
Events:
FirstSeen LastSeen Count From SubObjectPath Type Reason Message
--------- -------- ----- ---- ------------- -------- ------ -------
2m 2m 1 {default-scheduler } Normal Scheduled Successfully assigned redis-master-6xj9k to 127.0.0.1
2m 2m 1 {kubelet 127.0.0.1} Warning MissingClusterDNS kubelet does not have ClusterDNS IP configured and cannot create Pod using "ClusterFirst" policy. Falling back to DNSDefault policy.
2m 2m 1 {kubelet 127.0.0.1} spec.containers{master} Normal Pulling pulling image "kubeguide/redis-master"
[root@mytest yamlScript]#
还在pulling中,等一会,就好了
[root@mytest yamlScript]# kubectl get pods
NAME READY STATUS RESTARTS AGE
redis-master-6xj9k 1/1 Running 0 52m