k8s部署

主机名 节点ip 角色 部署
master 192.168.176.189 master
node06 192.168.176.191 node
node07 192.168.176.192 node

一、设置hosts解析

操作节点:所有节点,以node6 为例

修改hostsname,以及hosts文件

1、# master
[root@master sysctl.d]# hostnamectl set-hostname master
2、# node节点同上
3、[root@node06 ~]# vim /etc/hosts

k8s部署

二、系统设置

操作节点:所有节点,以node6 为例

1、设置iptables

[root@node06 ~]# iptables -vnL
[root@node06 ~]# iptables -F
[root@node06 ~]# iptables -P FORWARD ACCEPT

2、关闭swap

[root@node06 ~]# swapoff  -a
#防止开机自启
[root@master k8s]# sed -i '/ swap / s/^\(.*\)$/#\1/g' /etc/fstab

k8s部署

3、关闭selinux跟防火墙

[root@node07 ~]# getenforce 
[root@node07 ~]# vim /etc/selinux/config 
[root@node07 ~]# systemctl stop firewalld
[root@node07 ~]# systemctl disable firewalld

k8s部署

 4、修改内核参数

[root@node06 ~]# cat <<EOF >  /etc/sysctl.d/k8s.conf
> net.bridge.bridge-nf-call-ip6tables = 1   #开启桥设备内核监控(ipv6)
> net.bridge.bridge-nf-call-iptables = 1   # 开启桥设备内核监控(ipv4)
> net.ipv4.ip_forward=1                      # 开启路由转发
> EOF
[root@node06 ~]# modprobe br_netfilter
[root@node06 ~]# sysctl -p /etc/sysctl.d/k8s.conf
[root@node06 ~]# sysctl --system

k8s部署

 5、配置yum源

# 该步骤可直接上阿里云镜像官网获取

curl -o /etc/yum.repos.d/docker-ce.repo http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
cat <<EOF > /etc/yum.repos.d/kubernetes.repo
[kubernetes]
name=Kubernetes
baseurl=http://mirrors.aliyun.com/kubernetes/yum/repos/kubernetes-el7-x86_64
enabled=1
gpgcheck=0
repo_gpgcheck=0
gpgkey=http://mirrors.aliyun.com/kubernetes/yum/doc/yum-key.gpg
        http://mirrors.aliyun.com/kubernetes/yum/doc/rpm-package-key.gpg
EOF
yum clean all && yum makecache

三、安装docker

操作节点:所有节点

[root@node07 ~]# yum install -y docker-ce

配置docker镜像加速

[root@node06 sysctl.d]# mkdir -p /etc/docker
[root@node06 sysctl.d]# vim /etc/docker/daemon.json
{
  "exec-opts": ["native.cgroupdriver=systemd"],
  "registry-mirrors" : ["https://8xpk5wnt.mirror.aliyuncs.com"]
}

[root@master sysctl.d]# systemctl enable docker && systemctl start docker

 四、部署k8s

1、安装kubeadm、kubelet、kubectl

操作节点:所有

[root@master sysctl.d]# yum install -y  kubelet kubeadm kubectl
[root@master sysctl.d]# systemctl enable kubelet
[root@master ~]# yum install -y ipvsadm ipset

2、初始化配置文件

操作节点:master

[root@master ~]# kubeadm config print init-defaults > kubeadm.yaml
[root@master ~]# ls
anaconda-ks.cfg  initial-setup-ks.cfg  kubeadm.yaml
[root@master ~]# cat kubeadm.yaml 

k8s部署

apiVersion: kubeadm.k8s.io/v1beta3
bootstrapTokens:
- groups:
  - system:bootstrappers:kubeadm:default-node-token
  token: abcdef.0123456789abcdef
  ttl: 24h0m0s
  usages:
  - signing
  - authentication
kind: InitConfiguration
localAPIEndpoint:
  advertiseAddress: 192.168.176.189   # apiserver 的IP地址
  bindPort: 6443
nodeRegistration:
  criSocket: /var/run/dockershim.sock
  imagePullPolicy: IfNotPresent
  name: master
  taints: null
---
apiServer:
  timeoutForControlPlane: 4m0s
apiVersion: kubeadm.k8s.io/v1beta3
certificatesDir: /etc/kubernetes/pki
clusterName: kubernetes
controllerManager: {}
dns: {}
etcd:
  local:
    dataDir: /var/lib/etcd
imageRepository: registry.aliyuncs.com/google_containers  # 镜像仓库地址
kind: ClusterConfiguration
kubernetesVersion: 1.22.0
networking:
  dnsDomain: cluster.local
  podSubnet: 10.244.0.0/16   # 容器地址cidr,新添加
  serviceSubnet: 10.96.0.0/12    # 服务地址cidr
scheduler: {}
# 以下4行新增
--- 
apiVersion: kubeproxy.config.k8s.io/v1alpha1  
kind: KubeProxyConfiguration
mode: ipvs

3、镜像提前获取

操作节点:master

# 查看需要的镜像列表
[root@master k8s]# kubeadm config images list --config kubeadm.yaml
registry.aliyuncs.com/google_containers/kube-apiserver:v1.22.0
registry.aliyuncs.com/google_containers/kube-controller-manager:v1.22.0
registry.aliyuncs.com/google_containers/kube-scheduler:v1.22.0
registry.aliyuncs.com/google_containers/kube-proxy:v1.22.0
registry.aliyuncs.com/google_containers/pause:3.5
registry.aliyuncs.com/google_containers/etcd:3.5.0-0
registry.aliyuncs.com/google_containers/coredns:v1.8.4
#获取
[root@master k8s]# kubeadm config images pull --config kubeadm.yaml

 4、初始化master节点

操作节点:master

[root@master k8s]#  kubeadm init --config=kubeadm.yaml | tee master-init.log

k8s部署

5、 根据提示创建文件

操作节点:master

[root@master ~]# mkdir -p /root/.kube
[root@master ~]# cp -i /etc/kubernetes/admin.conf /root/.kube/config

而后,查看

[root@master ~]# kubectl  get  componentstatuses
[root@master k8s]# kubectl version

k8s部署

 若是提示改错误,则修改配置文件,将端口0 注释

Warning: v1 ComponentStatus is deprecated in v1.19+
NAME                 STATUS      MESSAGE                                                                                       ERROR
scheduler            Unhealthy   Get "http://127.0.0.1:10251/healthz": dial tcp 127.0.0.1:10251: connect: connection refused   
[root@master ~]# cd /etc/kubernetes/manifests/
[root@master ~]# vim kube-controller-manager.yaml 
[root@master ~]# vim kube-scheduler.yaml

k8s部署

k8s部署

  五、node加入集群

操作节点:node6 node7

[root@node06 ~]# kubeadm join 192.168.176.189:6443 --token abcdef.0123456789abcdef \
> --discovery-token-ca-cert-hash sha256:1e6fb98ede07e86315fdc0c3c9c8c38b30f468a45799149c49ee9082724fc49b

随后在master上查看

[root@master docker]# kubectl get nodes
NAME     STATUS     ROLES                  AGE   VERSION
master   NotReady   control-plane,master   69m   v1.22.3
node06   NotReady   <none>                 46s   v1.22.3
node07   NotReady   <none>                 31s   v1.22.3

 六、添加flannel

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

[root@master ~]# kubectl apply -f kube-flannel.yml
[root@master ~]# kubectl get nodes
NAME     STATUS   ROLES                  AGE     VERSION
master   Ready    control-plane,master   3h24m   v1.22.3
node06   Ready    <none>                 136m    v1.22.3
node07   Ready    <none>                 135m    v1.22.3
上一篇:使用kubeadm添加新节点到集群及相关问题解决


下一篇:kubeadm创建k8s集群,令牌失效后新增节点的解决办法