Kubeadm安装简版kubernetes

部署规划图:

安装方式

部署工具

可使用批量部署工具(ansible或者saltstack),手动二进制,apt-get/yum等方式安装,以守护进程的方式启动在宿主机上,类似于是nginx一样使用service脚本启动。

kubeadm

使用k8s官方提供的部署工具 kubeadm 自动安装, 需要在 master 和 node 节点上安装 docker 等组件,然后初始化,把管理端的控制服务和node上的服务都以pod的方式运行。

kubeadm介绍

https://kubernetes.io/zh/docs/reference/setup-tools/kubeadm/kubeadm/
V1.10版本 kubeadm 介绍:
https://github.com/kubernetes/kubeadm/blob/master/docs/design/design_v1.10.md

安装注意事项:

注意:禁用 swap selinux iptables

安装步骤

具体步骤

  1. master 和 node 先 安装 kubelet docker kubeadm
  2. master 节点 运行 kubeadm init 初始化命令
  3. 验证 master
  4. N ode 节点使用 kubeadm 加入 k8s master
  5. 验证 node
  6. 启动 容器 测试访问

配置阿里云仓库地址

配置阿里云镜像的kubernetes源 用于安装kubelet kubeadm kubectl命令。

# apt-get update && apt-get install -y apt-transport-https
# curl https://mirrors.aliyun.com/kubernetes/apt/doc/apt-key.gpg | apt-key add -
# cat <<EOF >/etc/apt/sources.list.d/kubernetes.list
deb https://mirrors.aliyun.com/kubernetes/apt/ kubernetes-xenial main
EOF

# apt-get update

安装指定版本kubeadm:

# apt-get install -y kubelet kubeadm kubectl
# systemctl enable kubelet

#安装指定版本kubeadm
# apt-cache madison kubeadm     #查看版本信息
# apt-get install kubeadm=1.14.1-00 kubelet=1.14.1-00 kubectl=1.14.1-00

验证 kubelet 开机自启动:

目前启动kbelet 以下报错:

Jul  9 20:09:33 docker1 systemd[1]: Stopped kubelet: The Kubernetes Node Agent.
Jul  9 20:09:33 docker1 systemd[1]: Started kubelet: The Kubernetes Node Agent.
Jul  9 20:09:33 docker1 kubelet[111057]: F0709 20:09:33.579479  111057 server.go:193] failed to load Kubelet config file /var/lib/kubelet/config.yaml, error failed to read kubelet config file "/var/lib/kubelet/config.yaml", error: open /var/lib/kubelet/config.yaml: no such file or directory
Jul  9 20:09:33 docker1 systemd[1]: kubelet.service: Main process exited, code=exited, status=255/n/a
Jul  9 20:09:33 docker1 systemd[1]: kubelet.service: Failed with result 'exit-code'.

kubeadm 命令使用:

命令使用:

https://kubernetes.io/zh/docs/reference/setup-tools/kubeadm/kubeadm/

集群初始化:

https://kubernetes.io/zh/docs/reference/setup-tools/kubeadm/kubeadm-init/

验证版本:

kubeadm version

查看安装指定版本k8s,需要的镜像有哪些

[Tue Jul 09 20:14
 root@docker1 ~]#kubeadm config images list --kubernetes-version v1.14.1
k8s.gcr.io/kube-apiserver:v1.14.1
k8s.gcr.io/kube-controller-manager:v1.14.1
k8s.gcr.io/kube-scheduler:v1.14.1
k8s.gcr.io/kube-proxy:v1.14.1
k8s.gcr.io/pause:3.1
k8s.gcr.io/etcd:3.3.10
k8s.gcr.io/coredns:1.3.1

镜像下载:

docker pull registry.cn-hangzhou.aliyuncs.com/google_containers/kube-apiserver:v1.14.1
docker pull registry.cn-hangzhou.aliyuncs.com/google_containers/kube-controller-manager:v1.14.1
docker pull registry.cn-hangzhou.aliyuncs.com/google_containers/kube-scheduler:v1.14.1
docker pull registry.cn-hangzhou.aliyuncs.com/google_containers/kube-proxy:v1.14.1
docker pull registry.cn-hangzhou.aliyuncs.com/google_containers/pause:3.1
docker pull registry.cn-hangzhou.aliyuncs.com/google_containers/etcd:3.3.10
docker pull registry.cn-hangzhou.aliyuncs.com/google_containers/coredns:1.3.1

初始化master:

# kubeadm init --apiserver-advertise-address=172.16.36.20 --apiserver-bind-port=6443 --kubernetes-version=v1.14.1 --pod-network-cidr=10.10.0.0/16 --service-cidr=10.20.0.0/16 --service-dns-domain=martinhe.local --image-repository=registry.cn-hangzhou.aliyuncs.com/google_containers --ignore-preflight-errors=swap

执行相应操作

Your Kubernetes control-plane has initialized successfully!

To start using your cluster, you need to run the following as a regular user:

第一步执行操作如下:
  # mkdir -p $HOME/.kube
  # sudo cp -i /etc/kubernetes/admin.conf $HOME/.kube/config
  # sudo chown $(id -u):$(id -g) $HOME/.kube/config

第二步执行操作如下:
You should now deploy a pod network to the cluster.
Run "kubectl apply -f [podnetwork].yaml" with one of the options listed at:
  https://kubernetes.io/docs/concepts/cluster-administration/addons/

第三步执行操作如下:
Then you can join any number of worker nodes by running the following on each as root:

    #此操作在要添加到cluster中的node上执行,即可添加
# kubeadm join 172.16.36.20:6443 --token iqpg2k.ybw29ow84qj4kqko \
    --discovery-token-ca-cert-hash sha256:73fb841a753a032730c60975cb3462d9f79ed78d853253653229edf7efd8a398

在master上查看当前集群中的node状态信息:未添加node节点前:

[Tue Jul 09 20:41
 root@docker1 ~]#kubectl get node
NAME                   STATUS     ROLES    AGE     VERSION
docker1.martinhe.com   NotReady   master   7m32s   v1.14.1

分别在两台节点上执行如下命令,添加节点到集群

# kubeadm join 172.16.36.20:6443 --token ny6d9d.uoaxc1ma5s8f9llm \
    --discovery-token-ca-cert-hash sha256:83975fc9b5a250e1309b0258dbae3ce5351dd8ef6f943cfd14dadde9a1f855df

在master上查看当前集群中的node状态信息:添加node节点后:

需要部署 flannel-网络驱动-仅在控制节点(master)

https://github.com/coreos/flannel/

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

# docker images     #可看到flannel镜像,从节点会从主节点拉取镜像
quay.io/coreos/flannel          v0.11.0-amd64       ff281650a721        5 months ago        52.6MB

在master上查看当前集群中的node状态信息:添加node节点后,并部署flannel后

kubect命令自动补全功能:

#安装完毕后,重新刷新bash后生效。
yum install bash-completion
source <(kubectl completion bash)