k8s安装及部署dapr+.net容器

本文详细介绍了如何在CentOS7环境下安装k8s,包括关闭防火墙、安装docker、kubeadm等步骤,并且重点讲述了如何部署dapr和启用.net服务,以及配置ingress路由,利用traefik进行流量管理。
摘要由CSDN通过智能技术生成

K8s安装

一、安装要求

  • 三台服务器,操作系统为CentOS7.X-86_x64
  • 硬件配置:2GB或更多RAM,2个CPU或更多CPU,硬盘30GB或更多
  • 集群中所有机器之间网络互通
  • 可以访问外网,需要拉取镜像(或者提前准备好镜像)

二、准备环境

三台主机
IP:  170.11.0.5     主机名:k8s-master  
IP:  170.11.0.6     主机名:k8s-2       
IP:  170.11.0.7     主机名:k8s-3       


#修改主机名(分别在三台主机执行)
hostnamectl  set-hostname  k8s-master
hostnamectl  set-hostname  k8s-2
hostnamectl  set-hostname  k8s-3

# 查看主机名
hostname

三、安装步骤

1、所以节点关闭防火墙

systemctl stop firewalld
systemctl disable firewalld

2、所有节点关闭selinux

sed -i "s/SELINUX=enforcing/SELINUX=disabled/g" /etc/selinux/config
setenforce 0

3、所有节点关闭swap

swapoff -a  # 临时关闭

cat /etc/fstab 注释到swap那一行 # 永久关闭

sed -i 's/.*swap.*/#&/g' /etc/fstab

4、所有节点添加主机名与IP对应关系(所有机器执行)

 vim /etc/hosts
 170.11.0.5  k8s-master
 170.11.0.6  k8s-2
 170.11.0.7  k8s-3
4.1、同步时间(可选):
yum install ntpdate -y
ntpdate  ntp.api.bz

5、将桥接的IPv4流量传递到iptables的链(所有机器执行)

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

6、所有节点安装docker

yum -y install wget
wget https://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo -O /etc/yum.repos.d/docker-ce.repo
yum -y install docker-ce
# 启动docker,并设置docker开机自启
systemctl start docker
systemctl enable docker
# 配置加速,并设置驱动
cat > /etc/docker/daemon.json <<EOF
{
  "registry-mirrors": ["https://6ze43vnb.mirror.aliyuncs.com"],
  "exec-opts": ["native.cgroupdriver=systemd"],
  "log-driver": "json-file",
  "log-opts": {
    "max-size": "100m"
  },
  "storage-driver": "overlay2"
}
EOF
# 加载daemon并重启docker
systemctl daemon-reload
systemctl restart docker

7、所有节点添加阿里云YUM源

cat > /etc/yum.repos.d/kubernetes.repo << EOF
[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

8、所有节点安装kubeadm,kubelet和kubectl

  • 这里指定了版本号,若需要其他版本的可自行更改
yum install -y kubelet-1.22.0 kubeadm-1.22.0 kubectl-1.22.0
systemctl enable kubelet

可提前下载k8s所需要的容器(可选-master节点)

# 查看所需要的容器
kubeadm config images list

# 国内环境:使用阿里云镜像仓库下载(国内环境该命令可不执行,下步骤kubeadm init已经默认为国内环境):

#拉取默认的配置为当前目录文件下
kubeadm config print init-defaults > init-config.yaml

#需要更改的地方
找到国外镜像:  第30行    imageRepository: k8s.gcr.io
替换为国内的镜像:   imageRepository: registry.aliyuncs.com/google_containers


#kubernetes镜像拉取:
kubeadm config images pull --config=init-config.yaml

#查看镜像
[root@k8s-master ~]# docker images

------------------------

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-7ILxzUZS-1657072361774)(E:\Install List\Typora\images\image-20220629100208042.png)]

9、初始化master节点

  • 只在master节点执行
  • 由于默认拉取镜像地址k8s.gcr.io国内无法访问,这里指定阿里云镜像仓库地址
  • 执行成功以后最后结果会输出

#注:修改自己的address地址
kubeadm init \
  --apiserver-advertise-address=170.11.0.5 \
  --image-repository registry.aliyuncs.com/google_containers \
  --kubernetes-version v1.22.0 \
  --service-cidr=10.1.0.0/16 \
  --pod-network-cidr=10.244.0.0/16
  



# 执行成功会输出下面的数据,将下面的数据拷贝到从节点执行(每次都不一样根据自己实际生成的为准,这个是node节点加入集群使用)
例:kubeadm join 170.11.0.5:6443 --token ohtehi.4vs3azu3u54vnk6o \
	--discovery-token-ca-cert-hash sha256:593294105ecdfca655502b6d57ea7ac2e483a1e254cb9e299ded987f461ee3c9


# 在master节点执行
mkdir -p $HOME/.kube
sudo cp -i /etc/kubernetes/admin.conf $HOME/.kube/config
sudo chown $(id -u):$(id -g) $HOME/.kube/config

# 查看各节点是否连接上主节点
kubectl get nodes

10、安装Pod网络插件(CNI)(master)

kubectl apply -f https://raw.githubusercontent.com/coreos/flannel/master/Documentation/kube-flannel.yml
# 或 
wget apply -f https://raw.githubusercontent.com/coreos/flannel/master/Documentation/kube-flannel.yml
kubectl apply -f kube-flannel.yaml

# 查看pods节点信息(所有节点的状态为:Running,说明正常)
kubectl get pods -n kube-system




11.补全功能(master)

安装补全命令的包
yum -y install bash-completion  
kubectl completion bash
source /usr/share/bash-completion/bash_completion
kubectl completion bash >/etc/profile.d/kubectl.sh
source /etc/profile.d/kubectl.sh

cat  >>  /root/.bashrc <<EOF
source /etc/profile.d/kubectl.sh
EOF

12.测地卸载k8s环境(不要随意操作)、

 kubeadm reset -f
rm -rvf $HOME/.kube
 rm -rvf ~/.kube/
 rm -rvf /etc/kubernetes/
 rm -rvf /etc/systemd/system/kubelet.service.d
 rm -rvf /etc/systemd/system/kubelet.service
 rm -rvf /usr/bin/kube*
 rm -rvf /etc/cni
 rm -rvf /opt/cni
 rm -rvf /var/lib/etcd
 rm -rvf /var/etcd

1、杀死运行的容器:
docker kill $(docker ps -a -q)
2、删除所有容器:
docker rm $(docker ps -a -q)
3.强制删除所有镜像:
docker rmi -f $(docker images -q)

卸载k8s
yum remove -y kubelet.x86_64  kubeadm.x86_64   kubectl.x86_64

卸载docker

yum remove -y docker-ce.x86_64

四、配置本地镜像仓库(后期使用Harbor仓库)

#1.下载registry镜像
docker pull registry


#2、在daemon.json文件中添加私有镜像仓库地址(所有节点)
vim /etc/docker/daemon.json

添加以下内容,用于让Docker信任私有仓库地址,保存退出。
{
......
"insecure-registries": ["170.11.0.5:5000"],
"registry-mirrors": ["https://07s6n5p5.mirror.aliyuncs.com"]
}

#重新加载某个服务的置文件
systemctl daemon-reload

#重新启动docker
systemctl restart docker


#3、运行registry容器
docker run -itd -v /data/registry:/var/lib/registry -p 5000:5000 --restart=always --name registry registry:latest

-itd: 在容器中打开一-个伪终端进行交互操作,并在后台运行
-v:把宿主机的/data/registry目录绑定到容器/var/lib/ registry目录(这个目录是registry容器中存放镜像文件的目录),来实现数据的
持久化;
-p:映射端口;访问宿主机的5000端口就访问到registry容器的服务了
--restart=always:这是重启的策略,在容器退出时总是重启容器
--name registry: 创建容器命名为registry
registry:latest:这个是刚才pull下来的镜像


#4、为镜像打标签命令
docker tag 镜像名:版本号 170.11.0.5:5000/镜像名:版本号


#5、上传到私有仓库
docker push 170.11.0.5:5000/镜像名:版本号



评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值