K8s部署

一、准备环境

  • 操作系统 : Centos7.6
  • mster : 192.168.1.68 k8s-master-01
  • node1 : 192.168.1.62 k8s-node-01

所有节点初始设置(包括 master)

1.关闭 swap
2.关闭防火墙 和 SELINUX
3.设置启动参数
4.做本地解析 hosts

 swapoff -a 
 systemctl stop firewalld
 systemctl disable firewalld
 
 setenforce 0
 sed -i s/SELINUX=enforcing/SELINUX=disabled/g /etc/selinux/config
 

 cat <<EOF >  /etc/sysctl.d/k8s.conf
 net.bridge.bridge-nf-call-ip6tables = 1
 net.bridge.bridge-nf-call-iptables = 1
 EOF

 sysctl --system

 vim /etc/hosts
 192.168.1.68	k8s-master-01
 192.168.1.62	k8s-node-01

二、Install docker-ce

安装最新 docker

依赖包

yum install -y yum-utils device-mapper-persistent-data lvm2

添加国内 阿里源

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

查看所有版本

yum list docker-ce --showduplicates | sort -r

默认安装最新的 也可以自己指定版本安装

yum -y install docker-ce

查看安装后的 docker 版本

[root@k8s-master-01 ~]# docker --version
Docker version 19.03.12, build 48a66213fe
[root@k8s-master-01 ~]#

run 起来

systemctl start docker
systemctl enable docker

三、Install kubeadm, kubelet and kubectl

添加国内源

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

Install

yum -y install kubelet kubeadm kubectl

以上的所有操作在全部机器上都需要执行 包括 master 和 node

接下来在 分开执行 首先是 master 进行初始化操作(master)

kubeadm init --kubernetes-version=v1.19.0. --pod-network-cidr=10.244.0.0/16 --image-repository registry.aliyuncs.com/google_containers

注: 这里的 version 版本要和刚刚安装的 kubelet 版本一致
    这里的 10.244.0.0/16 是新定义的 flannel 网络 (如果配错了后面也可以改的)
    初始化后会有提示设置 kubectl 命令,以及如何加入到这个集群,需要注意的是初始化生成的
    token 24小时后将会失效(在 k8s 1.8 之后),如过期可自己重新创建生成

正常初始化后是这样的,按提示操作即可

... ...
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:

kubeadm join 192.168.1.68:6443 --token cvzs9x.cksbzj0diw6yxyfd \
    --discovery-token-ca-cert-hash sha256:a78229337b83f0bc74113d8e384972e22de3533bc2d94b51b69b1865ffc31d03 

如 token 过期

kubeadm token list
kubeadm token create

生成token可借鉴 https://blog.csdn.net/wo18237095579/article/details/89884369

初始化后,设置完 kubectl ,需要安装下 flannel (仅在master)

wget https://raw.githubusercontent.com/coreos/flannel/master/Documentation/kube-flannel.yml

kubectl apply -f  kube-flannel.yml

master 安装完 flannel 后 我们便可以将 node 加入到这个master集群里了 (node)

将master初始化生成的 命令 在node执行即可:

kubeadm join 192.168.1.68:6443 --token cvzs9x.cksbzj0diw6yxyfd \
    --discovery-token-ca-cert-hash sha256:a78229337b83f0bc74113d8e384972e22de3533bc2d94b51b69b1865ffc31d03 

加入master集群后,我们便可以在master里查看 node 的连接信息了

[root@k8s-master-01 ~]# kubectl get nodes
NAME            STATUS   ROLES    AGE   VERSION
k8s-master-01   Ready    master   18h   v1.19.0
k8s-node-01     Ready    <none>   18h   v1.19.0
[root@k8s-master-01 ~]#    

此时我们在 node 也执行查看命令会如何?

[root@k8s-node-01 ~]# kubectl get node
The connection to the server localhost:8080 was refused - did you specify the right host or port?
[root@k8s-node-01 ~]# 

这是因为kubernetes出于安全考虑默认情况下无法在master节点上部署pod,会有污点

最后整理下可能会遇到的问题

1. 配置kubenetes的flannel网络的时候,出现以下报错

The connection to the server localhost:8080 was refused - did you specify the right host or port?


原因:kubenetes master没有与本机绑定,或者集群初始化的时候没有设置

解决办法:
执行变量
export KUBECONFIG=/etc/kubernetes/admin.conf

注:    /etc/kubernetes/admin.conf 这个文件主要是集群初始化的时候用来传递参数的

2. k8s中如何修改 pod-network-cidr 地址范围

创建集群时用的是 --pod-network-cidr=10.244.0.0/16(之前用Flannel),现在想改为 --pod-network-cidr=192.168.0.0/16(准备用 Calico),如何不重建集群的情况下修改?

1) kubectl -n kube-system edit cm kubeadm-config
2) vim /etc/kubernetes/manifests/kube-controller-manager.yaml

通过 kubectl cluster-info dump | grep -m 1 cluster-cidr 命令可以检查配置是否生效

该方法来自 github 大神
https://github.com/kubernetes/kubeadm/issues/552#issuecomment-353368971
comments powered by Disqus