基于CentOS7的K8S集群1.24安装部署

一、基础环境的准备

1、准备机器3台(1Master 2 node)

k8s-01       192.168.0.105   CentOS Linux release 7.5      Master
k8s-02       192.168.0.106   CentOS Linux release 7.5      Node
k8s-03       192.168.0.107   CentOS Linux release 7.5      Node

2、升级三台机器内核到5.4
1)安装ELRepo软件仓库的yum源并安装内核

  安装yum源:rpm -Uvh http://www.elrepo.org/elrepo-release-7.0-3.el7.elrepo.noarch.rpm

  安装内核:yum --enablerepo=elrepo-kernel install -y kernel-lt

2)查看是否安装成功

[root@k8s-01 ~]# awk -F\' '$1=="menuentry " {print i++ " : " $2}' /etc/grub2.cfg
0 : CentOS Linux (5.4.249-1.el7.elrepo.x86_64) 7 (Core)
1 : CentOS Linux (3.10.0-862.el7.x86_64) 7 (Core)
2 : CentOS Linux (0-rescue-a79544e75afc4d968b08fdfcc4623c6d) 7 (Core)

3)设置开机从新内核启动并查看

 [root@k8s-01 ~]# grub2-set-default 0
 [root@k8s-01 ~]# reboot
 [root@k8s-01 ~]# uname -r
  5.4.249-1.el7.elrepo.x86_64

3、配置主机名解析
配置/etc/hosts(分别在3台机器上执行配置)

# cat <<EOF >>/etc/hosts
192.168.0.5 k8s-01
192.168.0.6 k8s-02
192.168.0.7 k8s-03
EOF

4、修改时区同步时间、关闭防火墙、SElinux、swap

1)同步时间、修改时区

yum install chrony -y
systemctl  start chronyd
systemctl  enable chronyd
chronyc -a makestep

ln -sf /usr/share/zoneinfo/Asia/Shanghai /etc/localtime
echo 'Asia/Shanghai' > /etc/timezone

2)关闭防火墙、selinux

systemctl stop firewalld
systemctl disable firewalld
sed -i 's/enforcing/disabled/' /etc/selinux/config 
setenforce 0

3)关闭swap

swapoff -a  
sed -ri 's/.*swap.*/#&/' /etc/fstab

5、系统优化、安装ipvs及其依赖包、安装containerd

1)系统优化

cat > /etc/sysctl.d/k8s_better.conf << EOF
net.bridge.bridge-nf-call-iptables=1
net.bridge.bridge-nf-call-ip6tables=1
net.ipv4.ip_forward=1
vm.swappiness=0
vm.overcommit_memory=1
vm.panic_on_oom=0
fs.inotify.max_user_instances=8192
fs.inotify.max_user_watches=1048576
fs.file-max=52706963
fs.nr_open=52706963
net.ipv6.conf.all.disable_ipv6=1
net.netfilter.nf_conntrack_max=2310720
EOF

sysctl --system #使内核配置生效

modprobe br_netfilter #br_netfilter模块用于将桥接流量转发至iptables链,br_netflter内核参数需要开启转发

2)安装依赖包及基础软件
yum install -y conntrack ntpdate ntp ipvsadm ipset jq iptables curl sysstat libseccomp wget vim net-tools git

3)安装containerd
#1)获取阿里云containerd 的YUM源
wget -O /etc/yum.repos.d/docker-ce.repo https://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo

#2)查看YUM源中Containerd软件
yum list | grep containerd
containerd.io.x86_64                        1.4.12-3.1.el7             docker-ce-   stable

#3)下载安装containerd
yum install -y containerd.io

#4)生成containerd的配置文件config.toml
containerd config default > /etc/containerd/config.toml

#5)编辑配置文件
vim /etc/containerd/config.toml
-----
SystemdCgroup = false 
改为 SystemdCgroup = true

sandbox_image = "k8s.gcr.io/pause:3.6"
改为:
sandbox_image = "registry.aliyuncs.com/google_containers/pause:3.6"
------

#6)启动containerd服务
systemctl enable containerd
systemctl start containerd
----------

二、部署k8s1.24.1

1、添加阿里云YUM软件源

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=0
repo_gpgcheck=0
gpgkey=https://mirrors.aliyun.com/kubernetes/yum/doc/yum-key.gpg     https://mirrors.aliyun.com/kubernetes/yum/doc/rpm-package-key.gpg
EOF

yum clean all 
yum makecache fast

2、安装kubeadm,kubelet和kubectl

#Master节点执行
yum install kubectl-1.24.1 kubelet-1.24.1 kubeadm-1.24.1 -y

#Node节点执行
yum install kubeadm-1.24.1 kubelet-1.24.1 -y

#为了实现docker使用的cgroupdriver与kubelet使用的cgroup的一致性,建议修改如下文件内容。
vim /etc/sysconfig/kubelet
KUBELET_EXTRA_ARGS="--cgroup-driver=systemd"

#设置kubelet为开机自启动即可,由于没有生成配置文件,集群初始化后自动启动
systemctl enable kubelet

3、使用kubeadm init命令初始化并将node节点加入集群

1)在Master节点k8s-01执行集群初始化操作

kubeadm init --apiserver-advertise-address=192.168.0.105 --image-repository registry.aliyuncs.com/google_containers --kubernetes-version v1.24.1 --service-cidr=10.1.0.0/16 --pod-network-cidr=10.244.0.0/16


2)执行结果如下:
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
Alternatively, if you are the root user, you can run:
  export KUBECONFIG=/etc/kubernetes/admin.conf

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:

3)安装上面描述要求执行命令
mkdir -p $HOME/.kube
sudo cp -i /etc/kubernetes/admin.conf $HOME/.kube/config
sudo chown $(id -u):$(id -g) $HOME/.kube/config
export KUBECONFIG=/etc/kubernetes/admin.conf

执行完查看集群
[root@k8s-01 ~]# 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":""} 

4)加入集群用请在node1、2节点上执行如下命令
kubeadm join 192.168.0.105:6443 --token xhj2do.oolgc3f31uyu7ywr \
    --discovery-token-ca-cert-hash sha256:b21ce7f3cd93b6e299606ae599c53f65f6dde2d6d67a2401816d0c48b0808148 

如果忘记了加入集群的token可使用如下命令查询:
kubeadm token create --print-join-command

5)查看集群状态

[root@k8s-01 ~]# kubectl get nodes       
NAME     STATUS     ROLES           AGE     VERSION
k8s-01   NotReady   control-plane   62m     v1.24.1
k8s-02   NotReady   <none>          6m59s   v1.24.1
k8s-03   NotReady   <none>          10m     v1.24.1

如下发现STATUS  NotReady是因为网络插件没安装

[root@k8s-01 ~]# 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":""}   

4、安装网络插件Calico

kubectl create -f https://raw.githubusercontent.com/projectcalico/calico/v3.26.1/manifests/tigera-operator.yaml
curl https://raw.githubusercontent.com/projectcalico/calico/v3.26.1/manifests/custom-resources.yaml -O
kubectl create -f custom-resources.yaml
再次查看集群状态
[root@k8s-01 ~]# kubectl get nodes
NAME     STATUS   ROLES           AGE   VERSION
k8s-01   Ready    control-plane   79m   v1.24.1
k8s-02   Ready    <none>          24m   v1.24.1
k8s-03   Ready    <none>          27m   v1.24.1

--------

5、安装kubernetes Dashboard

WechatIMG153.jpeg
在github中搜索并找到与k8s v1.24.1相兼容的dashboard。本文中我们就用 1.24.0版本dashbard。
1)下载并安装
[root@k8s-01 dashboard]# kubectl apply -f https://raw.githubusercontent.com/kubernetes/dashboard/v2.4.0/aio/deploy/recommended.yaml
-------
2)修改配置NodePort
----
spec:
  type: NodePort
  ports:
    - port: 443
      targetPort: 8443
  selector:
    k8s-app: kubernetes-dashboard
----
  [root@k8s-01 dashboard]# kubectl apply -f dashboard.yaml

  3)创建登陆账号及token
kubectl create serviceaccount dashboard-admin -n kubernetes-dashboard
kubectl create clusterrolebinding dashboard-admin --    clusterrole=cluster-admin --serviceaccount=kubernetes-dashboard:dashboard-admin
[root@k8s-01 dashboard]# kubectl -n kubernetes-dashboard create token dashboard-admin
eyJhbGciOiJSUzI1NiIsImtpZCI6Ik1tb2laY1Z6OE1ta1R5U0hYNFZUNWo4ZEJWbVRicVdXdGVOUFZDN3cxRWMifQ.eyJhdWQiOlsiaHR0cHM6Ly9rdWJlcm5ldGVzLmRlZmF1bHQuc3ZjLmNsdXN0ZXIubG9jYWwiXSwiZXhwIjoxNjg4ODYzMDYzLCJpYXQiOjE2ODg4NTk0NjMsImlzcyI6Imh0dHBzOi8va3ViZXJuZXRlcy5kZWZhdWx0LnN2Yy5jbHVzdGVyLmxvY2FsIiwia3ViZXJuZXRlcy5pbyI6eyJuYW1lc3BhY2UiOiJrdWJlcm5ldGVzLWRhc2hib2FyZCIsInNlcnZpY2VhY2NvdW50Ijp7Im5hbWUiOiJkYXNoYm9hcmQtYWRtaW4iLCJ1aWQiOiJiMzFjMmQzMy04N2RkLTQwYjgtOTU4ZC03ZjI2ZDZjMTQzNmMifX0sIm5iZiI6MTY4ODg1OTQ2Mywic3ViIjoic3lzdGVtOnNlcnZpY2VhY2NvdW50Omt1YmVybmV0ZXMtZGFzaGJvYXJkOmRhc2hib2FyZC1hZG1pbiJ9.T9ndyZekOzUjr_tDBvek-wuDqVOK84YAaqS7iQ1kNoDONvWKvqxXfVxVaGlRrGO-EovdH62mjxnmIDgIAIndKMHSxtXTnKuw0vWdnwFjzzWsqGG03rn9rM82l0Wkt6kQQSyw7jGjeM8cqZwSX-u_jKD0W97ZF7mHqXgmNPiA6XkPYisHGlovXsXbOnYDrUijWXkRxcIKMU--_gY223AQSqKklBH8po6ugUGG0e6ZouTU-tbHEsGnEqFtAO5tlGA50o0SpFc5sLoZuwjl7qu3Lg0LuCf--hkNGeoVwsDWsiIhTL1Q9grPl2OOzBiSziz_XAfDmfxzS6du3YcMJJ_Kig

----
4)登录集群
[root@k8s-01 dashboard]# kubectl  get svc -n kubernetes-dashboard
NAME                        TYPE        CLUSTER-IP    EXTERNAL-IP   PORT(S)         AGE
dashboard-metrics-scraper   ClusterIP   10.1.33.35    <none>        8000/TCP        24m
kubernetes-dashboard        NodePort    10.1.99.226   <none>        443:31030/TCP   24m
[root@k8s-01 dashboard]# hostname -I
192.168.0.105 10.244.61.192 
在浏览器输入:https://192.168.0.105:31030访问并输入token

----
image.png

image.png
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 217,185评论 6 503
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 92,652评论 3 393
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 163,524评论 0 353
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 58,339评论 1 293
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 67,387评论 6 391
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 51,287评论 1 301
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 40,130评论 3 418
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 38,985评论 0 275
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 45,420评论 1 313
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 37,617评论 3 334
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 39,779评论 1 348
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 35,477评论 5 345
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 41,088评论 3 328
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 31,716评论 0 22
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,857评论 1 269
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 47,876评论 2 370
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 44,700评论 2 354

推荐阅读更多精彩内容