Kubernetes简单介绍
Kubernetes意为舵手,简称K8s。
前身是Google的Borg。所以一开源就吸引了一大批注意力。
因为谷歌,所以墙。在国内搭建K8s非常头疼。
下面我就来介绍一下,怎么绕过墙来部署k8s。
环境准备
节点 | 操作系统 | IP |
---|---|---|
master | CentOS7 | 192.168.191.138 |
worker1 | CentOS7 | 192.168.191.139 |
worker2 | CentOS7 | 192.168.191.140 |
小贴士:
根据实际环境灵活变动ip和节点数量
初始化环境
1 | #关闭防火墙和SElinux |
1 | #永久关闭交换分区 |
1 | #分别修改主机名 |
1 | #设置主机名映射 |
安装Docker
所有节点都要安装
1 | # step 1: 安装必要的一些系统工具: |
小贴士:
加速器地址可以在阿里云上容器镜像服务中的镜像加速器获得。
安装kubelet、kubeadm、kubectl
所有节点都要安装
1
2
3
4
5
6
7
8 #设置kubernetes软件源
cat>>/etc/yum.repos.d/kubrenetes.repo<<EOF
[kubernetes]
name=Kubernetes Repo
baseurl=https://mirrors.aliyun.com/kubernetes/yum/repos/kubernetes-el7-x86_64/
gpgcheck=0
gpgkey=https://mirrors.aliyun.com/kubernetes/yum/doc/yum-key.gpg
EOF
1 | yum install -y kubelet kubeadm kubectl |
安装基础镜像
所有节点都下载吧~
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26 docker pull mirrorgooglecontainers/kube-apiserver:v1.14.1
docker pull mirrorgooglecontainers/kube-controller-manager:v1.14.1
docker pull mirrorgooglecontainers/kube-scheduler:v1.14.1
docker pull mirrorgooglecontainers/kube-proxy:v1.14.1
docker pull mirrorgooglecontainers/pause:3.1
docker pull mirrorgooglecontainers/etcd:3.3.10
docker pull coredns/coredns:1.3.1
docker pull docker.io/dockerofwj/flannel
docker tag mirrorgooglecontainers/kube-apiserver:v1.14.1 k8s.gcr.io/kube-apiserver:v1.14.1
docker tag mirrorgooglecontainers/kube-controller-manager:v1.14.1 k8s.gcr.io/kube-controller-manager:v1.14.1
docker tag mirrorgooglecontainers/kube-scheduler:v1.14.1 k8s.gcr.io/kube-scheduler:v1.14.1
docker tag mirrorgooglecontainers/kube-proxy:v1.14.1 k8s.gcr.io/kube-proxy:v1.14.1
docker tag mirrorgooglecontainers/pause:3.1 k8s.gcr.io/pause:3.1
docker tag mirrorgooglecontainers/etcd:3.3.10 k8s.gcr.io/etcd:3.3.10
docker tag coredns/coredns:1.3.1 k8s.gcr.io/coredns:1.3.1
docker tag docker.io/dockerofwj/flannel quay.io/coreos/flannel:v0.10.0-amd64
docker image rm mirrorgooglecontainers/kube-apiserver:v1.14.1
docker image rm mirrorgooglecontainers/kube-controller-manager:v1.14.1
docker image rm mirrorgooglecontainers/kube-scheduler:v1.14.1
docker image rm mirrorgooglecontainers/kube-proxy:v1.14.1
docker image rm mirrorgooglecontainers/pause:3.1
docker image rm mirrorgooglecontainers/etcd:3.3.10
docker image rm coredns/coredns:1.3.1
docker image rm docker.io/dockerofwj/flannel
K8s初始化
在Master上执行。
如果报以下错误:[ERROR ImagePull]: failed to pull image k8s.gcr.io/pause:3.1: output: Error response from daemon: Get https://k8s.gcr.io/v2/: net/http: request canceled while waiting for connection (Client.Timeout exceeded while awaiting headers)
, error: exit status 1
原因:需要3.1版本的pause镜像,而k8s.gcr.io被墙,无法下载。
解决方法:根据上一个步骤,下载相应版本后后重新打tag即可。
1
2
3 #这里根据K8s版本初始化,并将api声明ip修改为master-ip
kubeadm init --kubernetes-version=v1.14.1 --apiserver-advertise-address 192.168.191.138 --pod-network-cidr=10.10.0.0/16
#保存输出信息中的加入集群命令,后面会用到
1 | #设置环境变量 |
1 | #配置 kubectl并验证 |
1 | #设置系统参数 |
Master安装Pod网络
Pod网络用于Pod之间进行通信。这里我们选用flannel网络方案。
1 | vim kube-flannel.yaml |
1 | kubectl apply -f kube-flannel.yaml |
节点加入集群
1 | #下面的命令在K8s初始化时由master给出 |
下载Dashboard
小贴士:
可以在https://github.com/kubernetes/dashboard/releases上查看最新版本
1
2 #所有节点下载
docker pull docker.io/mirrorgooglecontainers/kubernetes-dashboard-amd64:v1.10.1
安装Dashboard
#这里master上运行
建议使用notepad++保存后上传。
1 | vim kubernetes-dashboard.yaml |
1 | kubectl create -f kubernetes-dashboard.yaml |
生成私钥和证书签名
1 | #所有节点创建目录 |
1 | #master上生成 |
配置dashboard-user-role.yaml
1 | #master执行 |
1 | kubectl create -f dashboard-user-role.yaml |
设置K8s自启
1 | #所有节点运行 |
查看集群情况
1 | kubectl get pods --all-namespaces -o wide #等待Pod均为Running即成功 |
Web访问
- 使用火狐浏览器,其他浏览器不能保证能访问成功。
- https://192.168.191.138:31234
- 使用Token登陆