k8s安装 1.10.1

k8s版本

主机名

ip

配置

1.10

master

192.168.61.250

4C8G


node1

192.168.61.251

4C8G


node2

192.168.61.252

4C8G

kubectl 命令补全

root@master1:/# vim /etc/profile  #添加下面这句,再source

source <(kubectl completion bash)

root@master1:/# source /etc/profile

 

修改主机名,时区

timedatectl set-timezone Asia/Shanghai

 

hostnamectl  set-hostname master

hostnamectl  set-hostname node1

hostnamectl  set-hostname node2

修改hosts文件

cat <<eof >> /etc/hosts

192.168.61.250 master

192.168.61.251 node1

192.168.61.252 node2

eof

 

 

关闭所有节点的seliux以及firewalld

 

sed -i 's/SELINUX=enforcing/SELINUX=disabled/g' /etc/selinux/config

setenforce 0

systemctl disable firewalld

systemctl stop firewalld

1. 安装docker

 

上传离线文件

 image.png

 

tar -xvf docker-packages.tar

cd docker-packages

for i in `ls`; do rpm -Uvh $i; done

yum -y install docker

docker version  

 

 

systemctl start docker && systemctl enable docker

docker info | grep Driver

systemctl cat docker

修改docker驱动为cgroupfs驱动(此处版本为1.13修改方式,高版本为其他文件)

sed -i '/native.cgroupdriver/s/systemd/cgroupfs/g' /usr/lib/systemd/system/docker.service

 

systemctl daemon-reload && systemctl restart docker 

systemctl status  docker

 

2. 安装k8s

安装kubeadm,kubectl,kubelet

使用文件kube-packages-1.10.1.tar,每个节点都要安装
kubeadm是集群部署工具
kubectl是集群管理工具,通过command来管理集群
kubelet的k8s集群每个节点的docker管理服务

 

tar -xvf kube-packages-1.10.1.tar

cd kube-packages-1.10.1

rpm -Uvh *

在所有kubernetes节点上设置kubelet使用cgroupfs,与dockerd保持一致,否则kubelet会启动报错

sed -i "s/cgroup-driver=systemd/cgroup-driver=cgroupfs/g" /etc/systemd/system/kubelet.service.d/10-kubeadm.conf

systemctl daemon-reload && systemctl restart kubelet

 

 

修改

vim /etc/systemd/system/kubelet.service.d/10-kubeadm.conf

Environment="DAEMON_ARGS=--runtime-cgroups=/systemd/system.slice --kubelet-cgroups=/systemd/system.slice"

ExecStart=/usr/bin/kubelet $KUBELET_KUBECONFIG_ARGS $KUBELET_SYSTEM_PODS_ARGS $KUBELET_NETWORK_ARGS $KUBELET_DNS_ARGS $KUBELET_AUTHZ_ARGS $KUBELET_CADVISOR_ARGS $KUBELET_CGROUP_ARGS $KUBELET_CERTIFICATE_ARGS $KUBELET_EXTRA_ARGS $DAEMON_ARGS

 

关闭swap,及修改iptables,不然后面kubeadm会报错

swapoff -a

sed -i '/swap/s/^/#/g' /etc/fstab

cat <<EOF >  /etc/sysctl.d/k8s.conf

net.bridge.bridge-nf-call-ip6tables = 1

net.bridge.bridge-nf-call-iptables = 1

EOF

 

sysctl --system

3. 导入镜像(导入到docker)

cd ..

docker load -i k8s-images-1.10.tar.gz

docker images

 

一共11个镜像,分别是 k8s.gcr.io/etcd-amd64:3.1.12 k8s.gcr.io/kube-apiserver-amd64:v1.10.1 k8s.gcr.io/kube-controller-manager-amd64:v1.10.1 k8s.gcr.io/kube-proxy-amd64:v1.10.1 k8s.gcr.io/kube-scheduler-amd64:v1.10.1 k8s.gcr.io/pause-amd64:3.1 k8s.gcr.io/k8s-dns-kube-dns-amd64:1.14.8 k8s.gcr.io/k8s-dns-dnsmasq-nanny-amd64:1.14.8 k8s.gcr.io/k8s-dns-sidecar-amd64:1.14.8 k8s.gcr.io/kubernetes-dashboard-amd64:v1.8.3 quay.io/coreos/flannel:v0.9.1-amd64

 

4. kubeadm init 部署master节点

kubeadm init --kubernetes-version=v1.10.1 --pod-network-cidr=10.244.0.0/16

 image.png

将结果记录下来

 

node加入master用到

kubeadm join 192.168.61.250:6443 --token jo5f9v.8qp1641qgxl15ba7 --discovery-token-ca-cert-hash sha256:2aa75a48cf7f9ecb5710df6e6311a17afb2e471194f9344175c6351b60308c59

 

记下join的命令,后续node节点加入的时候要用到
执行提示的命令,保存kubeconfig

  mkdir -p $HOME/.kube

  sudo cp -i /etc/kubernetes/admin.conf $HOME/.kube/config

  sudo chown $(id -u):$(id -g) $HOME/.kube/config

 

此时执行kubectl get node 已经可以看到master节点,notready是因为还未部署网络插件

 image.png

 

查看所有的pod,kubectl get pod --all-namespaces
kubedns也依赖于容器网络,此时pending是正常的

image.png 

配置KUBECONFIG变量

echo "export KUBECONFIG=/etc/kubernetes/admin.conf" >> /etc/profile

source /etc/profile

echo $KUBECONFIG    #应该返回/etc/kubernetes/admin.conf

 

5. 部署flannel网络

k8s支持多种网络方案,flannel,calico,openvswitch
此处选择flannel。 在熟悉了k8s部署后,可以尝试其他网络方案

 

 

kubectl apply -f kube-flannel.yml

网络部署完成后,节点状态变为ready

image.png 

 

6. kubeadm join 加入node节点(节点加入集群)

 

kubeadm token list  #查看token

 

kubeadm join 192.168.61.250:6443 --token jo5f9v.8qp1641qgxl15ba7 --discovery-token-ca-cert-hash sha256:2aa75a48cf7f9ecb5710df6e6311a17afb2e471194f9344175c6351b60308c59

 

 

8. master上查看node

kubectl get node

image.png 

至此,集群已经部署完成。

 

如果token失效

kubeadm token create创建一个,记录下token数据

kubeadm token list

node节点执行如下,把token部分进行替换

kubeadm join --token wct45y.tq23fogetd7rp3ck 192.168.1.181:6443 --discovery-token-unsafe-skip-ca-verification

 


猜你喜欢

转载自blog.51cto.com/13272050/2156031