服务器要求(三台都要操作)

  • 一台master两台node
  • 能连外网
  • 关闭防火墙
  • 关闭selinux
  • 设置主机名,域名解析
  • 关闭swap(记得关完之后重启)
swapoff -a //临时关闭
vim /etc/fstab //把swap分区挂载部分注释掉
  • 将桥接的ipv4流量传递到iptables上,修改linux内核参数,添加网桥过滤和地址转发功能
[root@master ~]# cat /etc/sysctl.d/kubernetes.conf 
net.bridge.bridge-nf-call-ip6tables = 1
net.bridge.bridge-nf-call-iptables =  1
net.ipv4.ip_forward = 1

[root@master ~]# sysctl -p
[root@master ~]# modprobe br_netfilter
[root@master ~]#lsmod |grep br_netfil
  • 时间同步
  • 安装docker-ce(拉取阿里云docker镜像源)
wget  https://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
  • 配置docker默认
[root@master docker]# cat daemon.json 
{
  "registry-mirrors": ["https://n5jclonh.mirror.aliyuncs.com"],
  "insecure-registries": ["10.104.43.33:8858"],   //配置私有仓库 此处ip地址为master节点的ip
  "exec-opts": ["native.cgroupdriver=systemd"]  //docker在默认情况下使用cgroupdiver为cgroupfs,而kubernetes推荐使用systemd来代替cgroupfs,所以需要修改配置文件
}
systemctl daemon-reload
systemctl restart docker
systemctl enable docker
- 安装kubeadm、kubelet、kubectl
  - 配置yum源
    ```
    [root@master yum.repos.d]   # cat k8s.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.pg
     //yum仓库的配置文件一定要顶格写
    ```
  - 安装kubelet kubeadm kubectl
    ```
    yum install -y kubelet-1.23.6 kubeadm-1.23.6 kubectl-1.23.6
    ```
  - 设置kubelet开机启动
    ```
    systemctl enable kubelet
    ``` 
  • 初始化master
[root@master ~]# kubeadm init --apiserver-advertise-address=10.104.43.33(master的ip) --image-repository registry.aliyuncs.com/google_containers(指定镜像仓库) --kubernetes-version v1.23.6 (指定版本)--service-cidr=10.96.0.0/12 (划分服务网段)--pod-network-cidr=10.244.0.0/16(划分pod网段)

img

- 显示successfully 说明格式化成功
- 执行第二个红色方框内的三条命令
- 最后一个方框是node节点加入的密钥
- 如果,初始化的时候清屏不好找,那么可以使用命令查看token,如果没有过期,那么就可以直接使用,如果过期了,那么需要重新获取token'kubeadm token create'
[root@master docker]# kubeadm  token list
TOKEN                     TTL         EXPIRES                USAGES                   DESCRIPTION                                                EXTRA GROUPS
2manw0.vf01yr2xtk0iz80i   23h         2024-05-07T10:35:40Z   authentication,signing   The default bootstrap token generated by 'kubeadm init'.   system:bootstrappers:kubeadm:default-node-token
[root@master docker]#      
  • 加入master节点
kubeadm join 10.104.43.33:6443 --token 2manw0.vf01yr2xtk0iz80i \
	--discovery-token-ca-cert-hash sha256:a88db866fe9a52f54b00855fa50d0424acf031f233c6159c803d799abb4be95f
//
  • master节点查看节点
[root@master docker]# kubectl get nodes
NAME     STATUS     ROLES                  AGE     VERSION
master   NotReady   control-plane,master   37m     v1.23.6
node1    NotReady   <none>                 2m16s   v1.23.6
node2    NotReady   <none>                 12s     v1.23.6
[root@master docker]# kubectl get no
NAME     STATUS     ROLES                  AGE     VERSION
master   NotReady   control-plane,master   41m     v1.23.6
node1    NotReady   <none>                 6m54s   v1.23.6
node2    NotReady   <none>                 4m50s   v1.23.6
[root@master docker]# 
//get nodes == get no
  • 部署CNI网络插件
  • 获取组件状态
[root@master docker]# kubectl  get componentstatus
Warning: v1 ComponentStatus is deprecated in v1.19+
NAME                 STATUS    MESSAGE                         ERROR
scheduler            Healthy   ok                              
controller-manager   Healthy   ok                              
etcd-0               Healthy   {"health":"true","reason":""}   
[root@master docker]# kubectl get cs
Warning: v1 ComponentStatus is deprecated in v1.19+
NAME                 STATUS    MESSAGE                         ERROR
controller-manager   Healthy   ok                              
scheduler            Healthy   ok                              
etcd-0               Healthy   {"health":"true","reason":""}   
[root@master docker]# 
  • 查看指定pod的状态
[root@master docker]# kubectl get pods -n kube-system
NAME                             READY   STATUS    RESTARTS   AGE
coredns-6d8c4cb4d-z8lxv          0/1   //没有下载成功  Pending   0          46m
coredns-6d8c4cb4d-z8wl2          0/1   //没有下载成功  Pending   0          46m
etcd-master                      1/1     Running   0          46m
kube-apiserver-master            1/1     Running   0          46m
kube-controller-manager-master   1/1     Running   0          46m
kube-proxy-4rw59                 1/1     Running   0          9m19s
kube-proxy-5p8ct                 1/1     Running   0          46m
kube-proxy-6hdfp                 1/1     Running   0          11m
kube-scheduler-master            1/1     Running   0          46m

notready的状态,是因为缺少网络插件,所以需要安装网络插件

kubectl apply -f https://github.com/flannel-io/flannel/releases/latest/download/kube-flannel.yml
[root@master k8s]# kubectl get po -n kube-system
NAME                             READY   STATUS    RESTARTS   AGE
coredns-6d8c4cb4d-z8lxv          1/1     Running   0          75m
coredns-6d8c4cb4d-z8wl2          1/1     Running   0          75m
etcd-master                      1/1     Running   0          75m
kube-apiserver-master            1/1     Running   0          75m
kube-controller-manager-master   1/1     Running   0          75m
kube-proxy-4rw59                 1/1     Running   0          38m
kube-proxy-5p8ct                 1/1     Running   0          75m
kube-proxy-6hdfp                 1/1     Running   0          40m
kube-scheduler-master            1/1     Running   0          75m
[root@master k8s]# 

例子

[root@master k8s]#  kubectl create deployment nginx --image=nginx
deployment.apps/nginx created
[root@master k8s]# kubectl get pod
NAME                     READY   STATUS    RESTARTS   AGE
nginx-85b98978db-pmrwh   1/1     Running   0          14s
[root@master k8s]# kubectl get svc
NAME         TYPE        CLUSTER-IP   EXTERNAL-IP   PORT(S)   AGE
kubernetes   ClusterIP   10.96.0.1    <none>        443/TCP   78m
[root@master k8s]# kubectl get pods,svc
NAME                         READY   STATUS    RESTARTS   AGE
pod/nginx-85b98978db-pmrwh   1/1     Running   0          29s

NAME                 TYPE        CLUSTER-IP   EXTERNAL-IP   PORT(S)   AGE
service/kubernetes   ClusterIP   10.96.0.1    <none>        443/TCP   78m
[root@master k8s]# kubectl expose deployment nginx --port=80 --type=NodePort
service/nginx exposed
[root@master k8s]# kubectl get pods,svc
NAME                         READY   STATUS    RESTARTS   AGE
pod/nginx-85b98978db-pmrwh   1/1     Running   0          2m12s

NAME                 TYPE        CLUSTER-IP       EXTERNAL-IP   PORT(S)        AGE
service/kubernetes   ClusterIP   10.96.0.1        <none>        443/TCP        80m
service/nginx        NodePort    10.105.223.172   <none>        80:30663/TCP   6s
[root@master k8s]# curl  http://localhost:30663
<!DOCTYPE html>
<html>
<head>
<title>Welcome to nginx!</title>
<style>
html { color-scheme: light dark; }
body { width: 35em; margin: 0 auto;
font-family: Tahoma, Verdana, Arial, sans-serif; }
</style>
</head>
<body>
<h1>Welcome to nginx!</h1>
<p>If you see this page, the nginx web server is successfully installed and
working. Further configuration is required.</p>

<p>For online documentation and support please refer to
<a href="http://nginx.org/">nginx.org</a>.<br/>
Commercial support is available at
<a href="http://nginx.com/">nginx.com</a>.</p>

<p><em>Thank you for using nginx.</em></p>
</body>
</html>
[root@master k8s]# 
posted on 2024-05-06 18:55  代码你敲我不敲  阅读(7)  评论(0编辑  收藏  举报

返回顶端