Kubernetes 基于 ubuntu18.04 手工部署 (k8s)

由于工作的需要, 手工部署一个 Kubernetes 环境(k8s)。(以前都是云上搞定,拿来用)

习惯把这种工作记录下来,自己备查也和别人分享

网上相关文章很多, 我也参考了很多,这里推荐一个 链接
https://www.kubernetes.org.cn/5462.html

可以基于这个链接做, 碰到问题了,再去查其它文章。 当然也可以基于我的文章。

------------------------------------------------------------------------------------------------------------------------------------------------------------------



1. 首先准备两台机器 ubt 18.04 安装好 docker 

机器名 IP 作用说明  
kube-master 192.168.0.200 k8 管理节点  
node1 192.168.0.201 k8 工作节点  

怎么修改机器名,自己网上查去
hosts 文件为:

192.168.0.200 kube-master
192.168.0.201 node1

2.  两个难点之一 , 安装 kubelet kubeadm kubectl

因为访问国外网络慢,所以需要修改 apt-get 的访问源 

/etc/apt/sources.list 添加deb 行 

deb https://mirrors.aliyun.com/kubernetes/apt kubernetes-xenial main

执行
apt-get update

执行
apt-get install -y kubelet kubeadm kubectl

需要 sudo 自己加
可能在 apt-get update 时会碰到  no pubkey ...
执行下面命令解决
curl https://mirrors.aliyun.com/kubernetes/apt/doc/apt-key.gpg | sudo apt-key add - 

 
kubelet kubeadm kubectl  安装好了,工作完成了 1/3. kubelet 是k8相关服务,kubectl 是k8s 管理客户端,kubeadm 是部署工具 

3. 部署主(管理)节点

    本来是执行

kubeadm init --kubernetes-version=v1.15.0 --pod-network-cidr=10.10.0.0/16 --apiserver-advertise-address=192.168.0.200

一步完成, 但是由于国内的网络环境,众所周知的原因,不得不绕弯。

在执行 init 的时候 会向  k8s.gcr.io    获取  kube-apiserver:v1.15.0  等 docker 镜像, 但是 k8s.gcr.io 访问不通。 
所以,我们要从拉取 别人的镜像, 然后改名, 再执行 kube init  .  注意,一定要版本一致,今天是1.15, 明天可能是16 ,

列出需要哪些镜像: command not found
hylas@kube-master:~$ kubeadm config images list --kubernetes-version v1.15.0
k8s.gcr.io/kube-apiserver:v1.15.0
k8s.gcr.io/kube-controller-manager:v1.15.0
k8s.gcr.io/kube-scheduler:v1.15.0
k8s.gcr.io/kube-proxy:v1.15.0
k8s.gcr.io/pause:3.1
k8s.gcr.io/etcd:3.3.10
k8s.gcr.io/coredns:1.3.1
拉取镜像
docker pull mirrorgooglecontainers/kube-apiserver:v1.15.0
docker pull mirrorgooglecontainers/kube-controller-manager:v1.15.0
docker pull mirrorgooglecontainers/kube-scheduler:v1.15.0
docker pull mirrorgooglecontainers/kube-proxy:v1.15.0
docker pull mirrorgooglecontainers/pause:3.1
docker pull mirrorgooglecontainers/etcd:3.3.10
docker pull coredns/coredns:1.3.1
改名
docker tag mirrorgooglecontainers/kube-apiserver:v1.15.0 k8s.gcr.io/kube-apiserver:v1.15.0 docker tag mirrorgooglecontainers/kube-controller-manager:v1.15.0 k8s.gcr.io/kube-controller-manager:v1.15.0 docker tag mirrorgooglecontainers/kube-scheduler:v1.15.0 k8s.gcr.io/kube-scheduler:v1.15.0 docker tag mirrorgooglecontainers/kube-proxy:v1.15.0 k8s.gcr.io/kube-proxy:v1.15.0 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

拉取完成后,执行  kubeadm init 。。。。。。。。。。。。。。。。。

成功标志, 出现:

kubeadm join 10.10.10.10:6443 --token kekvgu.nw1n76h84f4camj6 \

--discovery-token-ca-cert-hash sha256:4ee74205227c78ca62f2d641635afa4d50e6634acfaa8291f28582c7e3b0e30e

如果没有出现,就说明没成功,根据错误反复弄。  使用  kubeadm reset  清除 kubeadm init 生成的垃圾, 有些文件可以用 rm -rf  删除。     
需要记录这行内容:    kubeadmin join  ...... 
添加工作节点用到

执行:

  mkdir -p $HOME/.kube
  sudo cp -i /etc/kubernetes/admin.conf $HOME/.kube/config
  sudo chown $(id -u):$(id -g) $HOME/.kube/config

执行后 kubectl 环境有了,可以执行 kubectl nodes 看看了

4. 主节点生效

现在主节点还是没用,需要搭建一个网络给集群用。

kubectl apply -f https://raw.githubusercontent.com/coreos/flannel/master/Documentation/kube-flannel.yml

执行上面的命令搭建  flannel , k8s有很多网络选择。 有兴趣的自己研究。
网络搭建完成后,执行刚才保存下来的   

kubeadm join ....................

 

执行完成后kubectl get nodes 可查看到
hylas@kube-master:~$ kubectl get nodes
NAME          STATUS   ROLES    AGE   VERSION
kube-master   Ready    master   8h    v1.15.1
node1         Ready    <none>   5h    v1.15.1

kube-master ready ,  node1 是看不到的

5. 添加 node1 工作节点,
在  192.168.0.201 机器上 安装   kubelet kubeadm kubectl   执行  kubeadm  join .....
不需要执行  init  和网络
完成后 执行 kubectl get nodes 就能看到 上面这个图了。 恭喜,你的k8s 集群就已经完成了,以后可以增加节点,减少节点。

6. 创建一个  helloword 应用,看看效果

kubectl create deployment nginx --image=nginx
kubectl expose deployment nginx --port=80 --type=NodePort


用kubectl 部署, 用 kubectl get nodes,        get pods   ,  get cs  查看集群服务状态

打开浏览器: 192.168.0.200:80  看你的hello word  , 大功告成

文章完结 。

 
 

 

猜你喜欢

转载自www.cnblogs.com/xiaoxuebiye/p/11256292.html
今日推荐