之前我们学习了很多的概念及简单的使用官网提供的页面玩了玩k8S的基本内容,那本章我们来在自己的服务器环境中,实践安装搭建一个kubernetes环境。
由于时间问题,继续盗图,懒得自己画
1.安装前准备
关闭防火墙、设置selinux,千篇一律的设置,没劲,这里不做详细介绍。
2.安装etcd和K8S
yum install -y etcd kubernetes
3.修改配置文件
3.1docker配置文件
vi /etc/sysconfig/docker
修改如下内容:
OPTIONS='--selinux-enabled=false --log-driver=journald --signature-verification=false --insecure-registry gcr.io'
3.2 K8S apiserver配置文件
删除ServiceAccount参数。
vim /etc/kubernetes/apiserver
4.启动所有服务
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
5.单机版环境安装完毕,构建一个应用到Kubernetes中
5.1我们来创建一个RC定义的yaml文件mysql-rc.yaml
vim 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: "skyfans"
5.2 将ta发布到Kubernetes中。
kubectl create -f mysql-rc.yaml
5.2.1 查看创建的RC的情况
kubectl get rc
5.2.2 查看pod创建情况
kubectl get pods
什么情况??没有资源内容??我们明明创建了但是为什么没有呢??
仔细分析下:
通过截图我们可以看到,CURRENT数量为0.
扩展姿势:参数解释
DESIRED: 期望部署副本数
CURRENT: 当前部署副本数
UP-TO-DATE:最新部署副本数(图中无显示)
AVAILBLE: 运行中的副本数(图中无显示)
AGE: 已经运行的时间
就是说我们期望的是1,但是当前部署的副本数为0。为什么呢??
查询了下,发现了是个K8S的坑,我们安装完毕后,缺失了部分配置导致。
5.3 遇到坑1解决方法
5.3.1 执行如下命令
openssl genrsa -out /tmp/serviceaccount.key 2048
5.3.2 编辑apiserver配置文件
vim /etc/kubernetes/apiserver
找到编辑
KUBE_API_ARGS="--service_account_key_file=/tmp/serviceaccount.key"
5.3.3 编辑controller-manager配置文件:
vim /etc/kubernetes/controller-manager
找到编辑
KUBE_CONTROLLER_MANAGER_ARGS="--service_account_private_key_file=/tmp/serviceaccount.key"
5.3.4 重启服务
systemctl restart kube-apiserver
systemctl restart kube-controller-manager
5.3.5 删除原来的创建的RC
kubectl delete -f mysql-rc.yaml
5.3.6 重新创建
kubectl create -f mysql-rc.yaml
5.3.7 验证
kubectl get rc
哦了,已调整好了。
5.4遇到的坑2
好,我们在来看下pod的状态
kubectl get pods
状态是在创建,等待了几分钟后在查看
依然在创建,怎么可能??查看为啥呢?
kubectl describe pod mysql-714lt
看到registry.access.redhat.com/rhel7/pod-infrastructure:latest感觉很奇怪,我设置的仓库是gcr.io,为什么去拉取这个镜像,怀疑是不是什么没有安装好。尝试运行docker pull registry.access.redhat.com/rhel7/pod-infrastructure:latest,提示redhat-ca.crt: no such file or directory。
ls查看改文件是个软连接,链接目标是/etc/rhsm
查看没有rhsm相关内容。
尝试安装rhsm
yum install *rhsm*
再次查看状态,已经OK了。
kubectl describe pod mysql-714lt
好本章我们就讲到这里。