k8s集群部署

服务器准备

设置/ect/hosts

准备几台服务,每台服务器/ect/hosts中添加
192.168.1.101 om1
192.168.1.111 server1
192.168.1.112 server2
192.168.1.113 server3

打开内置的桥功能

echo “1” >/proc/sys/net/bridge/bridge-nf-call-iptables

关闭swap

执行swapoff临时关闭swap。
swapoff -a
重启后会失效,若要永久关闭,可以编辑/etc/fstab文件,将其中swap分区一行注释掉
nano /etc/fstab
#/dev/mapper/centos-swap swap

sed -ri ‘s/.*swap.*/#&/’ /etc/fstab

安装 kubelet、kubeadm 和 kubectl

设置阿里云kubernetes镜像

cat <<EOF > /etc/yum.repos.d/kubernetes.repo
[kubernetes]
name=Kubernetes
baseurl=https://mirrors.aliyun.com/kubernetes/yum/repos/kubernetes-el7-x86_64/
enabled=1
gpgcheck=1
repo_gpgcheck=1
gpgkey=https://mirrors.aliyun.com/kubernetes/yum/doc/yum-key.gpg https://mirrors.aliyun.com/kubernetes/yum/doc/rpm-package-key.gpg
EOF

安装和启动kubelet kubeadm kubectl

查看 kunernetes版本
yum list kubeadm –showduplicates
kunernetes的版本为1.15.3
所有节点执行安装和启动命令
yum install -y kubelet kubeadm kubectl
systemctl enable kubelet && systemctl start kubelet

安装docker

设置阿里云docker镜像

yum-config-manager –add-repo http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo

安装和启动docker

查看docker版本
yum list docker-ce –showduplicates
匹配kunernetes的版本为18.09

所有节点执行安装和启动命令
yum install -y docker-ce-18.09.8-3.el7
systemctl enable docker&& systemctl start docker

cp daemon.json /etc/docker
systemctl daemon-reload
systemctl restart docker

初始化k8s集群

使用kubeadm初始化集群

kubeadm init –image-repository registry.aliyuncs.com/google_containers –kubernetes-version v1.15.3 –apiserver-advertise-address 192.168.1.101 –pod-network-cidr=10.244.0.0/16

  • -image-repository string:这个用于指定从什么位置来拉取镜像(1.13版本才有的),默认值是k8s.gcr.io,我们将其指定为国内镜像地址:registry.aliyuncs.com/google_containers
  • –kubernetes-version string:指定kubenets版本号,默认值是stable-1,会导致从https://dl.k8s.io/release/stable-1.txt下载最新的版本号,我们可以将其指定为固定版本(最新版:v1.15.3)来跳过网络请求。
  • –apiserver-advertise-address 指明用 Master 的哪个 interface 与 Cluster 的其他节点通信。如果 Master 有多个 interface,建议明确指定,如果不指定,kubeadm 会自动选择有默认网关的 interface。
  • –pod-network-cidr指定 Pod 网络的范围。Kubernetes 支持多种网络方案,而且不同网络方案对  –pod-network-cidr有自己的要求,这里设置为10.244.0.0/16 是因为我们将使用 flannel 网络方案,必须设置成这个CIDR。

初始化成功后保存token,后续添加节点的时候会用到
kubeadm join 192.168.1.101:6443 –token p4rmti.g6p95977lkfibh6i \
–discovery-token-ca-cert-hash sha256:25350caa6430f4a02b096ba16a4c330b203de5bfff8c39c9fe8829224b6f0c24

初始化复位

初始化失败使用以下命令复位
kubeadm reset
ifconfig cni0 down
ip link delete cni0
ifconfig flannel.1 down
ip link delete flannel.1
rm -rf /var/lib/cni/
rm -rf /var/lib/etcd/*
快捷复位命令:
kubeadm reset&&ifconfig cni0 down&&ip link delete cni0&&ifconfig flannel.1 down&& ip link delete flannel.1&&rm -rf /var/lib/cni/&&rm -rf /var/lib/etcd/*

配置kubectl

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

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

为了使用更便捷,启用 kubectl 命令的自动补全功能。
yum install bash-completion
echo “source /usr/share/bash-completion/bash_completion” >> ~/.bashrc
echo “source <(kubectl completion bash)” >> ~/.bashrc

安装POD网络

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

使用命令查看pod状态
kubectl get pods -n kube-system

初步诊断容器崩溃,我们需要进一步查看日志,使用“kubectl logs”:
kubectl log -f coredns-bccdc95cf-b68xx -n kube-system
这次我们获得了以下具体错误:
github.com/coredns/coredns/plugin/kubernetes/controller.go:322: Failed to list *v1.Namespace: Get https://10.96.0.1:443/api/v1/namespaces?limit=500&resourceVersion=0: dial tcp 10.96.0.1:443: connect: no route to host
解决方案:
这问题很有可能是防火墙(iptables)规则错乱或者缓存导致的,可以依次执行以下命令进行解决:
systemctl stop kubelet
systemctl stop docker
iptables –flush
iptables -tnat –flush
systemctl start kubelet
systemctl start docker

添加node节点

kubeadm join 192.168.1.101:6443 –token p4rmti.g6p95977lkfibh6i \
–discovery-token-ca-cert-hash sha256:25350caa6430f4a02b096ba16a4c330b203de5bfff8c39c9fe8829224b6f0c24

如果需要在work节点上使用kubectl查询资源,需要将master节点的config 拷贝到work节点
mkdir -p $HOME/.kube&&cp -i ~/config $HOME/.kube/config&&chown $(id -u):$(id -g) $HOME/.kube/config

添加dashboard

docker pull registry.cn-hangzhou.aliyuncs.com/rsqlh/kubernetes-dashboard:v1.10.1
docker tag registry.cn-hangzhou.aliyuncs.com/rsqlh/kubernetes-dashboard:v1.10.1 k8s.gcr.io/kubernetes-dashboard-amd64:v1.10.1
docker rmi registry.cn-hangzhou.aliyuncs.com//rsqlh/kubernetes-dashboard:v1.10.1

kubectl apply -f https://raw.githubusercontent.com/kubernetes/dashboard/v1.10.1/src/deploy/recommended/kubernetes-dashboard.yaml

kubectl get pod kube-flannel-ds-amd64-z4z92 -n kube-system -o yaml | kubectl replace –force -f –

发表评论

电子邮件地址不会被公开。 必填项已用*标注