kubernetes,简称K8s,是用8代替8个字符“ubernete”而成的缩写。是一个开源的,用于管理云平台中多个主机上的容器化的应用,Kubernetes的目标是让部署容器化的应用简单而且高效(powerful),Kubernetes提供了应用部署,规划,更新,维护的一种机制node
kubernetes里的master指的是集群控制节点,在每一个kubernetes集群里都须要有一个master来负责真个集群的管理和控制,在master上运行着如下关键进程:linux
除了master,kubernetes集群中其余机器被称之为 Node,node能够是一台物理机,也能够是一台虚拟机,node是kubernetes集群中的工做负载节点,每一个node都会被master分配一些工做负载(docker容器),当某个node宕机时,其余节点会接管故障节点的资源,node节点当中的重要进程:git
pod是kubernetes最重要的基本概念,是kubernetes调度的最小单元,每一个container都有一个pause容器,称之为根容器,属于kubernetes平台的一部分,一个pod能够运行多个容器(container),可是通常来讲咱们一个pod只运行一个container,以下图:github
简单了解k8s的资源对象以后我们就先来搭建一个k8s集群,由于咱们的后续操做都是创建在k8s集群当中的,所以,咱们就须要先搭建一个k8s集群,这样也便于你们的理解docker
环境准备vim
三台机器:centos
echo 1 > /proc/sys/net/bridge/bridge-nf-call-iptables note:若是提示没有bridge-nf-call-iptables 解决办法: [root@localhost ~]# modprobe br_netfilter
#安装kubernetes的yum源
vim /etc/yum.repos.d/kubernetes.repo [kubernetes] name = kubernetes baseurl = https://mirrors.aliyun.com/kubernetes/yum/repos/kubernetes-el7-x86_64/ enabled = 1 gpgcheck = 1 gpgkey = https://mirrors.aliyun.com/kubernetes/yum/doc/rpm-package-key.gpg #安装docker的yum源 cd /etc/yum.repos.d/ wget https://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo yum install kubelet kubeadm kubectl docker-ce -y
[root@localhost ~]# vim /etc/sysconfig/kubelet KUBELET_EXTRA_ARGS="--fail-swap-on=false" [root@localhost ~]# service docker restart
[root@localhost ~]# kubeadm init --kubernetes-version=v1.15.2 --service-cidr=10.96.0.0/12 --pod-network-cidr=10.244.0.0/16 --ignore-preflight-errors=Swap --ignore-preflight-errors=NumCPU --image-repository registry.aliyuncs.com/google_containers 解释: --apiserver-advertise-address:指定用 Master 的哪一个IP地址与 Cluster的其余节点通讯。 --service-cidr:指定Service网络的范围,即负载均衡VIP使用的IP地址段。 --pod-network-cidr:指定Pod网络的范围,即Pod的IP地址段。 --image-repository:Kubenetes默认Registries地址是 k8s.gcr.io,在国内并不能访问 gcr.io,在1.13版本中咱们能够增长-image-repository参数,默认值是 k8s.gcr.io,将其指定为阿里云镜像地址:registry.aliyuncs.com/google_containers。 --kubernetes-version=v1.13.3:指定要安装的版本号。 --ignore-preflight-errors=:忽略运行时的错误,例如上面目前存在[ERROR NumCPU]和[ERROR Swap],忽略这两个报错就是增长--ignore-preflight-errors=NumCPU 和--ignore-preflight-errors=Swap的配置便可。
kubeadm join 192.168.254.13:6443 --token 71ovlq.w7pf14czrwi7f1ag --discovery-token-ca-cert-hash sha256:d2a9a1aa23fdbcd42711a222c959026073cf0a70f37a87806233d8319c66feb4
[root@localhost ~]# mkdir -p $HOME/.kube [root@localhost ~]# cp -i /etc/kubernetes/admin.conf $HOME/.kube/config [root@localhost ~]# chown $(id -u):$(id -g) $HOME/.kube/config
这里的NotReady是由于我们尚未部署网络api
[root@localhost ~]# kubectl get node NAME STATUS ROLES AGE VERSION localhost.localdomain NotReady master 8h v1.15.2
[root@localhost ~]# kubectl get cs NAME STATUS MESSAGE ERROR controller-manager Healthy ok scheduler Healthy ok etcd-0 Healthy {"health":"true"}
kubectl apply -f https://raw.githubusercontent.com/coreos/flannel/master/Documentation/kube-flannel.yml 若下载失败能够从阿里云上pull [root@master1 ~]# docker pull registry.cn-hangzhou.aliyuncs.com/rsq_kubeadm/flannel:v0.11.0-amd64 [root@master1 ~]# docker tag registry.cn-hangzhou.aliyuncs.com/rsq_kubeadm/flannel:v0.11.0-amd64 quay.io/coreos/flannel:v0.11.0-amd64 [root@master1 ~]# docker rmi registry.cn-hangzhou.aliyuncs.com/rsq_kubeadm/flannel:v0.11.0-amd64
对于2个node节点的配置跟master节点的1,2,3步同样,这里就不在写了,直接跳到第四步网络
[root@localhost ~]#kubeadm join 192.168.254.13:6443 --token wug9gq.m9j7hhmvvy9ag8kk --discovery-token-ca-cert-hash sha256:6f8a056391bf04c3911465c581e78376e1d35eb309641105ddd69ce5eb47c591 --ignore-preflight-errors=Swap
[root@master ~]# kubectl get nodes NAME STATUS ROLES AGE VERSION master Ready master 10h v1.15.3 node1 Ready <none> 10h v1.15.3 node2 Ready <none> 10h v1.15.3
1.若是发现以上错误说明master节点token失效,须要在master上从新生成 [root@localhost ~]# kubeadm token create --print-join-command 3.若是node机器曾经加入过集群,要从新加入须要kubeadm reset重置,而后在join [root@localhost ~]# kubeadm reset 4.若是忘掉token [root@master ~]# kubeadm token list
5.若是忘掉hash串 [root@master]openssl x509 -pubkey -in /etc/kubernetes/pki/ca.crt | openssl rsa -pubin -outform der 2>/dev/null | openssl dgst -sha256 -hex | sed 's/^.* //'