ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

k8s安装

2022-01-25 11:05:34  阅读:140  来源: 互联网

标签:kubectl kubernetes -- etc yum docker k8s 安装


centos7搭建k8s集群(v1.19.x)

一、部署环境


共有3台服务器 1台master,2台node。

二、安装准备工作

1 关闭防火墙以及

systemctl stop firewalld && systemctl disable firewalld 

2 永久关闭selinux

setenforce 0
sed -i 's/SELINUX=enforcing/SELINUX=disabled/' /etc/selinux/config;cat /etc/selinux/config 

3修改主机名, 三个机器对应分别执行

hostnamectl set-hostname master
hostnamectl set-hostname node01
hostnamectl set-hostname node02
退出重新登陆即可显示新设置的主机名master

4修改hosts文件

cat >> /etc/hosts << EOF
192.168.214.128    master
192.168.214.129    node01
192.168.214.130    node02
EOF

5禁用swap

swapoff -a
sed -i.bak '/swap/s/^/#/' /etc/fstab

6内核参数修改

#flannel网络需要设置内核参数bridge-nf-call-iptables=1
cat <<EOF >  /etc/sysctl.d/k8s.conf
net.bridge.bridge-nf-call-ip6tables = 1
net.bridge.bridge-nf-call-iptables = 1
EOF

立即生效:
sysctl -p /etc/sysctl.d/k8s.conf

7新增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

##########################
    [] 中括号中的是repository id,唯一,用来标识不同仓库
    name 仓库名称,自定义
    baseurl 仓库地址
    enable 是否启用该仓库,默认为1表示启用
    gpgcheck 是否验证从该仓库获得程序包的合法性,1为验证
    repo_gpgcheck 是否验证元数据的合法性 元数据就是程序包列表,1为验证
    gpgkey=URL 数字签名的公钥文件所在位置,如果gpgcheck值为1,此处就需要指定gpgkey文件的位置,如果gpgcheck值为0就不需要此项了

8更新缓存

yum clean all
yum -y makecache

9. 安装命令补全

9.1 安装bash-completion
yum -y install bash-completion

9.2 加载bash-completion
source /etc/profile.d/bash_completion.sh

三、Docker安装(已安装可跳过)

master node节点都执行本部分操作。

1. 安装依赖包

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

2. 设置Docker源

#推荐使用国内的
yum-config-manager --add-repo https://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo

3. 安装Docker CE

3.1 docker可安装版本查看
yum list docker-ce --showduplicates | sort -r

3.2 安装docker
yum install docker-ce-19.03.13 docker-ce-cli-19.03.13 containerd.io -y

4. 启动Docker并开机自启

systemctl start docker
systemctl enable docker

5. 配置镜像加速

由于Docker Hub的服务器在国外,下载镜像会比较慢,可以配置镜像加速器

5.1 配置daemon.json文件:
mkdir -p /etc/docker
tee /etc/docker/daemon.json <<-'EOF'
{
"registry-mirrors": ["https://23h04een.mirror.aliyuncs.com"]
}
EOF

5.2 重启服务
systemctl daemon-reload
systemctl restart docker

6. 修改Cgroup Driver

6.1 修改daemon.json 新增‘”exec-opts”: [“native.cgroupdriver=systemd”’
修改cgroupdriver是为了消除告警:
[WARNING IsDockerSystemdCheck]: detected “cgroupfs” as the Docker cgroup driver. The recommended driver is “systemd”. Please follow the guide at https://kubernetes.io/docs/setup/cri/

vim /etc/docker/daemon.json 
{
  "registry-mirrors": ["https://23h04een.mirror.aliyuncs.com"],
  "exec-opts": ["native.cgroupdriver=systemd"]
}

6.2 重启docker
systemctl daemon-reload
systemctl restart docker

四、k8s安装

master node节点都执行本部分操作。

1. 可安装版本查看

yum list kubelet --showduplicates | sort -r

2. 安装kubelet、kubeadm和kubectl

2.1 安装
yum install -y kubelet-1.19.2 kubeadm-1.19.2 kubectl-1.19.2
  #kubelet 运行在集群所有节点上,用于启动Pod和容器等对象的工具
  #kubeadm 用于初始化集群,启动集群的命令工具
  #kubectl 用于和集群通信的命令行,通过kubectl可以部署和管理应用,查看各种资源,创建、删除和更新各种组件

2.2 启动kubelet并设置开机启动
systemctl enable kubelet && systemctl start kubelet

2.3 kubectl命令补全
echo "source <(kubectl completion bash)" >> ~/.bash_profile
source .bash_profile 

3. 下载镜像

3.1 镜像下载的脚本
Kubernetes几乎所有的安装组件和Docker镜像都放在goolge自己的网站上,直接访问可能会有网络问题
解决办法:
    是从阿里云镜像仓库下载镜像,拉取到本地以后改回默认的镜像tag。使用如下脚本实现。

vim image.sh 
#!/bin/bash
url=registry.aliyuncs.com/google_containers
version=v1.19.2
images=(`kubeadm config images list --kubernetes-version=$version|awk -F '/' '{print $2}'`)
for imagename in ${images[@]} ; do
docker pull $url/$imagename
docker tag $url/$imagename k8s.gcr.io/$imagename
docker rmi -f $url/$imagename
done

#url为阿里云镜像仓库地址,version为安装的kubernetes版本。

3.2 运行脚本image.sh下载镜像,可手动修改“version=v1.19.2”以下载指定版本的镜像
sh image.sh
# 注意 :每个节点都要执行,否则部分k8s必要的容器创建不成功

五、初始化Master

master节点执行本部分操作。

1. master初始化

kubeadm init --apiserver-advertise-address=192.168.214.128 --kubernetes-version v1.19.2 --service-cidr=10.96.0.0/12 --pod-netnode-cidr=10.244.0.0/16

#如果初始化失败,可执行kubeadm reset后重新初始化
kubeadm reset
rm -rf $HOME/.kube/config

2. 加载环境变量

echo "export KUBECONFIG=/etc/kubernetes/admin.conf" >> ~/.bash_profile
source .bash_profile

3. 安装flannel网络

3.1 配置host
因为国内网络无法解析raw.githubusercontent.com,因此先访问https://tool.chinaz.com/dns/?type=1&host=raw.githubusercontent.com&ip=
查看raw.githubusercontent.com的真实IP,并对应修改host

cat >> /etc/hosts << EOF
151.101.108.133    raw.githubusercontent.com
EOF

3.2 在master上创建建flannel网络
kubectl apply -f https://raw.githubusercontent.com/coreos/flannel/2140ac876ef134e0ed5af15c65e414cf26827915/Documentation/kube-flannel.yml

3.3 查看flannel状态
flannel创建容易出错导致容器无法运行,下图为成功状态


若状态不为running,可使用 kubectl describe pod xx -n kube-system 查看原因

六、node节点加入集群

1. node加入集群

kubeadm join 192.168.214.128:6443 --token 4xpmwx.nw6psmvn9qi4d3cj \
	--discovery-token-ca-cert-hash sha256:c7cbe95a66092c58...

2. 集群节点查看

kubectl get nodes

七、Dashboard搭建

Dashboard提供了可以实现集群管理、工作负载、服务发现和负载均衡、存储、字典配置、日志视图等功能。

1. 下载yaml

wget https://raw.githubusercontent.com/kubernetes/dashboard/v2.0.0-beta8/aio/deploy/recommended.yaml

2. 配置yaml

2.1 修改镜像地址
sed -i 's/kubernetesui/registry.cn-hangzhou.aliyuncs.com\/loong576/g' recommended.yaml
#由于默认的镜像仓库网络访问不通,故改成阿里镜像

    2.2 外网访问
sed -i '/targetPort: 8443/a\ \ \ \ \ \ nodePort: 30001\n\ \ type: NodePort' recommended.yaml
#配置NodePort,外部通过https://NodeIp:NodePort 访问Dashboard,此时端口为30001

3. 部署

3.1 部署Dashboard
kubectl apply -f recommended.yaml

3.2 状态查看
kubectl get all -n kubernetes-dashboard 

3.3 令牌生成
创建service account并绑定默认cluster-admin管理员集群角色:

  # 创建用户
kubectl create serviceaccount dashboard-admin -n kube-system

  # 用户授权
kubectl create clusterrolebinding dashboard-admin --clusterrole=cluster-admin --serviceaccount=kube-system:dashboard-admin

3.4 令牌查看
kubectl describe secrets -n kube-system $(kubectl -n kube-system get secret | awk '/dashboard-admin/{print $1}')

4.访问

外部通过https://NodeIp:NodePort 访问Dashboard,此时端口为30001,默认运行在master节点上
选择token方式登录,输入“3.4 令牌查看” 获得的token,即可进入页面

注意:
  默认情况下只能使用https访问,但chrome可能会提示不安全,此时在浏览器当前页面下键盘敲击thisisunsafe可继续访问,
  火狐浏览器可正常进入,不会提示不安全。
  token失效较快,可设置参数延长失效时间- --token-ttl=43200 

标签:kubectl,kubernetes,--,etc,yum,docker,k8s,安装
来源: https://www.cnblogs.com/tangshow/p/15840214.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有