什么是service?
service是pod的一个逻辑分组,是pod服务的对外入口抽象。service同样也通过pod的标签来选择pod,与控制器一致。
k8s: 11 items found.
service是pod的一个逻辑分组,是pod服务的对外入口抽象。service同样也通过pod的标签来选择pod,与控制器一致。
k8s内pod由scheduler调度,scheduler的任务是把pod分配到合适的node节点上。scheduler调度时会考虑到node节点的资源使用情况、port使用情况、volume使用情况等等...在此基础之上,我们也可以控制pod的调度。
k8s中所有的内容都抽象成了资源,资源实例化后,称为对象。所有对象可以通过 get delete edit apply进行增删改查。通常分类以下三类资源
namespace为资源提供了集群内的逻辑隔离,需要注意的是,这只是逻辑隔离,不同namespace的pod有可能运行在同一个节点node上。
使用 nginx 的官方容器镜像。
镜像有了,我们如何将其提交给 K8S 运行呢,有两种方式:
这里使用官方推荐的第二种方式,即通过将容器的各种信息写入配置文件提交给 K8S。
k3s - 轻量级的 Kubernetes,易于安装,占用内存少,安装包小于100MB。
它非常适合于以下场景:
printf $(md5sum filename)
输出如
[root@localhost ~]# printf $(md5sum pull_k8s.sh)
4f402cff419c0da6c100c3c502e7f2d1[root@localhost ~]#
保存md5值到文件
printf $(md5sum pull_k8s.sh)>pull_k8s.sh.md5
in10环境,安装的VMware Workstation Pro,创建了一台Centos7.x的虚拟机。并启用虚拟化。
// v1.16.0版本可以从这里查 https://storage.googleapis.com/kubernetes-release/release/stable.txt
curl -LO https://storage.googleapis.com/kubernetes-release/release/v1.16.0/bin/linux/amd64/kubectl
chmod +x ./kubectl
sudo mv ./kubectl /usr/local/bin/kubectl
kubectl version
上述如果在墙内,需要http代理可以,先将代理设为环境变量 export http_proxy=http://ip:port
也可以从github上下载
https://github.com/kubernetes/kubernetes/blob/master/CHANGELOG.md#client-binaries-1
找到Current release如 https://github.com/kubernetes/kubernetes/blob/master/CHANGELOG-1.16.md
再找到Client Binaries如v1.16.0下的 https://github.com/kubernetes/kubernetes/blob/master/CHANGELOG-1.16.md#client-binaries
再找到合适的tar包如 https://dl.k8s.io/v1.16.0/kubernetes-client-linux-amd64.tar.gz
wget https://dl.k8s.io/v1.16.0/kubernetes-client-linux-amd64.tar.gz
tar -zxvf kubernetes-client-linux-amd64.tar.gz
cd kubernetes/client/bin
chmod +x ./kubectl
sudo mv ./kubectl /usr/local/bin/kubectl
kubectl version
虚拟机内使用minikube start --vm-driver=none装minikube时,报的这个
[preflight] You can also perform this action in beforehand using 'kubeadm config images pull'
error execution phase preflight: [preflight] Some fatal errors occurred:
[ERROR ImagePull]: failed to pull image k8s.gcr.io/kube-apiserver:v1.16.0: output: Trying to pull repository k8s.gcr.io/kube-apiserver ...
Get https://k8s.gcr.io/v1/_ping: dial tcp 64.233.189.82:443: connect: connection refused
, error: exit status 1
实际上就是这个域名k8s.gcr.io不通。
可以执行minikube start --vm-driver=none --image-mirror-country=cn;
来指定国内镜像源。
对于容器的配置文件, docker-compose的还好理解,但是一到k8s,就有很多对象, pods, nodes, services, deployment... 每个基本上都有个yml的定义,其中的参数一看一脸茫然。
还好找到这个:kubectl explain xxx
可以看它的定义
如kubectl explain service --recursive
可以查看service定义的所有定段。
如kubectl explain svc.metadata.uid
可以查看某个字段的定义
当然,k8s官方也有一些examples: https://github.com/kubernetes/examples
先安装macos桌面版的docker
brew install kubernetes-cli --verbose
安装virtualbox
brew cask install minikube
如果有墙内,可以安装阿里云的版本
curl -Lo minikube http://kubernetes.oss-cn-hangzhou.aliyuncs.com/minikube/releases/v1.1.1/minikube-darwin-amd64 && chmod +x minikube && sudo mv minikube /usr/local/bin/
启动minikube
minikube start --registry-mirror=https://registry.docker-cn.com
(可选)dashboard
minikube dashboard