云计算概念:
虚拟化概念:
联系:虚拟化技术是云计算中的一个模块,而且是不可或缺的模块。云计算提供的是大量各种资源池,虚拟化技术便是合理分配这些资源池的资源给虚拟机。然后再把虚拟机按照不同的配置以不同的价格出售给各个中小企业租户进行租用。
(1)以服务类型分类
更形象的说明请见博客: https://blog.csdn.net/weixin_44571270/article/details/89737883
(2)以服务对象分类
1、Kubernetes是干什么的?
Kubernetes又称k8s,因其中间有8个字母而命名。它是一个自动化容器管理平台。天生就是为管理docker容器而诞生的。使用Kubernetes可以实现如下功能:
2、Kubernetes平台组件
Kubernetes集群中主要存在两种类型的节点:master、minion节点,Minion节点为运行 Docker容器的节点,负责和节点上运行的 Docker 进行交互,并且提供了代理功能。master主要是管理大量的分布式的minion节点。
一般企业中,会有多个master节点,一般会做高可用,然后会有etcd分布式集群。但在我们学习技术时,便不需要这么复杂。最简单的架构体系,至少也需要两台或三台物理服务器。
我这里采用了两台物理机。201为k8s master节点,200当minion节点,etcd做一台即可。在master节点上共用一台物理服务器。
#两个服务器都要执行以下命令:
setenforce 0
或者 sed -i '/SELINUX/s/enforcing/disabled/g' /etc/selinux/config
systemctl stop firewalld
#ntp时间同步,master节点和million节点需要时间一致
yum install ntp -y
ntpdate pool.ntp.org
systemctl start ntpd
yum install kubernetes-master etcd -y
vim /etc/etcd/etcd.conf
注:2380端口是etcd服务器和etcd服务器之间通信的端口,又称分布式集群通信端口。
2379端口是提供HTTP AP服务,即通过该端口给client提供服务,这里是给master和minion节点提供服务的端口。
27.0.0.1:2379是为了本地执行etcd命令连接,172.16.193.201:2379是为了远程连接。
mkdir -pv /data/etcd
chown -R etcd.etcd /data/etcd
cd /etc/kubernetes/
ll
yum install kubernetes-node docker *rhsm* -y
k8s minion节点安装完产生两个服务:
编辑k8s minion配置文件:
vim config
查看:
删除minion节点:
增添minion节点:
只能重启k8s minion节点上的两个服务。
注:这个服务是为了给docker容器统一分配ip。
#这个flannel所有节点都要安装,无论master还是minion。
yum install flannel -y
vim /etc/sysconfig/flanneld
etcdctl mk /atomic.io/network/config '{"network":"172.17.0.0/16"}'
# 这个是key 这个是value
systemctl start flanneld
touch Dashboard-controller.yaml
将下面内容写入文件:
apiVersion: extensions/v1beta1
kind: Deployment
metadata:
name: kubernetes-dashboard
namespace: kube-system
labels:
k8s-app: kubernetes-dashboard
kubernetes.io/cluster-service: "true"
spec:
selector:
matchLabels:
k8s-app: kubernetes-dashboard
template:
metadata:
labels:
k8s-app: kubernetes-dashboard
annotations:
scheduler.alpha.kubernetes.io/critical-pod: ''
scheduler.alpha.kubernetes.io/tolerations: '[{"key":"CriticalAddonsOnly", "operator":"Exists"}]'
spec:
containers:
- name: kubernetes-dashboard
image: bestwu/kubernetes-dashboard-amd64:v1.6.3
resources:
limits:
cpu: 100m
memory: 50Mi
requests:
cpu: 100m
memory: 50Mi
ports:
- containerPort: 9090
args:
- --apiserver-host=http://172.16.193.201:8080 #此处需要修改ip
livenessProbe:
httpGet:
path: /
port: 9090
initialDelaySeconds: 30
timeoutSeconds: 30
touch Dashboard-service.yaml
将下面内容写入文件:
apiVersion: v1
kind: Service
metadata:
name: kubernetes-dashboard
namespace: kube-system
labels:
k8s-app: kubernetes-dashboard
kubernetes.io/cluster-service: "true"
spec:
selector:
k8s-app: kubernetes-dashboard
ports:
- port: 80
targetPort: 9090
注:如果不去掉其中的ServiceAccount参数,api会拒绝访问UI界面。
#KUBE_ADMISSION_CONTROL="--admission-control=NamespaceLifecycle,NamespaceExists,LimitRanger,SecurityContextDeny,ServiceAccount,ResourceQuota"
KUBE_ADMISSION_CONTROL="--admission-control=NamespaceLifecycle,NamespaceExists,LimitRanger,SecurityContextDeny,ResourceQuota"
如果你是最后才发现做这一步的话。你需要修改后,重启apiserver,然后执行:
kubectl delete -f Dashboard-controller.yaml
kubectl delete -f Dashboard-service.yaml
注:这一步可不要,在下一步会自己下载镜像。了解下为啥改名就行了,k8s版本和dashboard版本不能相差太大,所以不建议自己docker pull镜像!
下载pod-infrastructure、kubernetes-dashboard镜像:
docker pull docker.io/tianyebj/pod-infrastructure
docker pull docker.io/mirrorgooglecontainers/kubernetes-dashboard-amd64
#这个改名是因为Dashboard-controller.yaml文件中调用过这个镜像
docker tag docker.io/siriuszg/kubernetes-dashboard-amd64 bestwu/kubernetes-dashboard-amd64:v1.6.3
#这个改名是因为minion节点中的/etc/kubernetes/kubelet文件中调用过它
docker tag docker.io/tianyebj/pod-infrastructure registry.access.redhat.com/rhel7/pod-infrastructure
kubectl create -f Dashboard-controller.yaml
kubectl create -f Dashboard-service.yaml
iptables -P FORWARD ACCEPT (全部节点都要配置)
报错:error: yaml: line 38: did not find expected key
这个错误害得我整了很久很久。
解决方法这两个文件中有空格没有打对。格式不对。重新复制以下。.json格式的文件严格要求格式,空格不能多一个,也不能少一个。
查看是否成功生成dashboard界面:
kubectl get pods -namespace kube-system
kubectl logs kubernetes-dashboard-3584070908-vp0gl -n kube-system